汇编语言 2.1 mov al,bh mov ah,bl 有些不明白
mov bx,826CH BX=826CHmov cx,ax CX=6246Hmov ax,bx AX=826CHadd ax,bx AX=04D8H mov al,bh AX=0482H BX=826CBH=82BL=6C AX=04D8 AH=04AL=D8 结果0482H 我是把04D8里的04直接落下来 mov ah,bl AX=6C82H BX=826CBH=82BL=6C AX=0482 AH=04AL=82结果是6C04 我是把0482里的04直接落下来 为什么是把0482 里的82用到而不是04那 0482中的04是AH,82是ALmov 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位寄存器,进位会被舍弃。 福禄娃娃 发表于 2013-10-30 08:20 static/image/common/back.gif
0482中的04是AH,82是AL
mov al, bh只用到82H,因为al=82H把bh的82H值转移到al中,所以最后al就为82H
mov ah,bl AX=6C82H BX=826CBH=82BL=6C AX=0482 AH=04AL=82结果是6C04 为什么用到的是 AL=82 不是04?
有人说是用 BX=826C BX里的82 那为什么mov al,bh BX=826C 用到的不是BL=6C?
bh是bx的高位
bl是bx的低位,
0482中04是高位,82是低位,
mov哪一个就用哪一个 本帖最后由 福禄娃娃 于 2013-10-30 17:06 编辑
amr小龙 发表于 2013-10-30 16:45 static/image/common/back.gif
mov ah,bl AX=6C82H BX=826CBH=82BL=6C AX=0482 AH=04AL=82结果是6C04 为什么用 ...
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中。
如果还不清楚,建议再看下小甲鱼的视频和王爽的书。
随风听雨雪 发表于 2013-10-30 16:47 static/image/common/back.gif
bh是bx的高位
bl是bx的低位,
0482中04是高位,82是低位,
mov bx,826ch BX=826C
mov ax,bx AX=04D8
mov al,bh AX=0482
mov ah,bl AX=6c AX=0482AH=04AL=82 为什么不是0482中的高位置04而是的位置82 福禄娃娃 发表于 2013-10-30 17:03 static/image/common/back.gif
mov ah, bl AX=6C82H BX=826CH 你要把BL中的值放到AH中,BL的值为6C,所以最后AX只改变了AH的值,AL的 ...
mov bx,826ch BX=826C
mov ax,bx AX=04D8
mov al,bh AX=0482
mov ah,bl AX=6c AX=0482AH=04AL=82 为什么不是0482中的高位置04而是低位置82 amr小龙 发表于 2013-10-30 17:11 static/image/common/back.gif
mov bx,826ch BX=826C
mov ax,bx AX=04D8
mov bx,826CH BX=826CH
add ax,bx AX=04D8H
mov al,bh AX=0482H;将bx的高八位赋给ax的低八位,其他的不变,即al=82H,ax=0482H 是因为BH占用了82H 关键是这个H么
mov ah,bl AX=6C82H;将bx的低八位赋给ax的高八位,其他不变,ah=6CH,ax=6C82H 是因为BL用了AH高位置就变成了6CH因为6C有了高八位值 所以 AX=0482H AH=04被抛弃因为不用用俩个高八位地址 所以只能用0482H中的82H 还是因为82H他有这个H amr小龙 发表于 2013-10-30 17:34 static/image/common/back.gif
mov bx,826CH BX=826CH
add ax,bx AX=04D8H
H表示的是十六进制数
mov ah, bl 这句指令执行后,BX中的BH和BL的值都不会改变,改变的是AX中AH的值,只是把BL的值放到了AH中,覆盖了原先AH的值。
从右到左依次升高,高低位就相当于阿拉伯数字的高低位,譬如百位比个位高,而且汇编里的高位与低位互不影响 高八位和低八位 自己好好看书
页:
[1]