برای اینکه عملیات جمع را امتحان کنید دستی اعداد را باهم جمع بزنید برای دریافت از ورودی باید کد بنویسید.
; multi-segment executable file template
; This Macro Chenge HEX Or Binary To Decimal .........................
; NUMBER Is (WORD) .................................................. ..
; BUFFER is address of buffer
; digit is len of buffer or digit numbers
; RETURN : This Macro Return In bp Decimal Number That It
; Has In His End 0
DECIMAL MACRO NUMBER, BUFFER, DIGIT
LOCAL E0, E1, LOOP__, EXIT_
MOV BX, DIGIT
MOV BYTE PTR BUFFER[BX], '$' ;0
MOV CX, BX
LOOP__:;----------------------------------;
DEC BX ;
MOV BYTE PTR BUFFER[BX], 32 ; clear the buffer
LOOP LOOP__;------------------------;
MOV BX, DIGIT
MOV AX, NUMBER
E0:
MOV DX, 0
MOV CX, 10
DIV CX
DEC BX
MOV BYTE PTR BUFFER[BX], DL ; BAGIMANDEH IN DX
ADD BYTE PTR BUFFER[BX], 30H
CMP BX, 0
JE EXIT_
CMP AX, 10
JNL E0
E1:
DEC BX
MOV BYTE PTR BUFFER[BX], AL
ADD BYTE PTR BUFFER[BX], 30H
EXIT_:
ENDM
;---------------------------------------------
data segment
res dw ?
buf db 32 dup(?)
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
assume cs:code, ds:data, ss:stack
; 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
mov res, ax
DECIMAL res, buf, 5
;;;;;;;;;;;;;;print
mov ah, 9
lea dx, buf
int 21h
mov ax, 4c00h ; exit to operating system.
int 21h
ends
end start ; set entry point and stop the assembler