找回密码
 立即注册
搜索
热搜: 活动 通知
查看: 64|回复: 0

检测点6-3

[复制链接]

620

主题

336

回帖

1057

积分

管理员

积分
1057
发表于 2026-3-15 09:26:06 | 显示全部楼层 |阅读模式
检测点6.3

1.INTEL x86处理器访问内存时,是按低端字节序进行的。那么,以下程序片断执行后,寄存器AX中的内容是多少?
     mov word [data],0x2008
     xor byte [data],0x05
     add word [data],0x0101
     mov ax,[data]

     data db 0,0

答:
第一条指令执行后:
data:____
        |08|
        |---|
        |20|
      
第二条指令执行后:
data:____
        |0D|
        |---|
        |20|
        
第三条指令执行后:
data:____
        |0E|
        |---|
        |21|
        
最终,data处一个字是210EH,所以传送到AX的内容是210EH。

2.对于以上程序片断,如果标号data在编译时的汇编地址是0x0030,那么,当该程序加载到内存后,该程序片断所在段的段地址为0x9020时,该标号处的段内偏移地址和物理内存地址各是多少?
答:程序片段加载时,若段地址为0x9020,则标号data在段内的偏移地址为0x0030,物理地址是0x9020左移4位加上0x0030,等于0x90230。

3.对于以下指令的写法,说出哪些是正确的,哪些是错误的,错误的原因是什么。
A.mov ax,[data1]                B.div [data1]                        C.xor ax,dx
D.div byte [data2]                E.xor al,[data3]                F.add [data4],0x05
G.xor 0xff,0x55                        H.add 0x06,al                        I.div 0xf0
J.add ax,cl  
答:正确的写法是A,C,D,E。以下指令是错误的:
B。错误的原因是未指定内存操作数的大小;
F。错误的原因是未指定源和目的操作数的大小。特别地,0x05可以是任意长度。
G。错误的原因是源和目的操作数不允许同时为立即数。
H。错误的原因是目的操作数不能是立即数。
I。错误的原因是除法指令的操作数不能是立即数。
J。错误的原因是源操作数和目的操作数的大小不匹配。

4.如果寄存器AX、BX和DX的内容分别为0x0090、0x9000和0x0001,那么,执行div bh后,这三个寄存器的内容各是多少?执行div bx后呢?
答:
div bh是用AX的内容除以bh的内容,AL保存商,AH保存余数。0x0090除以0x90,AL为1,AH为0,BX和DX不变。
div bx是用DX:AX的内容除以BX的内容,AX保存商,DX保存余数。0x00010090除以0x9000,AX为1,DX为0x7090;BX不变。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|鼠侠网 ( 吉ICP备19001332号 )

GMT+8, 2026-3-30 14:29 , Processed in 0.237323 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表