ورود

View Full Version : سوال: ascToint



maahsa
یک شنبه 01 بهمن 1391, 19:49 عصر
سلام خسته نباشید!:)
من یه برنامه دارم مینویسم string وارد شده از ورودی را به عدد تبدیل کنه کدشو کامل نوشتم ولی وقتی میخواد خروجی را نشون بده به جای نشون دادن عدد یه سربی کارامترای نامربوط نشون میده !
نمیدونم مشکلش چیه خودم حدس میزنم از MOV [BX]+2,AX باشه
میشه دوستان اشکالشو بگید؟

stseg segment
db 64 dup(?)
stseg ends
;;;;;;;;;;;;;;;
dtseg segment
data1 db 'please enter number:','$'
data2 db 6,?,6 dup(?)
data3 db cr,lf,6 dup(?),'$'
TEN DW 10

dtseg ends
cr equ 0dh
lf equ 0ah
;;;;;;;;;;;;;;;
cdseg segment
main proc far
assume cs:cdseg,ds:dtseg,ss:stseg
mov ax,dtseg
mov ds,ax
MOV BX,OFFSET data3
call display1
call get_data
call convert
MOV [BX]+2,AX

call display2
mov ah,04ch
int 21h
main endp
;;;;;;;;;;;;;;;;;

DISPLAY1 PROC
PUSH AX
PUSH DX
MOV AH,09H
MOV DX,OFFSET data1
INT 21H
POP DX
POP AX
RET
DISPLAY1 ENDP
;;;;;;;;;;;;;;;;;
GET_DATA PROC
PUSH AX
PUSH DX
MOV AH,0AH
MOV DX,OFFSET data2
INT 21H
POP DX
POP AX
RET
GET_DATA ENDP
;;;;;;;;;;;;;;;;;
Convert PROC
PUSH BX
PUSH CX
PUSH DX
MOV BX,OFFSET data2
MOV CL,[BX+1]
MOV CH,0
MOV AX,0
MOV DH,0
L1: MOV DL,[BX+2]
SUB DL,30H
PUSH DX
MUL TEN
POP DX
ADD AX,DX
INC BX
LOOP L1
POP DX
POP CX
POP BX
RET
Convert ENDP
;;;;;;;;;;;;;;;;;;;
DISPLAY2 PROC
PUSH DX
PUSH AX
MOV AH,09H
MOV DX,OFFSET data3
INT 21H
POP AX
POP DX
RET
;;;;;;;;;;;;;;;;;;;;
cdseg ends
end main

rayarasool
یک شنبه 01 بهمن 1391, 21:27 عصر
سلام

اگه میخواهید که اسکی رو به عدد تبدیل کنه و در یه جا ذخیره کنه ک دیگه نمیشه اون عدد رو چاپ کرد .

این سوال چاپ کردن نداره .

مگه اینکه محتوای حافظه رو چاپ کنی. که دوستان در پست هایی قبلی که مدت زیادی هم نیست که ازش گذشته کدشو گذاشتن .

اما اون چیزی که من فکر میکنم اینه که دیگه چاپ نداره!!

maahsa
یک شنبه 01 بهمن 1391, 21:51 عصر
سلام

اگه میخواهید که اسکی رو به عدد تبدیل کنه و در یه جا ذخیره کنه ک دیگه نمیشه اون عدد رو چاپ کرد .

این سوال چاپ کردن نداره .

مگه اینکه محتوای حافظه رو چاپ کنی. که دوستان در پست هایی قبلی که مدت زیادی هم نیست که ازش گذشته کدشو گذاشتن .

اما اون چیزی که من فکر میکنم اینه که دیگه چاپ نداره!!

ینی به جای قسمت mov [bx]+2,ax چیکار باید بکنم؟؟؟؟؟؟

rayarasool
دوشنبه 02 بهمن 1391, 20:19 عصر
نه منظورم اینه که
وقتی یه رشته را از اسکی به عدد تبدیل میکنید و عدد رو در یک رجیستر ذخیره میکنید.
دیگه نمیشه اون رو با وقفه چاپ کرد .
برا چاپش دوباره باید اون رو به اسکی تبدیل کنید تا درست چاپ شه .
البته نظر من اینه (اگه دوستان فکر میکنند اشتباه میکنم خواهشا بگند تا هم من از اشتباه در بیام هم سوال کننده !!)