data segment
d1 db 0
da1 dw 12h,23h
da2 db 11h,21h
da3 equ 1234h
da4 equ $-da2
da5 db 31h,32h
data ends
code segment
assume cs:code,ds:data
begin: mov ax,da4
var dw 4321H
mov ax,4c00h
int 21
code ends
end begin
程序如上da3定义为1234,da4根据定义为2,可是在程序里(用debug调试)没有看到1234和2的数据在哪里
哪么这两个变存贮在哪里,为什么在内存中看不到。此其一
二、assume cs:code,ds:data
我在程序里不用此句用,mov ax,data
mov ds,ax
mov ax,code
mov cs,ax
调试程序也在数据段里存取数据,并没有找不到数据,按书上讲ASSUME是设定段寄存器和段的关系。也就是说用ASSUME设定完后,CPU就自动对应了CS:code,ds:data,而不用MOV传送地址,可是现在我们每段程序都得用MOV传送,哪么ASSUME又有什么用,不用它也可以。 |