01/10/2018, 09:29
Biến trong assembly
Mình có đoạn code:
.model small
.data
.code
main proc
mov ah,var1
mov dl,"*"
int 21h
endp
end main
Và đoạn code:
.model small
.data
var1 db 2
.code
main proc
mov ah,2
mov dl,"*"
int 21h
endp
end main
Hai code trên khi chạy cho hai kết quả khác nhau trong khi var1 = 2 ??.Tại sao lại như vậy?.Ai giải thích cho mình với ?
Bài liên quan
Cái đoạn trên bạn đã khai báo var 1 đâu. Đoạn dưới thì khai báo var1 nhưng mà lại sử dụng giá trị 2 thay vì var1.
Mình viết nhầm ấy mà
Code1:
Code2:
Bạn giải thích giúp mình đi
mình ko có IDE nên ko biết nó in ra cái gì. nhưng bạn thử thay dấu ngoặc kép thành ngoặc đơn và biến thành kiểu hex thử. 2 thành 2h.
Chắc mục đích của bạn là in ra dấu “*”. Dấu * là một ký tự nên mình nghĩ bạn dùng ‘*’ mới đúng.
Ở code1,mình đã thay dấu “” thành ‘’ nhưng nó vẫn ra cùng 1 lỗi
INT 21h, AH=0CDh - not supported yet.
refer to the list of supported interrupts.
Hình như giá trị đưa vào vùng nhớ ah không đúng
Do bạn chưa khởi tạo giá trị cho thanh ghi DS cho nên nó trỏ đến segment PSP (program segment prefix) (đây là vùng nhớ chứa các thông tin cần thiết cho chương trình của bạn, và hệ điều hành DOS tự động khởi tạo giá trị cho thanh ghi DS trỏ vào vùng nhớ này) chứ không phải là segment chứa biến var1 của bạn. Bởi vậy bạn cần phải khởi tạo giá trị cho thanh ghi DS trước.
Code như sau: