حمیده ایرانی
پنج شنبه 05 فروردین 1389, 11:49 صبح
سلام
من کد زیر را برای گرفتن یک رشته عددی وتبدیل آن به عدد صحیح و قرار دادن در ثبات ax
و چاپ عدد موجود در ax نوشتم ولی درست کار نمکند مشکل چیست؟
datasg segment 'data'
buf_in label byte
buf_len db 20
real_len dw ?
data2 db 20 dup(' ')
data1 db 10 dup(' ')
msg1 db 'enter a number:','$'
msg2 db 'factorial is:','$'
result dw ?
datasg ends
codesg segment 'code'
assume cs:codesg,ds:datasg,ss:stacksg
main proc far
mov ax,datasg
mov ds,ax
mov dx, offset msg1
mov ah,09h
int 21h
;;;;;;read string;;;;;;;;;;;;
lea dx,buf_in
mov ah,0ah
int 21h
;;;convert string to number;;
dec real_len
mov si,-1
mov ax,0
mov cl,10
mov bh,0
back:inc si
mov bl,data2[si]
sub bl,30h
mul cl
add ax,bx
cmp si,real_len
jl back
mov result,ax
mov dx,0
mov cx,10
mov di,0
mov si,0
back1:div cx
inc di
cmp ax,0
jg back1
mov si,di
dec di
mov ax,result
mov cx,10
back2:mov dx,0
div cx
or dl,30h
mov data1[di],dl
dec di
cmp ax,0
jg back2
mov data1[si],'$'
mov dh,3
mov dl,0
mov bh,0
mov ah,2h
int 10h
mov dx,offset msg2
mov ah,09h
int 21h
lea dx,data1
mov ah,09h
int 21h
;;;;;;;;;;;;;END;;;;;;;;;;;;;;;
mov ah,8h
int 21h
mov ah,4ch
int 21h
main endp
codesg ends
end main
end
من کد زیر را برای گرفتن یک رشته عددی وتبدیل آن به عدد صحیح و قرار دادن در ثبات ax
و چاپ عدد موجود در ax نوشتم ولی درست کار نمکند مشکل چیست؟
datasg segment 'data'
buf_in label byte
buf_len db 20
real_len dw ?
data2 db 20 dup(' ')
data1 db 10 dup(' ')
msg1 db 'enter a number:','$'
msg2 db 'factorial is:','$'
result dw ?
datasg ends
codesg segment 'code'
assume cs:codesg,ds:datasg,ss:stacksg
main proc far
mov ax,datasg
mov ds,ax
mov dx, offset msg1
mov ah,09h
int 21h
;;;;;;read string;;;;;;;;;;;;
lea dx,buf_in
mov ah,0ah
int 21h
;;;convert string to number;;
dec real_len
mov si,-1
mov ax,0
mov cl,10
mov bh,0
back:inc si
mov bl,data2[si]
sub bl,30h
mul cl
add ax,bx
cmp si,real_len
jl back
mov result,ax
mov dx,0
mov cx,10
mov di,0
mov si,0
back1:div cx
inc di
cmp ax,0
jg back1
mov si,di
dec di
mov ax,result
mov cx,10
back2:mov dx,0
div cx
or dl,30h
mov data1[di],dl
dec di
cmp ax,0
jg back2
mov data1[si],'$'
mov dh,3
mov dl,0
mov bh,0
mov ah,2h
int 10h
mov dx,offset msg2
mov ah,09h
int 21h
lea dx,data1
mov ah,09h
int 21h
;;;;;;;;;;;;;END;;;;;;;;;;;;;;;
mov ah,8h
int 21h
mov ah,4ch
int 21h
main endp
codesg ends
end main
end