汇编网首页登录博客注册
tolearn的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
友情链接

[2010-10-10 16:21] 检测点3.1

(1)在Debug中,用“d 0:0 1f”查看内存,结果如下,
0000:0000 70 80 f0 30 ef 60 30 e2-00 80 80 12 66 20 22 60
0000:0010 62 26 e6 d6 cc 2e 3c 3b-ab ba 00 00 26 06 66 88
下面的程序执行前,AX=0,BX=0,写出每条汇编指令执行完后相关寄存器中的
值。
mov ax,1
mov ds,ax
mov ax,[0]        AX=2662H
mov bx,[1]        BX=e626H
mov ax,bx        AX=e626H
mov ax,[0]        AX=2662H
mov bx,[2]        BX=d6e6H
add ax,bx        AX=fd48H
add ax,[4]        AX=2c14H
mov ax,0        AX=0H
mov al,[2]        AX=e6H
mov bx,0        BX=0H
mov bl,[c]        BX=26H
add al,bl        AX=cH
提示,注意ds的设置。

(2)内存中的情况如图3.6所示

各寄存器的初始值:CS=2000H,IP=0,DS=1000H,AX=0,BX=0;
1,写出CPU执行的指令序列(用汇编指令写出)。
2,写出CPU执行每条指令后,CS、IP和相关寄存器中的数值。
3,再次体会:数据和程序有区别吗?如何确定内存中的信息哪些是数据,哪些是程序?
分析:
CPU对图3.6中指令的执行过程如下。
(1)当前CS=2000H,IP=0H,则CPU从内存2000H×16+0=20000H处读取指令,读入的指令是:B8 22 66(mov ax,6622H),读入后IP=IP+3=3H;
(2)当前CS=2000H,IP=3H,则CPU从内存2000H×16+3=20003处读取指令,读入的指令是:EA 00 01 F0 0F(jmp 0ff0:0100),读入后CS=0ff0H,IP=100H;
(3)当前CS=0ff0H,IP=100H,则CPU从内存ff0H×16+100H=10000H处读取指令,读入的指令是:B8 00 20(mov ax,2000H),读入后IP=IP+3=103H;
(4)当前CS=0ff0H,IP=103H,则CPU从内存ff0H×16+103H=10003H处读取指令,读入的指令是:8E D8(mov ds,ax),读入后IP=IP+2=105H;
(5)当前CS=0ff0H,IP=105H,则CPU从内存ff0H×16+105H=10005H处读取指令,读入的指令是:A1 08 00(mov ax,[8]),读入后IP=IP+3=108H;
(6)当前CS=0ff0H,IP=108H,则CPU从内存ff0H×16+108H=10008H处读取指令,读入的指令是:A1 02 00(mov ax,[2]),读入后IP=IP+3=10bH;
……
经分析后,可知指令执行序列为:
(1) mov ax,6622H        AX=6622H
(2) jmp 0ff0:0100        CS=ff0H,IP=100H
(3) mov ax,2000H        AX=2000H
(4) mov ds,ax                DS=2000H
(5) mov ax,[8]                AX=c389H
(6) mov ax,[2]                AX=ea66H
体会:数据和程序没有区别。
评论次数(0)  |  浏览次数(287)  |  类型(汇编作业) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码