☞字节:记为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
等是错误的指令
笔记的过程,就是思考的过程。放慢了阅读速度,加长了思考消化时间。