سلام دوستان موضوع برنامه دو عدد یک رقمی بگیره و با هم جمع بزنه واینتر را زدیم جواب رانشان بده.
Printable View
سلام دوستان موضوع برنامه دو عدد یک رقمی بگیره و با هم جمع بزنه واینتر را زدیم جواب رانشان بده.
نقل قول:کد:
title 'add two number.asm'
;------------------------------------------------------
.model small
.stack 64
;------------------------------------------------------
.data
msg1 db 'ENTER number one :','$'
msg2 db 'ENTER NUMBER two :','$'
msg3 db 'THE SUM IS:','$'
string1 db 6 dup(' '),'$'
sign dw ?
count db 0
number dw ?
max1 db 5
len1 db ?
buffer1 db 5 dup(' ')
dolar db '$'
max2 db 5
len2 db ?
buffer2 db 5 dup(' ')
num1 dw 0
num2 dw 0
sum1 dw 0
sum2 db 10 dup(' ')
lensum db 0
;----------------------------------------------------
.code
main proc far
mov ax,@data
mov ds,ax
mov dx,0404h
call clear ;clear
;******************************************
mov dx,0206h
call cursor ;cursor
lea dx,msg1
call print ;print
Lea dx,max1
call read ;raed
mov ah,0
mov al,len1
cmp lensum,al
jbe a1
a1: MOV lensum,al
;******************************************
mov dx,0406h
call cursor ;cursor
lea dx,msg2
call print ;print
Lea dx,max2
call read ;read
mov al,len2
cmp leNSUM,al
jbe a2
a2: mov lensum,al
;*****************************************
lea bx,buffer1
call atoi
mov num1,ax
lea bx,buffer2
call atoi
mov num2,ax
mov cx,num1
add num2,cx
call itoa
mov ax,4c00h
int 21h
main endp
;----------------------------atoi----------------------
atoi proc near
l1: cmp byte ptr[bx],' '
jne l2
inc bx
jmp l1
l2: mov sign,1
cmp byte ptr[bx],'+'
je l3
cmp byte ptr[bx],'-'
jne l4
mov sign,-1
l3: inc bx
l4: mov ax,0
mov count,0
l5: cmp byte ptr[bx],'0'
jl l6
cmp byte ptr[bx],'9'
jg l6
mov cx,10
mul cx
mov cl,[bx]
and cx,000fh
add ax,cx
inc count
inc bx
jmp l5
l6: imul sign
ret
atoi endp
;--------------------------itoa-----------------------
itoa proc near
mov ax,num2
mov sign,' '
lea bx,string1
mov bh,0
add bl,lensum
cmp ax,0
jge loop1
mov sign,'-'
neg ax ;ax>=0
loop1: mov cx,10
loop2: mov dx,0
div cx
add dl,30h
mov [bx],dl
dec bx
cmp ax,0
jne loop2
mov cx,sign
mov [bx],cl
mov dx,0608h
call cursor ;cursor
lea DX,msg3
call print
lea dx,string1
call print ;print
ret
itoa endp
;-------------------------CLEAr----------------------------
clear proc near
mov ax,0600h
mov bh,14
mov cl,0000h
mov dx,184fh
int 10h
ret
clear endp
;-------------------------CURSOR----------------------------
cursor proc near
mov ah,02h
mov bh,00h
int 10h
ret
cursor endp
;--------------------------PRINT-----------------------------
print proc near
mov ah,09h
int 21h
ret
print endp
;--------------------------READ------------------------------
read proc near
mov ah,0ah
int 21h
ret
read endp
end main
این برنامه مربوط به اوایل دوران دانشجوییم هست. اکثر دستورا هم یادم رفته.
یه ترم خوندیم این زبونو بعدم دیگه باهاش وداع کردیم.
سلام به تمامی بچه های خوب و زحمت کش زبان ماشین(اسمبلی) یه سوال داشتم
برنامه ای بنویسید که دو عدد A و B با هم مقایسه کنه یکبار با علامت و یکبار بی علامت چنانچه این این دو عدد با هم برابر بودن پیغام INPORTAN چاپ کند؟
اگر کسی برنامه این دستور داره لطف کنه بهم بده ممنونش میشم واقعا لطف بزرگی بهم میکنید.
موفق باشید
ارادتمند شما مهدی