回 帖 发 新 帖 刷新版面

主题:菜鸟问题请教

data segment  
        org     0000h
    var1     dw 1
    var2     dw 2
    var3     dw 23Fh                
    inx     dw ?
    string db 'ABCD'
    array db 0,1,2,3,4,5,6,7
        db 8,9,10,11,12,13,14,15
    data ends

    text segment  
    assume ds:data, cs:text
        org    0000h
mov ax, seg data
        mov ds, ax
        mov ax, offset var2         
        mov bx, ax
        lea dx, string            
        mov al, [SI+bx]             
        mov cx, 1122h             
        mov dl, cl
        mov dh, al
        mov bx, offset var1
        mov [bx], dx             
        mov si, offset array
        mov [si+3], ax
    text ends
        end
请问运行 mov ax, offset var2 后AX为多少运行mov al, [SI+bx]后AX又是多少。还有这里的偏移地址是什么mov cx, 1122h 后CX是多少,谢谢

回复列表 (共4个回复)

沙发

你用debug调试一下吧,那里面有跟踪调试命令,如果不知道怎么使用debug,你可以找下相关文章,网上有很多,我也学习中……

板凳

data segment  
        org     0000h
    var1     dw 1
    var2     dw 2
    var3     dw 23Fh                
    inx     dw ?
    string db 'ABCD'
    array db 0,1,2,3,4,5,6,7
        db 8,9,10,11,12,13,14,15
    data ends

    text segment  
    assume ds:data, cs:text
        org    0000h
START:
mov ax, seg data
        mov ds, ax
        mov ax, offset var2         
        mov bx, ax
        lea dx, string            
        mov al, [SI+bx]             
        mov cx, 1122h             
        mov dl, cl
        mov dh, al
        mov bx, offset var1
        mov [bx], dx             
        mov si, offset array
        mov [si+3], ax
    text ends
        end
你犯了一个严重的错误,你的程序里面START都没有

3 楼

最后一行2楼的忘了改,是END START

4 楼

mov ax, offset var2 后AX得到的是个地址,其实你在这里是错误的,offset是表示后面的是个地址,但是你用AX,就不太妥当了,AX装的不是地址;改为BX好些;
mov al, [SI+bx]后,AX的高位是mov ax, offset var2保留下来的高位,而低位是[SI+bx]里的内容了.

我来回复

您尚未登录,请登录后再回复。点此登录或注册