汇编语言(紧急)
在王爽老师汇编书中的问题2.1中的 问题mov ax,001ah
mov bx,0026h
add,al,bl
add ah,bl 这里开始我就很纳闷 十分纳闷他的ax是2640h bx是0026hbx数据没改 ax的2640h怎么算的?
难道26和40结合?
接着的下面 就一窍不懂 前面还好理解 后面不好理解 是怎么算的?
mov ah,0 ax 0040h bx 4026h 这个是什么意思 怎么算出来的?
我是新手 急需高手解答!
本帖最后由 Miller01001 于 2011-6-23 10:33 编辑
mov ax,001ah
mov bx,0026h
add,al,bl
add ah,bl 这里开始我就很纳闷 十分纳闷他的ax是2640h bx是0026hbx数据没改 ax的2640h怎么算的?
难道26和40结合?
接着的下面 就一窍不懂 前面还好理解 后面不好理解 是怎么算的?
mov ah,0 ax 0040h bx 4026h 这个是什么意思 怎么算出来的?
你就把AX,BX寄存器当作变量来使用,但是他们有高低位之分
mov ax,001ah
解答,AX = AH, AL
现在AH的高位是00H ,低位是1AH
因为最老的处理器是8位的,而intel兼容了老的处理器、
8086是16位的
所以兼容了8位的处理了,每8位1个字节。AX是16位处理器的寄存器所以分高低
同理mov bx,0026h
BX = BH,BL
BH = 00H ,BL =26H
add,al,bl ; 1a+26 = 40H ;现在AL的低位是1aH
低位加上低位嘛。然后把相加的值传送给AL
因为AX的高位并没有变所以AH还是00.所以AX = 0040H
;mov ax,001ah
;mov bx,0026h
add ah,bl
因为是AX高位加上BX的低位,把值传送给AX的高位
就是00H + 26H = 26H ;,AH的值是26H,AX=2640H。
因为add,al,bl相加已经把AX的低位的值改变了,所以AX = 2640H
因为是16位的寄存器,所以AX现在的值是26 40H了
↑ ↑
高位 低位
AH AL
add,al,bl ; 1a+26 = 40H ;现在AL的低位是1aH
低位加上低位嘛。然后把相加的值传送给AL
因为AX的高位并没有变所以AH还是00.所以AX = 0040H
mov ax,001ah
mov bx,0026h
add ah,bl
因为是AH高位加上BX的低位,把值传送给AH
就是00H + 26H = 26H ;现在AX的高位,AH的值是26H,AX=2640H。
因为add,al,bl相加已经把AX的低位改变了,所以AX = 2640H
因为是16位的寄存器,所以AX现在的值是2640H了
不怎么好理解
下面的 add al,85h 0040h 这个怎么算?
也是用你那个方法吗? 那al是低的 低是40 高呢? 本帖最后由 Miller01001 于 2011-6-23 10:42 编辑
下面的 add al,85h 0040h 这个怎么算?
也是用你那个方法吗? 那al是低的 低是40 高呢?
add al,85H
就是说把AX的低位的值在加上85H,然后传送给AX的低位AL
AX的高位,是看你对AX的高位做了什么操作他随时可以改变的
用汇编指令去改变寄存器的值啊,如果指令没有对寄存器进行任何操作
他的值是不会改变的。默认全是AX = 0000 ; 因为是16位
页:
[1]