回 帖 发 新 帖 刷新版面

主题:帮我看下这个程序的错误!!!(急)谢谢大家!!!我等着大家的帮忙!!!

我用这个程序实现 x+y-3  送到 r中,怎么输出的是 20个 k呀 !
麻烦帮我修改以下!
谢谢了!
data          SEGMENT
              arrayx DW        1,5,6,78,9
              arrayy DW        2,5,4,8
data        ENDS
extra         SEGMENT                  
              arrayr DW        20 DUP(?)
extra ENDS
code          SEGMENT
              ASSUME    CS:code,DS:data,ES:extra
start:              
              MOV       AX,data
              MOV       DS,AX
              MOV       BX,extra
              MOV       ES,BX
              LEA       SI,arrayx
              MOV       AX,[SI]
              CALL      compute
              MOV       CX,5
              INC       SI
              DEC       CX
              
                     
              MOV       CX,20
              LEA       SI,arrayr
              MOV       AH,02h
NExt:         
              MOV       BX,ES:[SI]
              MOV       arrayr,BX
              INT       21h
              INC       SI
              LOOP      NExt
              MOV       AH,4ch
              INT       21h
compute       PROC      NEAR
              LEA       DI,arrayy
              MOV       CX,4
              ADD       AX,[DI]
              ADC       DX,0
              SUB       AX,3
              SBB       DX,0
compute ENDP
              
again:
              INC       DI
              DEC       CX
              JZ        done
done:         
              RET
code          ENDS
    END   start

回复列表 (共5个回复)

沙发

大家快点帮我呀!!
万分感激1

板凳

快!
我都等一下午了

3 楼

数据的显示都是以ASCII码来显示的,你输出的不是目标值
另外,你的INT 21H的功能号为02的用法好象也有误

data          SEGMENT
              arrayx DW        1,5,6,78,9
              EVEN
              arrayy DW        2,5,4,8,10
data        ENDS
extra         SEGMENT                  
              arrayr DW        20 DUP(?)
extra ENDS
code          SEGMENT
MAIN     PROC  FAR
              ASSUME    CS:code,DS:data,ES:extra
                  
              MOV       AX,data
              MOV       DS,AX
              XOR       DI,DI
   start:  
              MOV       BX,arrayx[DI]
              CMP       DI,2*5
              JZ        C0
              ADD       BX,arrayy[DI]
              SUB       BX,3
              MOV       extra[DI],BX
              MOV       CX,10
              CALL      BIN_DEC
              MOV       CX,1
              CALL      BIN_DEC
              ADD       DI,2
              MOV       AH,2
              MOV       DL,0AH
              INT       21H
              JMP      start
  BIN_DEC  PROC
         MOV   AX,BX
           XOR   DX,DX
           DIV   CX
           MOV   BX,DX
           MOV   DL,AL
           ADD  DL,30H
           MOV   AH,2
           INT   21H
           ret

  BIN_DEC endp
MAIN      ENDP
C0:   MOV   AX,4C00H
      INT    21H
CODE ENDS
     END MAIN

4 楼

十分感激
谢谢!!
能不能加我qq :178116550
今后还请多指教

5 楼

哈哈,我也是一个新手,不见得比你懂得多

我来回复

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