汇编语言指令:JMP BYTE PTR [BX]错在哪儿

 我来答 举报
兔老大米奇
高粉答主

2019-11-29 · 醉心答题,欢迎关注
知道小有建树答主
回答量:988
采纳率:100%
帮助的人:18.5万
展开全部

jmp指令的操作数是地址,实际执行效果是修改IP的值。

由于BYTE PTR使得BX指向的数据为字节类型,而IP为字类型,数据类型不匹配,故该指令不正确。

指令的正确写法可以是jmp word PTR [BX],此时将BX指向的字类型数据赋给IP;或者jmp dword ptr [BX],该指令把BX所指向的双字类型数据的高位字赋给CS,低位字赋给IP。

扩展资料

bx可以作为索引寄存器mdw1,2,3,4,5,6,7,8,9,10,leabx,m;把m的首地址放入bx,即把bx当作索引,C语言中的指针概念即来源于此;如果你学过C语言的话movbyteptral,[bx],读取1个字节的数据到al中.[bx]是寄存器寻址。

即相当于 ; C语言中的 char a = *(char*)p,这类用法。byte ptr即指明操作类型是db类型。同理,[bx+1]即指向了数据中下一个字节,对m这种dw类型的数据来说。

即相当于指向了[bx]对应的字数据的高位字节。比如:假如bx指向第1个字1, 1在内存中占2个字节01 00 (低位在前,高位在后则:mov al, byte ptr [bx]。

把低位01 送入al,mov ah, byte ptr [bx+1],把高位00状入ah。

KawaguchiSky
推荐于2016-10-09 · TA获得超过2639个赞
知道小有建树答主
回答量:296
采纳率:100%
帮助的人:136万
展开全部
jmp指令的操作数是地址,实际执行效果是修改IP的值,在某种情况下还会修改CS的值。

由于BYTE PTR使得BX指向的数据为字节类型,而IP为字类型,数据类型不匹配,故该指令不正确。

指令的正确写法可以是jmp word PTR [BX],此时将BX指向的字类型数据赋给IP;或者jmp dword ptr [BX],该指令把BX所指向的双字类型数据的高位字赋给CS,低位字赋给IP。
本回答被提问者采纳
32 已赞过 已踩过<
你对这个回答的评价是?
评论 举报 收起
联不通联不通
2011-10-31
知道答主
回答量:12
采纳率:0%
帮助的人:13万
展开全部
JMP后面的表达式应该是程序地址,在X86中最小的地址值也是字(WORD),所以错。
2 已赞过 已踩过<
你对这个回答的评价是?
评论 举报 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式