3.2 mov al,[0]为传送字节,mov ax,[0]为什么不可是传送
mov al, 为传送字节mov ax, 为什么不能看成传送字节单元,而是传送字单元???? 关键:看操作数本身是几位。
AL 是 8 位寄存器,所以 mov al, ... 是传送一个字节。
AX 是 16 位寄存器,所以 mov ax, ... 是传送一个字,也就是 16 位。
虽然 AX 可以拆成 AH 和 AL,但汇编器看到的是 AX 这个整体,不是两个独立的字节单元。指令宽度由寄存器或内存操作数类型决定。
mov al, 12h ; 8位,只送 AL
mov ah, 34h ; 8位,只送 AH
mov ax, 1234h ; 16位,一次送整个 AX
对内存也是这样:
mov al, ; 取 1 个字节到 AL
mov ax, ; 取 1 个字,也就是 2 个字节到 AX
mov ax, 不是“传送字节单元”,而是从 开始取两个连续字节:低字节送到 AL,高字节送到 AH。
所以记住:
AL 是字节,AX 是字。
想按字节操作,就用 AL 或 AH;用 AX,它就是字传送。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 知道了,谢谢 531035528 发表于 2026-10-08 16:48
知道了,谢谢
不客气,继续加油!有问题随时来问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2026-10-8 16:21
关键:看操作数本身是几位。
AL 是 8 位寄存器,所以 mov al, ... 是传送一个字节。
收到,谢谢 531035528 发表于 2026-10-08 16:51
FishC 发表于 2026-10-8 16:21
关键:看操作数本身是 ...
不客气,继续加油! 有问题随时来问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2026-10-8 16:21
关键:看操作数本身是几位。
AL 是 8 位寄存器,所以 mov al, ... 是传送一个字节。
请问内在操作数类型,指的是什么?? 531035528 发表于 2026-10-08 16:59
FishC 发表于 2026-10-8 16:21
关键:看操作数本身是 ...
你问的应该是“内存操作数类型”。
它指的是:CPU 这次访问内存时,把那个地址里的数据当成多大来读或写。常见的有:
字节:8 位
字:16 位
双字:32 位
内存地址本身只表示“从哪开始”,不表示“取几个字节”。所以类型要由指令里的寄存器、另一个操作数,或者显式说明来决定。
mov al, ; 是字节类型,取 1 字节到 AL
mov ax, ; 是字类型,取 2 字节到 AX
mov , al ; 是字节类型,写 1 字节
mov , ax ; 是字类型,写 2 字节
如果两边都看不出大小,就要显式写:
mov byte ptr , 1 ; 按字节写
mov word ptr , 1 ; 按字写
所以“内存操作数类型”就是:这次访问内存,是访问 1 个字节、2 个字节,还是 4 个字节等。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2026-10-8 16:59
你问的应该是“内存操作数类型”。
它指的是:CPU 这次访问内存时,把那个地址里的数据当成多大来读 ...
谢谢 531035528 发表于 2026-10-08 17:10
FishC 发表于 2026-10-8 16:59
你问的应该是“内存操 ...
不客气,继续加油!有问题随时来问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]