汇编 实验四

实验内容 一:

   

运行截图:

 

调试截图

将0403h改为0441h后 :

 

运行截图:

调试截图 :

 

实验内容 二 :

1)

调试截图:

 

 2)

参考代码:  (来源于网络)

assume cs:code
code segment
mov ax,20h
mov ss,ax
mov sp,40h
mov bx,3f3eh
mov cx,32
s: push bx
sub bx,0202h
loop s
mov ax,4c00h
int 21h

code ends
end

 

调试截图

 

思考:

mov ss,ax 指定堆栈段为0:200处

mov sp,40h 指定栈顶指针为0:23f处

定义栈位置为200-23f 然后将数据0~63 倒序压入栈

 

在push bx 命令前 0:200 23f 之间的内存

 

第一次 push 后

 

逐渐循环......

 

最终达成目的

实验内容 三 :

(3)下面的程序功能是将“mov ax,4c00h"之前的指令复制到内存0:200处,补全程序。上机调试,跟踪运行结果。

assume cs:code   

code segment   

     mov ax,cs 

     mov ds,ax   

     mov ax,0020h   

     mov es,ax   

     mov bx,0   

   mov cx,17h   

  s: mov al,[bx]   

     mov es:[bx],al   

     inc bx   

     loop s   

     mov ax,4c00h   

     int 21h   

code ends   

end

 解答:

 第一空 : 将段代码CS:存放当前正在运行的程序代码所在段的段基值赋值给 ds 

 第二空 : 推出来的

先随便令 cx=20

 

通过反汇编

 

 “mov ax,4c00h"之前 是至 0017

 所以如果将“mov ax,4c00h"之前的指令复制到内存0:200处 需复制17个字节

 需循环17次

 cx =17h

 

posted @ 2018-11-22 23:02  WINNER9898  阅读(241)  评论(2)    收藏  举报