程序集80286:访问变量的第n个字节

时间:2014-11-22 11:03:25

标签: assembly x86 intel

(asm 80286) 数据段变量访问,类型为byteword

的数组

我正在尝试访问变量的第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 ^^^^^^^^行返回错误的值,这就是为什么我假设我使用调试器检查并且值来自数据段,但不是正确的值。

我想我可能无法理解寻址方法,有人可以帮助我吗? 谢谢。

1 个答案:

答案 0 :(得分:1)

您忘记初始化DS

更改

mov ax,data 
mov es,ax

mov ax,data
mov ds,ax
mov es,ax

ES的初始化真的需要吗?