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

8089汇编 运算符指令_指令格式

 mov 操作数据

段寄存器不能直接存数据、需要通过通用寄存器存储数据、在通过通用寄存器存储到段寄存器。

8089汇编 运算符指令_数据_02

 加法add、减法sub、递增INC

段寄存器与寄存器不能计算、内存内存单元与内存单元不能计算。

一、加法指令

8089汇编 运算符指令_与运算_03

 二、减法指令

8089汇编 运算符指令_与运算_04

三、递增INC

数值递增+1

格式:INC 寄存器

与and、或or

一、与 and

and:与运算
功能:比较两个值、二进制中不同值中会输出0、相同值中会输出1
使用:

  • // 结果会存放到目标内
  • and 目标字节,源字节

8089汇编 运算符指令_寄存器_05

 二、或 or

or:或运算
功能:比较两个值、二进制中不同值中会输出1、相同值中会输出0
使用:

  • // 结果会存放到目标内
  • or 目标字节,源字节

8089汇编 运算符指令_寄存器_06

 除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是固定用来做除法运算的寄存器

8089汇编 运算符指令_数据_07

8089汇编 运算符指令_寄存器_08

 二、乘mul

与除法类似需要乘数结果存入AX的高低位

mul 寄存器
mul 内存单元

8089汇编 运算符指令_指令格式_09

(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

8089汇编 运算符指令_指令格式_10

 二、带借位的减法指令

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