欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

新手问一个 关于mov 赋值的有关问题

更新时间: 2014-01-05 03:17:16 责任编辑: Author_N1

 

新手问一个 关于mov 赋值的问题

--参考方法--
这个,理解的话,要从指令功能和机器码上来看。
mov ax, 1 其实就是 mov ax, 0001h 其机器码为 B8 01 00 汇编程序在理解 mov ax,1 时,会认为是将 1 赋予 ax 寄存器,所以 1 就会是个 16 位的 0001h 了。汇编程序,对立即数的理解上,会尽量和所要求的位数一样,小了的可以扩,大了的话就会出错了(比如 mov al, 1000 );如果都要求和要求的完全一致,一来看着可能会有些烦乱,二则会让些常量类的因可能需要赋予不同位长的对象而无法实行。
mov ax,[bx] 指令,照你的说法的话,就不能这么写了,因为指令要求源和目的操作数的大小一致,所以,必然是将内存 [bx] 处的 16 位数据传递给 ax 而非你说的 8 位。为避免歧义,通常还可能要求写得更为明确些如 mov ax, word ptr [bx] 或 mov al, byte ptr [bx] 。象你描述的这样的功能,后来的 cpu 也新增有个指令的 movzx ax, byte ptr [bx] 。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:17:16
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/20395/
本文WWW.DOC100.NET DOC100.NET版权所有。