Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

# Bcd and ascii arithmetic instructions

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Wird geladen in …3
×

1 von 12 Anzeige

# Bcd and ascii arithmetic instructions

8086 Bcd and ascii arithmetic instructions

8086 Bcd and ascii arithmetic instructions

Anzeige
Anzeige

## Weitere Verwandte Inhalte

Anzeige

Anzeige

### Bcd and ascii arithmetic instructions

1. 1. Microprocessor & its Applications Module 3 Continued…… Dr. Girisha G S Dept. of CSE SoE, DSU, Bengaluru 1
2. 2. • BCD AND ASCII ARITHMETIC Instructions - DAA, DAS, AAA, AAD, AAM, AAS Agenda
3. 3. BCD (Binary-Coded Decimal) code : - Four-bit code that represents one of the ten decimal digits from 0 to 9. can not use hex digits A-F - Let us take an Example: consider 10 as a decimal number Its Binary Form will be 1010 Its BCD will be 0001 0000 - BCD can be stored in two way - Unpacked BCD - Packed BCD Packed BCD - Packed BCD data are stored as two digits per byte E.g. 17d is stored as 17= 0001 0111 Unpacked BCD - Unpacked BCD data are stored as one digit per byte E.g. 17d is stored as 01 07 = 0000 0001 0000 0111
4. 4. ASCII Code (American Standard Code for Information Interchange) - ASCII code is a 7 bit code which assigns a binary value to letters, numbers & other characters from 0 to 127 in decimal (00-7F in hexadecimal) - In this code number 0 through 9 are represented as 30 through 39 - letters A through Z are represented as 41H through 5AH - letters a through z are represented as 61H through 7AH Example: 1234 is stored as 31 32 33 34H ASCII for 1 is 31H, for 2 is 32H etc.
5. 5. BCD Arithmetic - 8086 Microprocessor allows arithmetic manipulation of BCD data - This is accomplished by instructions that adjust the numbers for BCD arithmetic - used to correct the BCD addition/subtraction - These instructions do not take any operands. The operand is assumed to be in AL. • DAA (decimal adjust after addition) instruction follows BCD addition. • DAS (decimal adjust after subtraction) instruction follows BCD subtraction
6. 6. DAA: Decimal adjust after addition Syntax: DAA ; AL←AL converted for BCD addition - This instruction is used to convert the result of addition of two packed BCD numbers to a valid BCD number. - The instruction should be issued after an ADD, ADC instruction. The result has to be only in AL register. - On execution of this instruction, - If the lower nibble in AL register is greater than 9 or AF is set, then 6 will be added to the AL register. & the AF is set. - If the upper nibble in AL register is greater than 9 or CF is set, then 60 will be added to the AL register. & the CF is set. Flags affected: AF, CF, PF, ZF Examples: MOV AL,53H ; AL<-53 BCD = 01010011 MOV CL, 29H; CL<-29 BCD= 00101001 ADD AL, CL ; AL<-7CH = 01111100 DAA ; add 6 to AL because C>9 ; AL←7C = 01111100 +6 = 00000110 ; AL←82 (BCD)= 10000010
7. 7. DAS: Decimal adjust after subtraction - This instruction is used to convert the result of subtraction of two packed BCD numbers to a valid BCD number. - The instruction should be issued after an SUB, SBB instruction. The result has to be only in AL register. - On execution of this instruction, - if the lower nibble in AL register is greater than 9 or AF is set, then 6 will be subtracted from the AL register. & the AF is set. - If the result of the upper nibble in AL register is greater than 9 or CF is set, then 60 will be subtracted from the AL register. & the CF is set. Examples: MOV AL,32H ; Load 32 BCD = 00110010 MOV CL, 17H; Load 17 BCD = 00010111 SUB AL, CL ; AL←32H-17H = 00011010 ; AL←1BH DAS ; subtract 6 from AL because B>9 ; AL←1B-6 = 00011010 ; - 00000110 ; AL←15 (BCD) = 00010101
8. 8. ASCII Arithmetic - The ASCII arithmetic instructions function with ASCII-coded numbers. - These numbers range in value from 30H to 39H for the numbers 0-9. - There are four instructions used with ASCII arithmetic operations: • AAA (ASCII adjust after addition) • AAD (ASCII adjust before division) • AAM (ASCII adjust after multiplication) • AAS (ASCII adjust after subtraction)
9. 9. AAA - ASCII adjust after addition - The AAA instruction can be used after addition to get the correct result in unpacked BCD form. - The AAA instruction works only on AL register. The AAA instruction converts the resulting content of AL to unpacked BCD form. - On execution, - this instruction clears the upper nibble of AL, AH register should be cleared before adding. - If lower nibble of AL>9 or AF=1, then it add 6 to the AL register, add 1 to AH register & set AF & CF = 1. - In all other cases, the upper nibble of AL is cleared. - This instruction does not give exact ASCII codes of the SUM, but they can be obtained by adding 3030H to AX. E.g. ADD AL,CL ; Before : AL=34H, ASCII 4 ; CL=38H, ASCII 8 ; After: AL=6CH AAA ; AL = C + 6 ; AL = 12 ; AH=01 ; AL=02
10. 10. AAS: ASCII adjust after subtraction - The AAS instruction can be used after subtraction to get the correct result in unpacked BCD form. - The AAS instruction works only on AL register. The AAS instruction converts the resulting content of AL to unpacked BCD form. - The adjustment is needed only if the result is negative. Example: SUB AL, CL ; Before : AL=38H, ASCII 8; CL=32H, ASCII 2 ; After: AL=06 AAS ; AL=06 (BCD ) ; AX=0006
11. 11. AAD: ASCII adjust before division - The instruction AAD can be used to convert the two unpacked BCD digit in AH & AL register to the equivalent binary number in the register AL. i.e. AAD instruction adjusts the number in AX before dividing two unpacked decimal numbers. - This instruction should be issued before the division (DIV) instruction. - The division instruction will place the quotient in AL register & remainder in the AH register. The upper nibble of the AH & AL are filled with zero. - It works as follows: Multiply AH by 10 (0AH) & add it to AL & set AH to 0 Example: AAD ; Before: AH= 02H , AL=07H, CL=07H ; After: AX=001BH DIV CL
12. 12. AAM: ASCII adjust after multiplication - The instruction AAM can be used to convert the result of multiplication of two valid unpacked BCD number in AX. - This instruction should be issued after multiplication instruction. - It works as follows: AL is divided by 10, quotient is stored in AH & remainder in AL Example: MUL CL ; Before : AL=04H, CL=06H ; After : AX=0018H (24D) AAM ; AX=02 04 (unpacked BCD form)

### Hinweis der Redaktion

• Decimal numbers can be represented in one of the two forms: BCD and ASCII
In BCD, each of the digit of the decimal number is represented by its binary form in 4 bits. In this code each decimal digit is represented by a 4-bit binary number. BCD is a way to express each of the decimal digits with a binary code. But in BCD code only first ten of these are used (0000 to 1001).The remaining six code combinations i.e. 1010 to 1111 are invalid in BCD.
BCD information is stored in either packed or unpacked form(lower 4 bits represent number others are 0
In unpacked BCD a byte is used to contain a number. i.e contains only one digit per byte
In packed BCD a byte has two BCD numbers i.e packs two decimal digits in a byte
• This is a standard set of characters understood by all computers, Each character is assigned a unique 7-bit code. they are mainly used for representing characters, such as characters "a" to "z" and number "0" to "9"
• To perform mathematical operations on BCD and ASCII. Operate with BCD data, used to correct the BCD addition/subtraction
• Used after add or adc to adjust the result back in to packed bcd format. Daa instruction adjust the result to bcd
DAA performs the following operations. The daa instruction works as follows:
• Used after sub or sbb to adjust the result back in to packed bcd format.
• Converts the product available in AL in to unpacked BCD