Professional Documents
Culture Documents
ASCII Adjust & Decimal Adjust
ASCII Adjust & Decimal Adjust
DECIMAL ADJUST
INSTRUCTIONS
AAA - ASCII Adjust After Addition AAS - ASCII Adjust After Subtraction AAM - ASCII Adjust After Multiply AAD - ASCII Adjust Before Division DAA - Decimal Adjust for Addition DAS - Decimal Adjust for Subtraction
INTRODUCTION
The PC supports BCD format, Uses of BCD 1)No loss of precision 2)Simpler to perform arithmetic operation on small values from keyboard BCD can be stored in two way: Unpacked BCD Packed BCD
3
.model small .data b1 dw 38h b2 dw 34h .code mov ax,@data mov ds,ax mov ax,b1 ;moving unpacked BCD into ax mov bx,b2 ;moving unpacked BCD into bx add ax,bx aaa ;adjusting unpacked BCD after addition or ax,3030h end
Operation 2: Clear left nibble in AL. Operation 3: Subtracts 1 from AH Operation 4: Set Carry and AuxilaryCarry
10
Example : d1 contains 34h , d2 contains 38h of byte type Ax AF Mov AL, d1 ; 0034 Sub AL, d2; 00fc 1 AAS ; ff06 1 since the rightmost digit of AL is c , subtract 6 from AL Subtract 1 from ah, set AF and CF flags The answer is -4, is ff06 in 10s complement
11
.model small .data b1 dw 38h b2 dw 34h .code mov ax,@data mov ds,ax mov ax,b1 mov bx,b2 sub ax,bx aas or ax,3030h end
12
For multiplication and Division of ASCII numbers require that the numbers first be converted into unpacked BCD format. Before Multiplication First clear the leftmost nibble in each Byte. After Multiplication AAM performs the following operations 1) Divides AL value by 10 (0AH) 2) Stores Quotient in AH 3) Store Remainder in AL
13
Example: AL contains 35H and CL contains 39H Instruction comment AX CL and CL, 0Fh; Convert CL to 09 0035 39 and AL,0Fh; Convert AL to 05 0005 09 mul CL; Multiply AL by CL 002D AAM ; Convert to unpacked 0405 BCD Or AX,3030h; covert to ASCII 3435
14
Mul operation generates 45 (002Dh) in AX AAM divides this value by 10, so quotient of 04 in AH and remainder of 05 in AL OR instruction converts the unpacked BCD to ASCII format
15
.model small .data b1 dw 39h ; 9 in ASCII Format b2 dw 35h ; 5 in ASCII Format .code mov ax,@data mov ds,ax mov ax,b1 ;AX=0039h and AL,0fh ;AX=0009h mov bx,b2 ;BX=0035h and bl,0fh ;BX=0005h mul bx ;AX=002Dh aam or ax,3030h end
16
AAD allows for a 2-Byte Dividend in AX. The divisor can be only a single Byte(0-9) Before Division First clear the leftmost nibble in each Byte. Operations done by AAD instruction 1) AAD multiplies the AH by 10(0Ah). 2) Then adds the product to AL and clears the AH After AAD , division is performed.
17
Example: AX contains 3238 (28) - Dividend CL contains 37 (07) Divisor Instruction comment AX CL and CL,0Fh; convert to unpacked 3238 07 BCD and AX,0F0Fh; convert to unpacked 0208 07 BCD AAD; convert to binary 001C div CL; divide by 7 0004
18
AAD multiplies the AH by 10(0Ah) Adds the product 20(14h) to the AL and clears the AH The result is 001Ch, is hex representation of decimal 28 Then division is performed. Remainder stored in AH, Quotient stored in AL
19
model small .data b1 dw 3238h ; 28 in ASCII Format b2 db 37h ; 7 in ASCII Format .code mov ax,@data mov ds,ax mov ax,b1 ;AX=3238h and ax,0f0fh ;AX=0208h mov cl,b2 ;CL=37h and cl,0fh ;CL=07h aad ; AX= 001c div cl ; AX=0004 or ax,3030h; AX=3034 end
20
Decimal Adjust
To adjust the result of packed BCD numbers which stored in AL. DAA - Decimal Adjust for Addition DAS - Decimal Adjust for Subtraction
21
22
Operation 2: If AL contains value > 99 or Carry=1 then ADD 60 to AL and set Carry =1 Otherwise AuxilaryCarry=0 ,carry=0
23
45h 45h Comment AL ; AL=AL+BL 8Ah ; Adjust packed BCD 90h addition
24
25
.model small .data d1 dw 45h ;moving 45 as packed BCD d2 dw 45h ;moving 45 as packed BCD .code mov ax,@data mov ds,ax mov ax,d1 mov bx,d2 add ax,bx daa ;adjusting the packed BCD after addition end
26
27
AL contains 80h BL contains 49h Instruction Comment AL SUB AL,BL ; AL=AL-BL 37h DAS ; Adjust packed BCD 31h Subtraction
28
.model small .data d1 dw 57h d2 dw 48h .code mov ax,@data mov ds,ax mov ax,d1 ;moving 45 as packed BCD mov bx,d2 ;moving 45 as packed BCD sub ax,bx das ; adjusting the packed BCD after subraction end
29
THANK U
30