PDA

View Full Version : نمایش عدد در خروجی



amir_br0k3n
پنج شنبه 28 مهر 1384, 16:12 عصر
سلام ، من یه برنامه واسه نمایش اعداد اول نوشتم فقط مشکلم خروجی هست
وقتی از


MOV AH,02
MOV DL,BL
INT 21H

استفاده میکنم معادل کاراکتری عدد رو میده .
حالا ، آیا وقفه ای هست که بتونه عدد بده یا باید این عدد رو یه جوری به رشته تبدیل کرد ؟
برنامه هم باید 16 بیتی باشه و نمیشه از Include استفاده کرد

مرسی

PalizeSoftware
پنج شنبه 28 مهر 1384, 19:48 عصر
سلام
اگه شما محتویات یه رجیستر 8 بیتی رو با کد 30h‌ جمع کنی اون رو به کاراکتر عدد تبدیل کردی، البته با ذکر این مطلب که عدد شما بین 0 تا 9 باشد. و برای رجیسترهای 16 بیتی نیز با همین ترفند
برنامه زیر نمایش اعداد اول 1 تا 100 است و ببینید که چگونه نمایش می‌دهد



.MODEL SMALL ;COM file must have 1 segment
.CODE ;Begin of Code Segment
ORG 100h ;Start Address in COM file at Seg:100h
START PROC
jmp init ;jmp to Main Section
MODCNT db ?
N1 db 10,13,"0001$"
newline db 10,13,"$" ;Create new line
numstr db 4 dup("$") ;Buffer for get number
nstr db 6 dup('$') ;buffer for store Integer number to char.
init: ;Main Section
MOV CX,1 ;set first number (to 100)
L1CX:
PUSH CX
MOV MODCNT,0
L2CX:
PUSH CX
MOV AX,CX
DIV CL
CMP AH,0
JNE LMOD
INC MODCNT
LMOD:
LOOP L2CX
POP CX
CMP MODCNT,2
JNLE NOAVAL
MOV AX,CX
MOV DI,offset nstr
CALL DEC3AX

mov dx,offset nstr
call print
NOAVAL:
POP CX
INC CX
CMP CX,20
JLE L1CX
ret

START ENDP
;================================ TOTAL PROCEDURE ==============================
PRINT PROC
MOV AH,9
INT 21H
RET
PRINT ENDP
;--------------------- CONVERT INTEGER NUMBER TO ASCII NUMBER ------------------
DEC3AX PROC
PUSH BX
PUSH CX
PUSH DX
MOV BX,3
MOV CX,10
D4_1:
SUB DX,DX
DIV CX
OR DL,"0"
MOV BYTE PTR [BX+DI-1],DL
DEC BX
JNZ D4_1
ADD DI,3
POP DX
POP CX
POP BX
RET
DEC3AX ENDP
END START

Malakootee
جمعه 08 آذر 1387, 12:49 عصر
سلام ، من یه برنامه واسه نمایش اعداد اول نوشتم فقط مشکلم خروجی هست
وقتی از


MOV AH,02
MOV DL,BL
INT 21H

استفاده میکنم معادل کاراکتری عدد رو میده .
حالا ، آیا وقفه ای هست که بتونه عدد بده یا باید این عدد رو یه جوری به رشته تبدیل کرد ؟
برنامه هم باید 16 بیتی باشه و نمیشه از Include استفاده کرد

مرسی

سلام
درسته دیره ولی خب شاید به درد بقیه بخوره
شما باید از اینتراپت 9h استفاده کنی و چاپ رشته
یعنی بجای dl از dx استفاده کنین و bl رو هم که رشتتون باید بزارین

موفق باشین