integer - jnz second mov n1,ax ; assign it to the first...

Info iconThis preview shows pages 1–2. Sign up to view the full content.

View Full Document Right Arrow Icon
.model small .stack 100h . ;jmp start ;**************************** ;* Program to read in two * ;* numbers and add them * ;* and print out the result * ;**************************** .data number db 7 ; string which will store input and output n1 dw 0 ; two input variables n2 dw 0 res dw 0 ; one output variable cr dw 13,10,"$" ; carriage return, line feed .code main proc mov ax,@data mov ds,ax start: mov ah,9 mov dx,offset number mov bx,dx mov bx,5 ; maximum 5 characters to read mov ah,0ah int 21h mov ah,9 ; read in a string from keyboard mov bx,offset number +1 mov cx,00 mov cl,[bx] ; cl now contains number of digits mov ax,00 ; ax will contain the number input usedigit: inc bx ; get next digit shl ax,1 ; multiply by 10 using 2 shift ops and an add. .. mov dx,ax ; . .. x*8 + x*2 = x*10 is the principle. shl ax,1 add ax,dx ; ax is now multiplied by 10 mov dx,00 mov dl,[bx] ; dl has new character sub dx,48 ; subtract 48 = ascii('0') to get number value add ax,dx ; add to ax loop usedigit ; loop statement= jmp if cx > 0 cmp n1,00 ; see if this is first or second number read
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Background image of page 2
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: jnz second mov n1,ax ; assign it to the first variable jmp start ; read in another number second: mov n2,ax ; or assign to second variable and continue print_cr: mov ah,09 mov dx,offset cr ; print out a carriage return character int 21h addnos: mov ax,n1 ; move numbers to registers . .. mov bx,n2 add ax,bx ; . ..and add mov res,ax ; store the result mov cx,00 setup_string: mov bx,offset number+7 ; put a $ at end of buffer. mov bx,'$' ; we will fill buffer from back forwards dec bx mov ax,res convert_decimal: mov dx,10 div dl ; divide by 10 add ah,48 ; convert remainder to character mov [bx],ah ; and move to buffer for output dec bx mov ah,00 ; quotient becomes new value cmp ax,00 ; if we haven't got all digits divide again jnz convert_decimal printout: mov dx,bx inc dx ; we decremented once too many, go forward one. mov ah,09 int 21h ; output the string close: mov ah,4ch mov al,00 int 21h ; end program main endp end main e...
View Full Document

This note was uploaded on 11/06/2010 for the course UBIT 411 taught by Professor Saleemelahi during the Spring '10 term at University of Karachi.

Page1 / 2

integer - jnz second mov n1,ax ; assign it to the first...

This preview shows document pages 1 - 2. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online