实验五

1)

//编译链接,用r查看寄存器内容

//在ds:0100h处查看定义的内容

mov ax,stack
     mov ss,ax
        mov sp,16

       //直到这3个指令执行完毕,此时stack数据段被指定为了栈结构,sp指针指向了栈顶,ss发生改变。

mov ax,data
       mov ds,ax
push ds:[0]
//栈中存储了01 23这2个数据

  push ds:[2]
//04 56被存入

//执行完所有程序后再用r查看寄存器的值

//书上习题


2)(具体做法和1)相同,就不再详细分析)



3)


4)

//如果不指名程序的入口,并且使用end替换end start,只有(3)题中程序可以正确的执行但是三道题都可以运行(因为只有它是在内存中可执行代码在最前面)。
       因为如果不指名程序入口,程序会从进内存的第一个单元起开始执行,前二个题中,定义的是数据,但CPU还是将数据当做指令代码执行了。

5)

assume cs:code
a segment
  db 1,2,3,4,5,6,7,8
a ends

b segment
  db 1,2,3,4,5,6,7,8
b ends

c1 segment   ; 
  db 8 dup(0)
c1 ends	    ; 
code segment
start:
        mov ax,a
    mov ds,ax            
 
    mov ax,b
    mov es,ax           
 
    mov bx,0
    mov cx,8            
s:
    mov dl, [bx]        
    add dl, es:[bx]      
    push ds              
    mov ax, c1         
    mov ds, ax         
    mov [bx], dl       
    pop ds              
    inc bx             
    loop s
   
    mov ax,4c00h
    int 21h
code ends
end start

assume cs:code
a segment
  dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
a ends

b segment
  dw 8 dup(0)
b ends

code segment
start: 
        mov ax,a
    mov ds,ax       
 
    mov ax,b
    mov ss,ax        
    mov sp,16        
 
    mov bx,0
    mov cx,8         
s:
    push ds:[bx] 
    add bx,2
    loop s
 
    mov ax,4c00h
    int 21h
code ends
end start
posted @ 2018-11-25 13:53  雪卿狂  阅读(198)  评论(3编辑  收藏  举报