池子 发表于 2011-11-5 23:36:47

什么时候是指定的数据为字传送,什么时候为字节传送?

当 datasegmemt
   dw0123h,0456h
   data ends
````````
`````
   mov ax,是传送的字 而mov ,ax 也为字操作,当mov al, 为字节的传送
当 mov ,al也为字传送 ??
当 datasegment
   db 1,3,4,5
data ends
mov ax, 为什么操作   字传送 还是字节传送?那 mov,ax呢   mov al, 肯定为字节的传送,
mov ,al 呢   
我有点搞不清楚,是不是字节和字的操作 与数据段定义的字节或者字有关,还是 只看寄存器是否八位 或者十六位而确定传送的内存单元是字还是字节的传送?

幕府幽魂 发表于 2011-11-6 00:19:53

当 datasegmemt
   dw0123h,0456h
   data ends
````````
`````
   mov ax,是传送的字 而mov ,ax 也为字操作,当mov al, 为字节的传送
当 mov ,al也为字传送 ??

al只传送一个字节过去,改变ds:的低8位。

-------------------------------------------------------------------------------------------------------------------------
当 datasegment
   db 1,3,4,5
data ends
mov ax, 为什么操作   字传送 还是字节传送?答:传到AV的低8位,高位自动被0填充;
那 mov,ax呢答:这个也只能传过去AX中的低8位,出现溢高8位现象,会引发错误;
mov al, 肯定为字节的传送,
mov ,al 呢    答:也是字节传送。
自己体会下

ever.g 发表于 2011-11-6 00:26:09

有寄存器的时候 看寄存器
没寄存器的时候 看伪指令

cyht33 发表于 2011-11-9 11:33:26

要看发生关系的寄存器是16位还是8位,16位寄存器就是字型数据,8位寄存器就是字节型数据。
如果是字节型属于向16位寄存器复制,那么数据会存放在寄存器的低8为,高8为会用0填充{:1_1:}
页: [1]
查看完整版本: 什么时候是指定的数据为字传送,什么时候为字节传送?