(asm 80286)
数据段变量访问,类型为byte
或word
?
我正在尝试访问变量的第n个字节/单词,但是有些错误,我不知道wha
ASSUME cs: code, ds:data
data SEGMENT
s db 5,1,2,3
data ENDS
code SEGMENT
start:
mov ax,data
mov es,ax
mov si, 0;
mov ax, 0;
check:
cmp si, len
jg fin
mov al, byte ptr [s][si] ; !!! this return not the value i i think it would
^^^^^^^^^^^^^^^
cmp al, 0
jl negativ ; move to positiv
jmp positiv ; move to negativ
positiv:
mov byte ptr d1[si],al
inc si
jmp check
negativ:
mov byte ptr d2[si],al
inc si
jmp check
fin:
mov ax,4C00h
int 21h
code ENDS
END start
get to debug:tasm name,tlink name,td name ^^^^^^^^行返回错误的值,这就是为什么我假设我使用调试器检查并且值来自数据段,但不是正确的值。
我想我可能无法理解寻址方法,有人可以帮助我吗? 谢谢。
答案 0 :(得分:1)
您忘记初始化DS
。
更改
mov ax,data
mov es,ax
到
mov ax,data
mov ds,ax
mov es,ax
ES
的初始化真的需要吗?