鱼C论坛

 找回密码
 立即注册
查看: 19|回复: 9

3.2 mov al,[0]为传送字节,mov ax,[0]为什么不可是传送

[复制链接]
发表于 3 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
mov al,[0] 为传送字节
mov ax,[0] 为什么不能看成传送字节单元,而是传送字单元????
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 3 天前 | 显示全部楼层
关键:看操作数本身是几位。

AL 是 8 位寄存器,所以 mov al, ... 是传送一个字节。

AX 是 16 位寄存器,所以 mov ax, ... 是传送一个字,也就是 16 位。

虽然 AX 可以拆成 AH 和 AL,但汇编器看到的是 AX 这个整体,不是两个独立的字节单元。指令宽度由寄存器或内存操作数类型决定。

  1. mov al, 12h   ; 8位,只送 AL
  2. mov ah, 34h   ; 8位,只送 AH
  3. mov ax, 1234h ; 16位,一次送整个 AX
复制代码


对内存也是这样:

  1. mov al, [bx]  ; 取 1 个字节到 AL
  2. mov ax, [bx]  ; 取 1 个字,也就是 2 个字节到 AX
复制代码


mov ax, [bx] 不是“传送字节单元”,而是从 [bx] 开始取两个连续字节:低字节送到 AL,高字节送到 AH。

所以记住:  
AL 是字节,AX 是字。  
想按字节操作,就用 AL 或 AH;用 AX,它就是字传送。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
知道了,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层


不客气,继续加油!有问题随时来问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
FishC 发表于 2026-10-8 16:21
关键:看操作数本身是几位。

AL 是 8 位寄存器,所以 mov al, ... 是传送一个字节。

收到,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
531035528 发表于 2026-10-08 16:51
FishC 发表于 2026-10-8 16:21
关键:看操作数本身是 ...


不客气,继续加油! 有问题随时来问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
FishC 发表于 2026-10-8 16:21
关键:看操作数本身是几位。

AL 是 8 位寄存器,所以 mov al, ... 是传送一个字节。

请问内在操作数类型,指的是什么??
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
531035528 发表于 2026-10-08 16:59
FishC 发表于 2026-10-8 16:21
关键:看操作数本身是 ...


你问的应该是“内存操作数类型”。

它指的是:CPU 这次访问内存时,把那个地址里的数据当成多大来读或写。常见的有:

字节:8 位  
字:16 位  
双字:32 位  

内存地址本身只表示“从哪开始”,不表示“取几个字节”。所以类型要由指令里的寄存器、另一个操作数,或者显式说明来决定。


  1. mov al, [0]   ; [0] 是字节类型,取 1 字节到 AL
  2. mov ax, [0]   ; [0] 是字类型,取 2 字节到 AX
  3. mov [0], al   ; [0] 是字节类型,写 1 字节
  4. mov [0], ax   ; [0] 是字类型,写 2 字节
复制代码


如果两边都看不出大小,就要显式写:


  1. mov byte ptr [0], 1   ; 按字节写
  2. mov word ptr [0], 1   ; 按字写
复制代码


所以“内存操作数类型”就是:这次访问内存,是访问 1 个字节、2 个字节,还是 4 个字节等。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
FishC 发表于 2026-10-8 16:59
你问的应该是“内存操作数类型”。

它指的是:CPU 这次访问内存时,把那个地址里的数据当成多大来读 ...

谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
531035528 发表于 2026-10-08 17:10
FishC 发表于 2026-10-8 16:59
你问的应该是“内存操 ...


不客气,继续加油!有问题随时来问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-10-11 02:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表