[Assembly] Cộng 2 số nguyên hệ thập phân
Để cộng được 2 số nguyên lớn thì trước tiên chúng ta cần nhập và xuất được 2 số nguyên lớn hệ thập phân đã. Các bạn có thể xem tại Nhập và xuất số nguyên.
Sau đây là code cộng 2 số nguyên hệ thập phân:
.model small
.stack 100
.data
inputA db 'Nhap so A = $'
inputB db 'Nhap so B = $'
outputResult db 'Tong A + B = $'
CLRF db 13, 10, '$'
.code
main proc
mov ax, @data
mov ds, ax
mov ah, 9 ; hien thi "Nhap so A = "
lea dx, inputA
int 21h
call inputDec ; goi CTC nhap so thu nhat he 10
push ax ; luu ax da nhap lai
call nextLine ; xuong dong
mov ah, 9 ; lam tuong tu voi so thu hai
lea dx, inputB
int 21h
call inputDec
mov bl, al
call nextLine
pop ax ; goi ax tu Stack ra
call sum ; goi ham tinh tong 2 so (trong ax va bx)
push ax ; luu ax lai
mov ah, 9 ; hien thi KQ
lea dx, outputResult
int 21h
pop ax
call outputDec ; goi CTC hien thi KQ
mov ah, 4ch
int 21h
main endp
sum proc ; CTC con tinh tong 2 so
add ax, bx
ret
sum endp
nextLine proc ; CTC xuong dong
mov ah, 9
lea dx, CLRF
int 21h
ret
nextLine endp
include includeinputDecProc.asm ; tep chua CTC nhap so he 10
include includeoutputDecProc.asm ; tep chua CTC hien thi so he 10
end main
các bạn dựa vào bài Nhập và xuất số nguyên hoặc có thể xem 2 file inputDecProc.asm và outputDecProc.asm



Mình hỏi tại sao một số chương trình cộng nó chỉ viết đơn giản.
Ví dụ cộng 2 số a,b.
Load a;
add b;
move c;
printf c;
Mình mới tìm hiểu về ngôn ngữ này, chưa hiểu về nó lắm, nhờ bạn giải thích hộ với nhé.
Có thể đó chỉ là cộng 2 số mà mỗi số chỉ có 1 chữ số.
Anh ơi , anh giải nốt phần input và output được không ạ ? em cảm ơn!
Lâu lắm rồi mới quay lại blog của Quân và lại học hỏi thêm đc 1 vài nội dung hữu ích
khi gọi call sum thì ax chỉ lấy ra 1 lần sao tính tổng được