移动指令
mov 寄存器,数据 mov ax,10H
mov 寄存器,寄存器 mov ax,bx
mov 寄存器,内存单元 mov ax,ds:[0] 取字型数据 mov al,ds:[0]取字节型数据
mov 内存单元,寄存器 mov ds:[0],ax
mov 段寄存器,寄存器 mov bx,1000H → mov ds,bx
mov 寄存器,段寄存器 mov bx,ds
注: mov ds,数据H 是错误的赋值方式
例如:
mov ds,1000H
运算指令
add 寄存器,数据 add ax,1
add 寄存器,寄存器 add ax,bx
add 寄存器,内存单元 add ax,ds:[0]
add 内存单元,寄存器 add ds:[0],ax
sub 寄存器,数据 sub ax,1
sub 寄存器,寄存器 sub ax,bx sub ax,ax
sub 寄存器,内存单元 sub ax,ds:[0]
sub 内存单元,寄存器 sub [0],ax
注意:add ds,ax 是错误的运算方式
例1:写几条指令 将一段内存中连续的3个字型数据累加存放到AX中
20000H 12H → 3412H
20001H 34H
20002H 99H → 8899H
20003H 88H
20004H FFH → EEFFH
20005H EEH
mov bx,2000H
mov ds,bx
mov ax,0
add ax, ds:[0]
add ax,ds:[2]
add ax,ds:[4] ;AX = ABAA
例2:将DS:[0]中的 FF、 DS:[1]中的FF与AX相加
20000H FFH → FFFFH
20001H FFH
mov ax,FFFF
mov bx,2000
mov ds,bx
add [0],ax
最后得到的结果:
20000H FEH → FFFEH
20001H FFH
例3:将DS:[0]中的 FF与Al相加
20000H FFH
mov al,FF
mov bx,2000
mov ds,bx
add [0],al
最后得到的结果:
20000H FEH
例4:将DS:[0]中的 FF与AX相加
20000H FFH
mov ax,10
mov al,FF
mov bx,2000
mov ds,bx
add [0],ax
最后得到的结果:
20000H FEH
20001H 01H
0000:0010 62 26 E6 D6 CC 2E 3C CB - AB BA 00 00 26 06 66 88
mov ax,1 AX = 1
mov ds,ax DS = 1
mov ax,ds:[0] 字型数据 AX = 2662H
mov bx,ds:[1] 字型数据 BX = E626H
mov ax,bx AX = E626H
mov ax,ds:[0] 字型数据 AX = 2662H
mov bx,ds:[2] 字型数据 BX = D6E6H
add ax,bx 字型数据相加 AX = FD48H + 2ECCH
add ax,ds:[4] 字型数据相加 AX = 2C14H
mov ax,0 AX = 0
mov al,ds:[2] 字节型数据 AX = 00E6H AL = E6H
mov bx,0 BX = 0000
mov bl,ds:[c] 字节型数据 BX = 0026H BL = 26H
add al,bl 字节型数据相加 AX = 000CH AL = 0CH