汇编学习(4)汇编指令举例

☞字节:记为byte,一个字节由8个bit组成,可以存在8位寄存器中。
字:word,一个字由两个字节组成。
注:一个字可以存在一个16位寄存器中,这个字的高位字节和低位字节自然就存在这个寄存器的高8位寄存器和低8位寄存器中。
十六进制中的一位相当于二进制数中的四位。


☞几条汇编指令

汇编指令      操作                        高级语言描述
mov ax,18     将18送入寄存器AX            AX=18
mov ah,78     将78送入寄存器AH              AH=78
add ax,8      将寄存器AX中的数值加8          AX=AX+8
mov ax,bx     将寄存器BX中的数据送入AX       AX=BX
add ax,bx     将AX和BX中的数值相加送入AX     AX=AX+BX

 




☞程序段中指令的执行情况一

程序段中的指令        指令执行后AX中的数据        指令执行后BX中的数据
mov ax,4E20H        4E20H                0000H
add ax,1406H        6226H                0000H
mov bx,2000H        6226H                2000H
add ax,bx           8226H                2000H
mov bx,ax           8226H                8226H
add ax,bx           ?                    8226H

 



分析:
程序段中的最后一条指令add ax,bx,在执行前ax和bx中的数据都是8226H,相加后所得值为1044CH,
但是ax为16位寄存器,只能存储4位十六进制的数据,所以最高位1不能在ax中保存,ax中的数据为044CH。

☞程序段中指令的执行情况二

程序段中的指令        指令执行后AX中的数据        指令执行后BX中的数据
mov ax,001AH        001AH                0000H
mov bx,0026H        001AH                0026H
add al,bl           0040H                0026H
add ah,bl           2640H                0026H
add bh,al           2640H                4026H
mov ah,0            0040H                4026H
add al,85H          00C5H                4026H
add al,93H          ?                    4026H

 


分析:程序段中的最后一条指令add al,93H,在执行前,al中的数据为C5H,相加后所得值为
158H,但是al为8位寄存器,只能存放两位十六进制数据,所以最高位的1丢失,ax中的数据位0058H。
注:此时al是作为一个独立的8位寄存器来使用的,和ah没有关系,CPU在执行这条指令时认为ah和al是两个不相关的寄存器。
如果执行add ax,93H 则低8位的进位会存储到ah中。

☞在进行数据传送或运算时,要注意指令的两位操作对象的位数应当是一致的,
例如:

mov ax,bx
mov bx,cx
mov ax,18H
mov al,18H
add ax,bx
add ax,2000

 


是正确的指令

mov ax,bl
mov bh,ax
mov al,2000
add al,100H

 


等是错误的指令

笔记的过程,就是思考的过程。放慢了阅读速度,加长了思考消化时间。

posted @ 2013-03-04 15:24  TBHacker  阅读(813)  评论(0编辑  收藏  举报