8089汇编 运算符指令
汇编指令不区分大小写、指令 寄存器,数字(进制符)
mov、add 指令
一、根据下面指令分析
; 存入、将001AH值存储ax寄存器 mov ax, 001AH ; 存入、将0026H值存储bx寄存器 mov bx, 0026H ; 相加、al高位1A + bl高位26、结果存入al add al, bl ; 相加、ah低位00 + bl高位26、结果存入ah add ah, b ; 存入、0存入ah低位、直接影响前8bit mov ah,0 ; 相加、al高位 + 93H、结果存入al、注意:al存储为8bit,结果大于8bit溺出进位将被丢弃。 add al,93H
mov 操作数据
段寄存器不能直接存数据、需要通过通用寄存器存储数据、在通过通用寄存器存储到段寄存器。
加法add、减法sub、递增INC
段寄存器与寄存器不能计算、内存内存单元与内存单元不能计算。
一、加法指令
二、减法指令
三、递增INC
数值递增+1
格式:INC 寄存器
与and、或or
一、与 and
and:与运算
功能:比较两个值、二进制中不同值中会输出0、相同值中会输出1
使用:
- // 结果会存放到目标内
- and 目标字节,源字节
二、或 or
or:或运算
功能:比较两个值、二进制中不同值中会输出1、相同值中会输出0
使用:
- // 结果会存放到目标内
- or 目标字节,源字节
除div、乘mul
一、除div
div是除法指令,使用div作除法的时候
- 被除数:(默认)放在AX 或 DX和AX中
- 除数:8位或16位,在寄存器或内存单元中
div指令格式
- div 寄存器
- div 内存单元
除法情况
1)被除数/除数=商,余
2)17/8=2,余1
3)结果:高位放余数、低位放商
4)8位除法:16位/8位
5)16位除法:32位/16位
6)AX和DX是固定用来做除法运算的寄存器
二、乘mul
与除法类似需要乘数结果存入AX的高低位
mul 寄存器
mul 内存单元
(1)计算100*10
分析:100和10小于255,可以做8位乘法
程序:
mov al,100
mov bl,10
mul bl
结果: (ax)=1000(03E8H)
(2)计算100*10000
分析:100小于255,可10000大于255,所以
必须做16位乘法
程序:
mov ax,100
mov bx,10000
mul bx
结果: (dx)=000FH,(ax)=4240H,
即:F4240H=1000000
进位加法adc、带借位减法sbb
一、带进位的加减法
1、说明
adc是带进位加法指令 ,它利用了CF位上记录的进位值。
格式:adc 操作对象1,操作对象2
功能:操作对象1=操作对象1+操作对象2+CF
例:adc ax,bx 实现的功能是:(ax)=(ax)+(bx)+CF
二、带借位的减法指令
1、说明
sbb:带借位减法指令
格式:sbb 操作对象1,操作对象2
功能:操作对象1=操作对象1–操作对象2–CF
与sub区别:利用CF位上记录的借位值
比如:sbb ax,bx
实现功能: (ax) = (ax) – (bx) – CF
应用:对任意大的数据进行减法运算
例如:计算003E1000H–00202000H结果放在ax,bx中
mov bx,1000H mov ax,003EH sub bx,2000H sbb ax,0020H