回 帖 发 新 帖 刷新版面

主题:求助一道简单的汇编程序题目

DATA        SEGMENT   
偶是汇编菜鸟哦,这道题目编译通不过
就是在MOV        DI,[AX] MOV       [BX],DI
上面这两句话出了错误,我原来是想实现两个数组内容的复制,可是他说错在一定要用base register or index上面,我不知道怎么改正,请哪位指点一下啦,分数送上哦!

ARRAY1    DB        01h,02h,03h,04h
ARRAY2    DB     4 DUP(?)
DATA        ENDS
CODE        SEGMENT
ASSUME      CS:CODE,    DS:DATA   
START:      MOV       CX,04h
            MOV       AX,OFFSET ARRAY1
            MOV       BX,OFFSET ARRAY2
L1:       CMP       CX,0
            JE        L2           
            MOV        DI,[AX]
            MOV       [BX],DI
             DEC       AX
             DEC       BX
             DEC        CX
             LOOP      L1
L2:         INT       21H    
CODE        ENDS
            END        START
              [em10]

回复列表 (共5个回复)

沙发

应该满简单了吧,没有人帮帮我吗?

板凳

DEC        CX
  LOOP      L1
???????????????

3 楼

如果按照你的思路可以这样改:
DATA    SEGMENT   
ARRAY1  DB 01h,02h,03h,04h
ARRAY2  DB 4 DUP(?)
DATA    ENDS
CODE    SEGMENT
        ASSUME  CS:CODE,DS:DATA   
START:  mov     ax,data
        mov     ds,ax
        MOV     CX,04h
        MOV     si,OFFSET ARRAY1
        MOV     di,OFFSET ARRAY2
L1:     MOV     al,[si]
        MOV     [di],al
        inc     si
        inc     di        
        LOOP    L1
L2:     mov     ah,4ch
        INT     21H    
CODE    ENDS
        END START
============================
其实还可以更简单一点:
DATA    SEGMENT   
ARRAY1  DB 01h,02h,03h,04h
ARRAY2  DB 4 DUP(?)
DATA    ENDS
CODE    SEGMENT
        ASSUME  CS:CODE,DS:DATA   
START:  mov     ax,data
        mov     ds,ax
        mov     es,ax
        MOV     CX,04h
        MOV     si,OFFSET ARRAY1
        MOV     di,OFFSET ARRAY2
        repnz   movsb
        mov     ah,4ch
        INT     21H    
CODE    ENDS
        END START
=================================

4 楼

三楼的同志你的第二个程序有点小问题。
使用串指令必须注意方向
你应该加上CLD
如:       
    MOV     di,OFFSET ARRAY2
    cld
    repnz   movsb

5 楼


谢谢啦,呵呵,

我来回复

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