8086汇编——课堂笔记整理3

本文详细解析了80x86汇编语言中的关键指令集,包括乘法(MUL/IMUL)、除法(DIV/IDIV)、算术运算调整指令(AAA/AAS/AAM/AAD/DAA/DAS)等,并通过具体实例演示了这些指令的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

STD set Director  将DF=1

MOVSB ES:[DI]=DS:[SI]

MUL IMUL

MUL SRC 无符号    IMUL SRC 有符号

MUL/IMUL  reg/mem8  ->  AX<-AL*reg/mem8

MUL/IMUL  reg/mem16  ->  DX:AX<-AX*reg/mem16

MUL/IMUL  reg/mem32  ->  EDX:EAX<-EAX*reg/mem32

IMUL: 改变CF,OF;CF=OF=1,高位不为0;CF=OF=0,高位为0,无符号数/有符号数没有进位

IMUL REG,SRC,IMM;  REG<-REG*sign-extened IMM

16/32,16/32,8  ;  16,16,16(->extened)  ;  32,32,16(->extened)

DIV IDIV

DIV SRC;无符号          IDIV SRC ;有符号

DIV/IDIV reg/mem8 ;AX/reg/mem8,余数->AH,商->AL

DIV/IDIV reg/mem16;  DX:AX/reg/mem16,余数->DX,商->AX

DIV/IDIV reg/mem32;  EDX:EAX/reg/mem32,余数->EDX,商->EAX

expend 被除数

CBW:AL->AX

CWD:AX->DX:AX

CWDE:AX->EAX

CDQ:EAX->EDX:EAX

e,g,1

<c>unsigned A=1020,B=1000;unsigned N1,N2;N1=A/B,N2=A%B

<a>

A WORD 1020

B WORD 1000

N1 WORD ?

N2 WORD ?

MOV AX A

MOV DX,0;将DX初始化为0

CWD

IDIV B

MOV N1,AX

MOV N2,DX

e.g.2

suppose X,Y,Z,V are 16-bit signed number,calculate (V-(X*Y+Z))/X.quotient in AX,remainder in DX

MOV AX,X

IMUL Y

MOV BX,AX

MOV CX,DX

MOV AX,Z

CWD

ADD BX,AX

ADC CX,DX

MOV AX,V

CWD

SUB AX,BX

SBB DX,CX

IDIV X

 

AAA

将2个unpacked BCD码的和生成一个unpacked BCD码

MOV AL,09H

MOV BL,04H

ADD AL,BL

AAA

改变AF:低8位向高8位进位,AF=1;AH<-(AH)+1

 

AAS

MOV AL,0106H

MOV BL,7H

SUB AL,BL

AAS

改变AF:低8位襄高8位借位,AF=1;AH<-(AH)-1

 

AAM

MOV AL,09H

MOV BL,07H

MUL BL

AAM

 

AAD

MOV AX,0208H

MOV BL,04H

AAD;AL<-(AL)+(AH)*10

DIV AX,BL

 

DAA

MOV AL,54H

MOV BL,43H

ADD AL,BL

DAA

 

DAS

A=4612;B=3576

MOV AL,A

SUB AL,B

DAS

MOV B,AL

MOV AL,A+1

SBB AL,B+1

DAS

MOV B+1,AL

 

转载于:https://www.cnblogs.com/HackHer/p/5419545.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值