# برنامه نویسی سطح پایین > برنامه نویسی اسمبلی خانواده x86 > سوال: وقفه خواندن عدد از ورودی ؟

## ealvandi

سلام

دوستان کسی وقفه خواندن عدد از ورودی رو میدونه ؟

----------


## tdkhakpur

سلام 
در داخل تالار برنامه نویسی اسمبلی پاپیکی به اسم سورس ماکروهای اسمبلی قرار داده شده که داخل اون بیک ماکرو به اسم GETSTRهست که از ورودی یک رشته رو میگیره میتونید سورس اون رو با قرار دادن یک شرط برای دریافت عدد استفاده کنید.
موفق باشید.

----------


## engehsan

ميتوني رشته عددي رو از ورودي بگيري و به عدد تبديل كني . اين راحت تره

----------


## tdkhakpur

سلام



> ميتوني رشته عددي رو از ورودي بگيري و به عدد تبديل كني . اين راحت تره


دارید سوال میکنید یا جواب میدید.

----------


## mo0ntazer

> سلام
> 
> دوستان کسی وقفه خواندن عدد از ورودی رو میدونه ؟




GET_DATA PROC

MOV AH,09
LEA DX,S1
INT 21H
MOV AH,0AH
LEA DX,NUM_ASC
INT 21H
MOV CH,0
MOV CL,NUM_ASC[1]
LEA BX,NUM_ASC
ADD BX,2
BACK:
MOV POWER,CL
DEC POWER
MOV AH,0
MOV AL,[BX]
AND AL,0FH
CMP POWER,0
JE EW
L:
MUL TEN
DEC POWER
CMP POWER,0
JNE L
O:
ADD NUM,AL
INC BX
LOOP BACK
EW:
ADD NUM,AL
RET
GET_DATA ENDP

تویه num عدد ورودی رو می نویسه

----------


## kiuhnmgtrdcv

با این عدد میگیرید 
mov ah,0ah
lea dx,str
int 21h
بعد به این تابع str2num اینطوری پارامتر انتقال میدید push str
این تابع اینطوری کار میکنه که اول رشته ورودی میبینه که ایا فاصله خالی داره یا نه اگر داره انها رو حذف میکنه بعد کاراکتر به کاراکتر چک میکنه که اصلا عدد هست یا نه (بین 0 تا  9 هست ؟)
بعد میره عدد به وسیله 123=3+20+100 عدد میسازد 

str2num proc
push bp
push bp,sp
pusha
mov bx,0
mov si,[bp+4]
add si,5;
l1:cmp si,' '
 jz l2
 l2:
 dec si
 jmp l1
 l3:
 mov cx,1
 l5:
 cmp [si],'0'
 jb l4
 cmp [si],'9'
 ja l4
 mov ah,[si]
 mov ah,0
 sub ax,'0'
 mul cx
 add bx,ax
 dec si
 mov ax,10
 mul cx
 mov cx,ax
 jmp l5
 l4:
 cmp [si],'-'
 jnz neg bx
 l6:
 mov [bp+4],bx
 popa
 endp
 

من خودم دارم روی تابع بالایی کار میکنم و هنوز ایراداش به طور کامل برطرف نشده

----------


## kiuhnmgtrdcv

ولی برای خواندن اعداد یه رقمی از همون تایع 2 وقفه 10 استفاده کنید

----------

