q5s2c1 发表于 2017-10-15 10:02:20

关于汇编5.4节的问题

前面书的3.3节说mov ax,【0】是默认存入16位数据也就是两个字节的数据,会把【1】这个地址的数据也存进去,但是到了5.4节小甲鱼又说只会存【0】这个偏移地址的字节数据,ax的高位是0,这是怎么回事儿,求解惑,谢谢

q5s2c1 发表于 2017-10-15 10:03:30

就是这个问题

丶忘却的年少o 发表于 2017-10-15 10:24:20

是不是讲debug和masm对指令的处理方式?
mov ax, 这句指令,在debug中是把ds:开始的16位放入ax;但是在masm处理的指令只是把0这个数放入ax,不管前面寄存器是16位还是8位,0还是0,所以高位就是0。在masm里,要想把地址的数据放进去需要mov bx, 0mov ax, 这样

q5s2c1 发表于 2017-10-15 10:28:05

丶忘却的年少o 发表于 2017-10-15 10:24
是不是讲debug和masm对指令的处理方式?
mov ax, 这句指令,在debug中是把ds:开始的16位放入ax;但 ...

那在masm中用bx是传16位还是传8位

丶忘却的年少o 发表于 2017-10-15 10:35:44

q5s2c1 发表于 2017-10-15 10:28
那在masm中用bx是传16位还是传8位

还是和debug中的规则一样,看前面的寄存器,如果是al等八位,就是传一个地址中的数据,如果是ax等寄存器,就是穿这样两个地址中的寄存器,其中高位放高位,低位放低位

兰陵月 发表于 2017-10-15 10:35:59

q5s2c1 发表于 2017-10-15 10:28
那在masm中用bx是传16位还是传8位

mov bx,0

这句,就是传2个字节=16个比特。

q5s2c1 发表于 2017-10-15 10:42:08

兰陵月 发表于 2017-10-15 10:35
mov bx,0

这句,就是传2个字节=16个比特。

我的意思是mov ax,【bx】传到ax中是一个字节还是两个字节

兰陵月 发表于 2017-10-15 11:24:39

q5s2c1 发表于 2017-10-15 10:42
我的意思是mov ax,【bx】传到ax中是一个字节还是两个字节

两个字节

movax,【bx】

【bx】表示一个地址里的数据,数据的大小由ax这个2字节的寄存器来决定,

所以是两个字节。

沐雨听松 发表于 2017-10-15 11:29:57

因为前面的ax是16位的,会把地址开始处的两个字节传给ax,如果是al,就是一个字节
页: [1]
查看完整版本: 关于汇编5.4节的问题