Wednesday, February 2, 2011

BCD Addition

Share Orkut
print macro msg lea dx,msg mov ah,09h int 21h endm read macro msg1,l1,j1 xor cx,cx mov si,offset msg1 l1: mov ah,01 int 21h cmp al,0dh je j1 sub ax,30h mov [si],al inc si inc cx jmp l1 j1: nop endm printnum macro msg2,msg3,l2 xor cx,cx mov cx,msg3 mov si,offset msg2 mov al,[si] cmp al,00 jne l2 inc si dec cx l2: mov dl,[si] add dl,30h mov ah,02h int 21h inc si loop l2 endm .model small .stack 100h .data str1 db 10,13,'Enter a number(BCD) $' str2 db 10,13,'Sum(BCD): $' num1 db 20 dup(0) num2 db 20 dup(0) sum db 20 dup(0) len1 dw 0 len2 dw 0 len3 dw 0 .code mov ax,@data mov ds,ax print str1 read num1,loop1,jump1 mov len1,cx print str1 read num2,loop2,jump2 mov len2,cx mov si,len1 mov di,len2 mov ax,len1 cmp ax,len2 jc jump3 mov bx,len1 mov cx,len2 jmp jump4 jump3: mov bx,len2 mov cx,len1 jump4: inc bx mov len3,bx clc loop3: dec si dec di dec bx mov al,num1[si] adc al,num2[di] aaa mov sum[bx],al loop loop3 mov al,00 rcl al,01 mov cx,si cmp cx,00 je jump5 rcr al,01 loop4: dec si dec bx mov al,num1[si] adc al,00 aaa mov sum[bx],al loop loop4 jmp jump6 jump5: mov cx,di cmp cx,00 je jump7 rcr al,01 loop5: dec di dec bx mov al,num2[di] adc al,00 aaa mov sum[bx],al loop loop5 jump6: mov al,00 rcl al,01 jump7: dec bx mov sum[bx],al print str2 printnum sum,len3,loop6 mov ah,4ch int 21h end

No comments:

Post a Comment