|
发表于 2011-6-23 10:23:05
|
显示全部楼层
本帖最后由 Miller01001 于 2011-6-23 10:33 编辑
mov ax,001ah
mov bx,0026h
add,al,bl
add ah,bl 这里开始我就很纳闷 十分纳闷 他的ax是2640h bx是0026h bx数据没改 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
|
|