PDA

View Full Version : سوال: مشکل در کد برنامه



iran_sky
جمعه 17 دی 1389, 18:11 عصر
با سلام خدمت دوستان
دوستان این قسمت کدها از برنامه calculatur نرم افزار emu8086 است
ممنون میشم کمکم کنید که مفهوم این قسمت کدها رو متوجه بشم

کد 1:
PUTC MACRO char
PUSH AX
MOV AL, char
MOV AH, 0Eh
INT 10h
POP AX
ENDM

کد 2:
; gets the multi-digit SIGNED number from the keyboard,
; and stores the result in CX register:
SCAN_NUM PROC NEAR
PUSH DX
PUSH AX
PUSH SI

MOV CX, 0
; reset flag:
MOV CS:make_minus, 0
کد 3:
CMP AL, 8 ; 'BACKSPACE' pressed?
JNE backspace_checked
MOV DX, 0 ; remove last digit by
MOV AX, CX ; division:
DIV CS:ten ; AX = DX:AX / 10 (DX-rem).
MOV CX, AX
PUTC ' ' ; clear position.
PUTC 8 ; backspace again.
JMP next_digit
کد 4:
; multiply CX by 10 (first time the result is zero)
PUSH AX
MOV AX, CX
MUL CS:ten ; DX:AX = AX*10
MOV CX, AX
POP AX
کد 5:
too_big:
MOV AX, CX
DIV CS:ten ; reverse last DX:AX = AX*10, make AX = DX:AX / 10
MOV CX, AX
PUTC 8 ; backspace.
PUTC ' ' ; clear last entered digit.
PUTC 8 ; backspace again.
JMP next_digit ; wait for Enter/Backspace.
کد 6:
end_print:
POP DX
POP CX
POP BX
POP AX
RET
PRINT_NUM_UNS ENDP

tdkhakpur
جمعه 17 دی 1389, 22:26 عصر
ممنون میشم کمکم کنید که مفهوم این قسمت کدها رو متوجه بشم


کدوم قسمتها رو!
همه این کدها ماکرو بوده و علاوه بر اسم نوع کارشان هم بصورت لاتین نوشته شده..

iran_sky
شنبه 18 دی 1389, 07:13 صبح
دوست عزیز
منظور من اینکه این دستورات چه کاری انجام میده
کد 1:

PUTC MACRO char
PUSH AX
MOV AL, char
MOV AH, 0Eh
INT 10h
POP AX
ENDM
کد 2:

; multiply CX by 10 (first time the result is zero)
PUSH AX
MOV AX, CX
MUL CS:ten ; DX:AX = AX*10
MOV CX, AX
POP AX
کد 3:

too_big:
MOV AX, CX
DIV CS:ten ; reverse last DX:AX = AX*10, make AX = DX:AX / 10
MOV CX, AX
PUTC 8 ; backspace.
PUTC ' ' ; clear last entered digit.
PUTC 8 ; backspace again.
JMP next_digit ; wait for Enter/Backspace.
کد 4:

end_print:
POP DX
POP CX
POP BX
POP AX
RET
PRINT_NUM_UNS ENDP