回 帖 发 新 帖 刷新版面

主题:求助:帮看看这是完成什么功能啊?

DSEG SEGMENT
DATA DB -100,03,-54,-73,61,-20
COUNT DB 6
RLT   DB 0
DSEG ENDS
CSEG SEGMENT
     ASSUME CS:CSEG,DS:DSEG
START:MOV AX,DSEG
       MOV DS,AX
       LEA SI,DATA
       MOV CX,COUNT
       XOR DX,DX
LOOP1:MOV AL,[BX]
       JS PLUS
       INC DX
PUSH: INC BX
       DEC CX
       JNZ LOOP1
       MOV RLT,DX
       MOV AH,4CH
       INT 21H
CSEG   ENDS
       END START
该程序完成什么功能?程序执行后RLT单元的内容是多少?

回复列表 (共1个回复)

沙发

如果按照程序的思路RTL中保存的是正数的个数为2,但你写的程序有问题,我改了一下,已经可以运行,你用debug跟踪一下就知道了。
DSEG SEGMENT
DATA DB -100,03,-54,-73,61,-20
COUNT dw 6
RLT   dw 0
DSEG ENDS
CSEG SEGMENT
     ASSUME CS:CSEG,DS:DSEG
START:MOV AX,DSEG
       MOV DS,AX
       LEA SI,DATA ;这里你用的是SI而下面却用BX作变址寻址
       MOV CX,COUNT
       XOR DX,DX
LOOP1:MOV AL,[si]  ;mov 指定不影响标志寄存器
      cmp al,0
      JS PLUS      ;这里你的标号写错了
      INC DX
plus: INC si
       DEC CX
       JNZ LOOP1
       MOV RLT,DX
       MOV AH,4CH
       INT 21H
CSEG   ENDS
       END START
;已调试,可以运行

我来回复

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