鱼C论坛

 找回密码
 立即注册
查看: 11969|回复: 10

汇编语言 2.1 mov al,bh mov ah,bl 有些不明白

[复制链接]
发表于 2013-10-30 08:20:54 | 显示全部楼层
0482中的04是AH,82是AL
mov al, bh只用到82H,因为al=82H把bh的82H值转移到al中,所以最后al就为82H

mov ah, bl 把BL中的值6CH转移到AH中,所以AH为6CH

AX、BX、CX、DX这四个16位通用寄存器都可以拆开来用,分别拆成两个8位寄存器AH、AL、BH、BL、CH、CL、DH、DL。

如果是mov ax,bx说明进行操作的是16位寄存器,加减乘除会有进位借位
如果是mov ah,bl说明进行操作的是8位寄存器,加减乘除产生的进位错位不会改变另外一个8位寄存器,进位会被舍弃。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-10-30 17:03:56 | 显示全部楼层
本帖最后由 福禄娃娃 于 2013-10-30 17:06 编辑

mov ah, bl   AX=6C82H   BX=826CH 你要把BL中的值放到AH中,BL的值为6C,所以最后AX只改变了AH的值,AL的值不变。

因为mov ah,bl 只进行相同的位数寄存器的运算,这条指令只用到了ah和bl,把bl的值放到ah中。

而mov al, bh 用到了al和bh,把bh的值放入al中。
如果还不清楚,建议再看下小甲鱼的视频和王爽的书。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-10-30 18:09:12 | 显示全部楼层
amr小龙 发表于 2013-10-30 17:34
mov bx,826CH   BX=826CH

add ax,bx      AX=04D8H

H表示的是十六进制数
mov ah, bl 这句指令执行后,BX中的BH和BL的值都不会改变,改变的是AX中AH的值,只是把BL的值放到了AH中,覆盖了原先AH的值。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-1 05:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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