Assembly 汇编80286:访问变量的第n个字节

Assembly 汇编80286:访问变量的第n个字节,assembly,x86,intel,Assembly,X86,Intel,(asm 80286) 在字节或字类型的数组上访问数据段变量 我试图访问变量的第n个字节/字,但出现了问题,我不知道是什么 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 f

(asm 80286) 在
字节
类型的数组上访问数据段变量

我试图访问变量的第n个字节/字,但出现了问题,我不知道是什么

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
开始调试:tasm名称、tlink名称、td名称 ^^^^^^^^^行返回的值错误,这就是为什么我假设我使用调试器进行了检查,并且这些值来自数据段,但不是正确的值

我想我可能没有正确理解寻址方法,有人能帮我吗?
谢谢。

您忘记初始化
DS

改变

mov ax,data 
mov es,ax


ES
的初始化真的需要吗?

为了上帝的名字。。。已为此错误设置了2天,感谢您现在检查它
mov ax,data
mov ds,ax
mov es,ax