سلام دوستان
من میخوام در اسمبلی برنامه جمع دو عدد چند رقمی را بنویسم باید چیکار کنم
اگه میشه راهنماییم کنید
برنامه تکرقمیش رو نوشتم و لی برای چند رقمیش رو نمی دونم باید چیکار کنم ممنون میشم
با تشکر
.DATA
number DB 5
DB ?
DB 5 DUP (?)
.CODE
get_number:
PUSH AX
PUSH CX
PUSH DX
MOV AH, 0ah
LEA DX, number
INT 21h
MOV BX, -1
MOV CL, number[1]
CMP CL, 0
JZ next_4
MOV AH, 2
MOV DL, 13
INT 21h
MOV DL, 10
INT 21h
MOV CH, 0
LEA SI, number[2]
MOV DI, 10
MOV BX, 0
loop_2:
MOV AL, [SI]
CMP AL, "0"
JB next_3
CMP AL, "9"
JA next_3
SUB AL, "0"
MOV AH, 0
XCHG AX, BX
MUL DI
ADD BX, AX
next_3:
INC SI
LOOP loop_2
next_4:
POP DX
POP CX
POP AX
RET
CALL get_number
MOV AX, BX
CALL get_number
ADD AX, BX
print_dec_ax:
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV CX, 0
MOV BX, 10
loop_1:
MOV DX, 0
DIV BX
PUSH DX
INC CX
CMP AX, 0
JNE loop_1
MOV AH, 2
loop_2:
POP DX
ADD DL, "0"
INT 21H
LOOP loop_2
POP DX
POP CX
POP BX
POP AX
RET
MOV AX, 12345
CALL print_dec_ax
دوست گرامی خیلی کمکم کردید
فقط نمیدونم چرا لینکهات برام باز نمیشه اگه میشه دوباره برام بزار
http://forum.majidonline.com/showthread.php?t=143628
راستی من نمی خواستم از pop , push استفاده کنم نمی دونید چیکار کنم اگه میشه بیشتر راهنماییم کنید ممنون
.MODEL SMALL
.DATA
msg1 DB 13, 10, "Please enter first number : $"
msg2 DB 13, 10, "Please enter second number : $"
msg3 DB 13, 10, "Press any key to continue...","$"
n1 DW ?
number DB 5
DB ?
DB 5 DUP (?)
.CODE
.STARTUP
MOV AH, 9
LEA DX, msg1
INT 21h
CALL get_number
MOV n1, BX
MOV AH, 9
LEA DX, msg2
INT 21h
CALL get_number
MOV AX, n1
ADD AX, BX
MOV CX, 0
MOV BX, 10
LEA SI, number + 2
loop_1:
MOV DX, 0
DIV BX
MOV [SI], DL
INC SI
INC CX
CMP AX, 0
JNE loop_1
MOV AH, 2
loop_2:
DEC SI
MOV DL, [SI]
ADD DL, "0"
INT 21H
LOOP loop_2
MOV AH, 9
LEA DX, msg3
INT 21h
MOV AH, 8
INT 21h
.EXIT
get_number:
MOV AH, 0Ah
LEA DX, number
INT 21h
MOV BX, 0
MOV CL, number[1]
CMP CL, 0
JZ next_2
MOV AH, 2
MOV DL, 13
INT 21h
MOV DL, 10
INT 21h
MOV CH, 0
LEA SI, number[2]
MOV DI, 10
MOV BX, 0
loop_3:
MOV AL, [SI]
CMP AL, "0"
JB next_1
CMP AL, "9"
JA next_1
SUB AL, "0"
MOV AH, 0
XCHG AX, BX
MUL DI
ADD BX, AX
next_1:
INC SI
LOOP loop_3
next_2:
RET
.STACK
END
;-------------------------------------------------
stseg segment
dw 16 dup(0)
stseg ends
;-------------------------------------------------
dtseg segment
msg1 DB 13, 10, "Please enter first number : $"
msg2 DB 13, 10, "Please enter second number : $"
msg3 DB 13, 10, "Press any key to continue...","$"
n1 DW ?
number DB 5
DB ?
DB 5 DUP (?)
dtseg ends
;-------------------------------------------------
cdseg segment
main proc far
assume cs:cdseg , ds:dtseg , ss:stseg
mov ax,dtseg
mov ds,ax
;start code
MOV AH, 9
LEA DX, msg1
INT 21h
CALL get_number
MOV n1, BX
MOV AH, 9
LEA DX, msg2
INT 21h
CALL get_number
MOV AX, n1
ADD AX, BX
MOV CX, 0
MOV BX, 10
LEA SI, number + 2
loop_1:
MOV DX, 0
DIV BX
MOV [SI], DL
INC SI
INC CX
CMP AX, 0
JNE loop_1
MOV AH, 2
loop_2:
DEC SI
MOV DL, [SI]
ADD DL, "0"
INT 21H
LOOP loop_2
MOV AH, 9
LEA DX, msg3
INT 21h
MOV AH, 8
INT 21h
.EXIT
get_number:
MOV AH, 0Ah
LEA DX, number
INT 21h
MOV BX, 0
MOV CL, number[1]
CMP CL, 0
JZ next_2
MOV AH, 2
MOV DL, 13
INT 21h
MOV DL, 10
INT 21h
MOV CH, 0
LEA SI, number[2]
MOV DI, 10
MOV BX, 0
loop_3:
MOV AL, [SI]
CMP AL, "0"
JB next_1
CMP AL, "9"
JA next_1
SUB AL, "0"
MOV AH, 0
XCHG AX, BX
MUL DI
ADD BX, AX
next_1:
INC SI
LOOP loop_3
next_2:
RET
; exit program
;end code
mov ah,4cH
int 21H
main endp
cdseg ends
end main
1-دستورleaچیکار می کنه
2-XCHG چیکار میکنه
ممنون
number DW 1234
.
.
.
LEA BX, number
MOV AX, 5678
MOV [BX], AX
ببخشید من زیاد مزاحم میشم
در قسمت get numbe و جاهایی دیگر این کد هارو داریم کارشون چی هستش
[MOV CL, number[1
یا
[LEA SI, number[2
lea رو فهمیدم این عدد 1 و 2 رو نمی فهمم برای چی هستش
بازم از شما تشکر می کنم
ch1 DB "Y"
msg DB "TEST"
MOV DL, msg[2]
ali DB "A"
saeid DB "SU"
king DB 3 DUP (?)
number DB 123
msg DB "XYZ"
A, S, U, ?, ?, ?, 123, X, Y, Z
number DB 5
DB ?
DB 5 DUP (?)