ali682344
چهارشنبه 28 مهر 1389, 21:56 عصر
سلام
به خدا دارم كلافه ميشم هر كاري مي كنم نمي تونم دو عدد را كه از وردي گرفتم با هم جمع كنم و چاپ كنم
نمونه كدي كه استفاده مي كنم به اين صورته :
; multi-segment executable file template.
;== NUMBER TO DECIMAL ================================================== ====;
; This Macro Chenge HEX Or Binary To Decimal .........................
; NUMBER Is (WORD) .................................................. ..
; RETURN : This Macro Return In bp Address Of Decimal Number That It
; Has In His End '$'
DECIMAL MACRO NUMBER
LOCAL BUFFER,COUNTER, LOOP_, E1, E2, E0, RESUM, WHILE ,WHILE_,E2_, E3, E4,LOOP__, JMP_1, EXIT_
JMP JMP_1
BUFFER DB 15 DUP('$')
COUNTER DB 0
JMP_1:
MOV CX, 11
MOV BUFFER[11], '$'
MOV BX, 10
LOOP__:;----------------------------------;
MOV BYTE PTR BUFFER[BX], 0 ; clear the buffer
DEC BX ;
LOOP LOOP__;------------------------;
CMP NUMBER, 0
JL E0
CMP NUMBER, 9
JG E0
MOV DX, NUMBER
MOV BYTE PTR BUFFER[10], DL
ADD BYTE PTR BUFFER[10], 30H
MOV BP, OFFSET BUFFER[10]
JMP EXIT_
E0:
MOV CX, NUMBER
MOV COUNTER, 0
LOOP_:
ADD COUNTER, 1
CMP COUNTER, 9
JNE E1
MOV BX, 10
MOV DL, COUNTER
ADD BYTE PTR BUFFER[BX], DL
WHILE:
CMP BYTE PTR BUFFER[BX], 9
JLE E2
SUB BYTE PTR BUFFER[BX], 10
DEC BX
ADD BYTE PTR BUFFER[BX], 1
JMP WHILE
E2:
MOV COUNTER, 0
E1:
LOOP LOOP_
RESUM:
MOV BX, 10
MOV DL, COUNTER
ADD BYTE PTR BUFFER[BX], DL
WHILE_:
CMP BYTE PTR BUFFER[BX], 9
JLE E2_
SUB BYTE PTR BUFFER[BX], 10
DEC BX
ADD BYTE PTR BUFFER[BX], 1
JMP WHILE_
E2_:
MOV BX, -1
E3:
INC BX
CMP BYTE PTR BUFFER[BX], 0
JE E3
LEA BP, BUFFER[BX]
E4:
MOV DL, BYTE PTR BUFFER[BX]
ADD BYTE PTR BUFFER[BX], 30H
INC BX
CMP BX, 11
JL E4
EXIT_:
ENDM
data segment
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax
;;;;;;;;;;;;;;;;;;adad aval
mov ah,01h
int 21h
mov cx,ax
;;;;;;;;;;;;;;;;;;;;adad dovom
mov ah,01h
int 21h
add ax,cx ;;;;;;jam
DECIMAL ax
;;;;;;;;;;;;;;print
mov ah,02
mov dx,ax
int 21h
mov ax, 4c00h ; exit to operating system.
int 21h
ends
end start ; set entry point and stop the assembler.
كجاي اين كد مورد داره من خيلي مبتديم :عصبانی++::عصبانی++::گریه::گری :
ممنون
به خدا دارم كلافه ميشم هر كاري مي كنم نمي تونم دو عدد را كه از وردي گرفتم با هم جمع كنم و چاپ كنم
نمونه كدي كه استفاده مي كنم به اين صورته :
; multi-segment executable file template.
;== NUMBER TO DECIMAL ================================================== ====;
; This Macro Chenge HEX Or Binary To Decimal .........................
; NUMBER Is (WORD) .................................................. ..
; RETURN : This Macro Return In bp Address Of Decimal Number That It
; Has In His End '$'
DECIMAL MACRO NUMBER
LOCAL BUFFER,COUNTER, LOOP_, E1, E2, E0, RESUM, WHILE ,WHILE_,E2_, E3, E4,LOOP__, JMP_1, EXIT_
JMP JMP_1
BUFFER DB 15 DUP('$')
COUNTER DB 0
JMP_1:
MOV CX, 11
MOV BUFFER[11], '$'
MOV BX, 10
LOOP__:;----------------------------------;
MOV BYTE PTR BUFFER[BX], 0 ; clear the buffer
DEC BX ;
LOOP LOOP__;------------------------;
CMP NUMBER, 0
JL E0
CMP NUMBER, 9
JG E0
MOV DX, NUMBER
MOV BYTE PTR BUFFER[10], DL
ADD BYTE PTR BUFFER[10], 30H
MOV BP, OFFSET BUFFER[10]
JMP EXIT_
E0:
MOV CX, NUMBER
MOV COUNTER, 0
LOOP_:
ADD COUNTER, 1
CMP COUNTER, 9
JNE E1
MOV BX, 10
MOV DL, COUNTER
ADD BYTE PTR BUFFER[BX], DL
WHILE:
CMP BYTE PTR BUFFER[BX], 9
JLE E2
SUB BYTE PTR BUFFER[BX], 10
DEC BX
ADD BYTE PTR BUFFER[BX], 1
JMP WHILE
E2:
MOV COUNTER, 0
E1:
LOOP LOOP_
RESUM:
MOV BX, 10
MOV DL, COUNTER
ADD BYTE PTR BUFFER[BX], DL
WHILE_:
CMP BYTE PTR BUFFER[BX], 9
JLE E2_
SUB BYTE PTR BUFFER[BX], 10
DEC BX
ADD BYTE PTR BUFFER[BX], 1
JMP WHILE_
E2_:
MOV BX, -1
E3:
INC BX
CMP BYTE PTR BUFFER[BX], 0
JE E3
LEA BP, BUFFER[BX]
E4:
MOV DL, BYTE PTR BUFFER[BX]
ADD BYTE PTR BUFFER[BX], 30H
INC BX
CMP BX, 11
JL E4
EXIT_:
ENDM
data segment
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax
;;;;;;;;;;;;;;;;;;adad aval
mov ah,01h
int 21h
mov cx,ax
;;;;;;;;;;;;;;;;;;;;adad dovom
mov ah,01h
int 21h
add ax,cx ;;;;;;jam
DECIMAL ax
mov ah,02
mov dx,ax
int 21h
mov ax, 4c00h ; exit to operating system.
int 21h
ends
end start ; set entry point and stop the assembler.
كجاي اين كد مورد داره من خيلي مبتديم :عصبانی++::عصبانی++::گریه::گری :
ممنون