Assembly 宏中的本地数据

Assembly 宏中的本地数据,assembly,x86-16,tasm,Assembly,X86 16,Tasm,这就是我在宏中存储本地数据的方式(我使用TASM): 但是,现在我必须在每个宏中将ds更改为代码段地址,然后再将其更改回数据段地址。有更好的方法吗?或者是一种“标准”的方式每个人都是怎么做的 或者这是更好的方法 push ax dx ds mov dx, @code mov ds, dx mov dx, offset _str mov ah, 9 int 21h pop ds dx ax …应该做你想做的事。为什么不把你所有的数据放在你的代码段中,把ds设置成那样,然后把它留在

这就是我在宏中存储本地数据的方式(我使用TASM):

但是,现在我必须在每个宏中将ds更改为代码段地址,然后再将其更改回数据段地址。有更好的方法吗?或者是一种“标准”的方式每个人都是怎么做的

或者这是更好的方法

push ax dx ds

mov dx, @code
mov ds, dx

mov dx, offset _str
mov ah, 9
int 21h

pop ds dx ax   


…应该做你想做的事。为什么不把你所有的数据放在你的代码段中,把ds设置成那样,然后把它留在那里呢?

。顺便说一句,模型中的cs=ds=es=ss不是很小吗?
push ax dx ds

mov dx, @code
mov ds, dx

mov dx, offset _str
mov ah, 9
int 21h

pop ds dx ax   
push ds ; save old ds
push cs
pop ds ; make ds same as cs
; do your thing
pop ds ; restore old ds