.静待彼岸 发表于 2012-3-1 23:14:15

第三章,关于寄存器的一个小问题

mov ax,0为什么机器码是3个字节
而sub ax,ax 的机器码是2个字节

莫名其妙 发表于 2012-3-1 23:14:16

本帖最后由 莫名其妙 于 2012-3-1 23:22 编辑

debug 的时候 看看转换的机器码
B80000      MOV   AX,0000
29C0          SUB   AX,AX


你往后学会学到flag 标志寄存器
sub add 会影响到标志寄存器的cf 值

而mov push 这些不会影响   


往后看吧!~

.静待彼岸 发表于 2012-3-1 23:16:16

两个表达的是一个意思,为什么会有这样的不同,而且,我想补充的是这样的不同会不会在编写时什么时候只能用哪一种,有没有规定,或者什么

ghostotem 发表于 2012-3-1 23:33:39

这个问题你不用管他,硬件实现就是那样规定的。
和以后的编程也没有什么关系,像jmp这样的指令,跳每个指令多少字节都是由硬件管理的。
如果你要关心这样的问题,那你就用机器语言吧,以后用0 1 写代码。
要是还不解那我问你,同样是一个人,为什么有的人名字2个字,有的人3个字?和你叫这个人有影响吗。
页: [1]
查看完整版本: 第三章,关于寄存器的一个小问题