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

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