HEAVENHXF 发表于 2020-12-26 10:27:33

汇编指令

mov ax, 18
mov ah , 78
add ax,8
mov ax,bx
add ax,bx

这个AH不是AX的高位吗,虽然高低位可以单独使用,那能在一个程序里面直接用吗? 要是给AX赋了一个很大的值,把高位的也占用了,是不是就不能再单独给高位赋值了?
还有第四行,把BX中的值放进AX里面,是不是就把AX的值覆盖了呢?

秃头小萌新 发表于 2020-12-26 11:01:33

我也刚学,我觉得是可以给高位单独赋值,但赋值后高位里面的数值会被覆盖,第四行把bx的值放进ax,ax中的值会被覆盖

HEAVENHXF 发表于 2020-12-26 11:02:45

秃头小萌新 发表于 2020-12-26 11:01
我也刚学,我觉得是可以给高位单独赋值,但赋值后高位里面的数值会被覆盖,第四行把bx的值放进ax,ax中的值 ...

但是答案就是,第四行没有被覆盖hhh有点晕了

jackz007 发表于 2020-12-26 12:57:49

本帖最后由 jackz007 于 2020-12-26 13:38 编辑

       ah 和 al 是 ax 的组成部分,ah 和 al 共同构成了寄存器 ax,ax 是16 位寄存器,ah 和 al 都是 8 位,其中,ah 是 ax 高位,al 是 ax 的低位,如果 ax = 1234h,那么,ah = 12h ,al = 34h,所以,ah、al 就是 ax,修改 ax 就是修改 ah、al,修改 ah、al 就是修改 ax,同样还是 ax = 1234h,如果这时,执行 mov ah , 56h,那么 ax 将变为 5634h。
       只要给 ax 赋值,ax 以前的内容就会被完全覆盖 ,不存在任何先决条件,"要是给AX赋了一个很大的值,把高位的也占用了" 是完全错误的观念,即使赋的新值是 0,也会覆盖到 ah 的。
            

HEAVENHXF 发表于 2020-12-28 09:54:23

jackz007 发表于 2020-12-26 12:57
ah 和 al 是 ax 的组成部分,ah 和 al 共同构成了寄存器 ax,ax 是16 位寄存器,ah 和 al 都是 8 位 ...

强,理解了!
页: [1]
查看完整版本: 汇编指令