30/09/2018, 20:12
Cách xuất giá trị của ô nhớ ra màn hình
Mình có một bài tập trong sách môn Kiến trúc máy tính nhu sau: Viết đoạn chương trình ngôn ngữ assembly để cộng 5H với 3H, dùng các thanh ghi AL, BL.
Mình chép y hệt từ sách ra thì được thế này:
.MODEL SMALL
.DATA
.CODE
MAIN PROC
MOV AL, 05H
mov BL, 03H
ADD AL,BL
MOV 100H,AL
ENDP
END MAIN
mình đã chạy code bằng emu8086 và thành công nhưng màn hình không hiện ra kết quả mà tắt luôn?
Vậy làm sao để xuất kết quả ra màn hình? Ô nhớ 100H có ý nghĩa gì? Nó nằm ở đâu và làm thế nào để gọi ra giá trị trong nó?
Bài liên quan
ô nhớ 100H này là địa chỉ trực tiếp của ô nhớ, là DS:0100. Nó để lưu kết quả phép cộng vừa rồi.
Bạn có thể dump ô nhớ ra trong chế độ debug:
d DS:0100
hoặcd 0100
bạn có thể code lại cả bài lên đây được không mình không hiểu phần
là chồng lên phần trước hay viết riêng?
mình chạy thử nhưng không được.
Muốn hiện ký tự ra màn hình bạn phải gọi hàm ngắt của DOS bằng cách
ADD AL, ‘0’ ; đổi sang ký tự asscii
MOV AH 2 ; gọi tới hàm in ký tự
MOV DL AL ;copy ký tự cần in từ AL vào DL, vì DL mặc định chứa giá trị đầu vào cho hàm in ký tự
INT 21h ;gọi tới dịch vụ của DOS
viết ngay sau chỗ
MOV 100H, AL
nhéKhông thì viết thủ tục xuất ra cũng đc.
đã chạy thành công, cảm ơn bạn nhé
Theo mình biết thì đây là asm trên DOS OS, ko phải win nhé, bạn chạy đc, vì nó là phần mềm emulator DOS thôi, nên địa chỉ này ko phải là địa chỉ thực trên Mem đâu.
thì theo mình nghĩ là thế, bạn hiểu rõ hơn thì có thể chỉ bảo thêm mà