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

我的博客

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

[2010-01-15 00:59] 《汇编语言》第三章检测点3.1

图片载入中
(1)在DEBUG中,用“D 0:01F”查看内存,结果如下。
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                    ;DS=0001H,0001:0000=0000:0010
MOV AX,[0000]    AX=(2662H);AX为字型寄存器,高字节在前
MOV BX,[0001]    BX=(E626H)
MOV AX,BX        AX=(E626H)
MOV AX,[0000]    AX=(2662H)
MOV BX,[0002]    BX=(D6E6H)
ADD AX,BX        AX=(FD48H)
ADD AX,[0004]    AX=(2C14H);FD48+2ECC=12C14H,溢出,舍弃最高位
MOV AX,0         AX=(0000H)
MOV AL,[0002]    AX=(00E6H);AL为字节型寄存器
MOV BX,0         BX=(0000H)
MOV BL,[000C]    BX=(0026H)
ADD AL,BL        AX=(000CH);E6+26=10CH,AL为字节型寄存器,溢出,舍弃最高位
提示:注意DS的设置。

(2)内存中的情况如图3.6所示。
各寄存器的初始值:CS=2000H,IP=0,DS=1000H,AX=0,BX=0;
1.写出CPU执行的指令序列(用汇编指令写出)。

MOV AX,6622H
JMP 0FF0:0100   ;跳转到0FF0:0100,也可表示为1000:0000
MOV AX,2000H
MOV DS,AX
MOV AX,[0008]
MOV AX,[0002]

2.写出CPU执行每条指令后,CS,IP和相关寄存器中的数值。

;每读取一条指令,IP的值自动增加
MOV AX,6622H   ;把6622H放入AX
JMP 0FF0:0100  ;跳转到1000:0000,CS=1000,IP=0000
MOV AX,2000H   ;把2000H放入AX
MOV DS,AX      ;设置DS为2000H
MOV AX,[0008]  ;把2000:0008处的内容作为数据放入AX;AX=C389H
MOV AX,[0002]  ;把2000:0002处的内容作为数据放入AX;AX=EA66H

3.再次体会:数据和程序有区别吗?如何确定内存中的信息哪些是数据,哪些是程序?

在内存中,数据和程序没有区别。CPU将CS:IP指向的内容看作是程序,其他时候都看作数据。
评论次数(3)  |  浏览次数(684)  |  类型(汇编作业) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码