回 帖 发 新 帖 刷新版面

主题:给学生查一个程序,竟然查不出错在哪?丢人呀,有谁能帮我看一下这个不长的程序错哪了

程序实现的是六个数之中的最大数,但有个学生写了这样一个程序,但编绎出错了,作为老师太丢人的。有谁能帮我看看这个程序出错在哪?
用emu8086工具编出来是时,两个loop again伪指令翻译成loop 00h程序为什么不跳到again?,而转跳到开始呢?



DATA SEGMENT
    NUM DB 22,46,32,72,84,16
    MAXN DB ?
DATA ENDS

MAIN SEGMENT 
    ASSUME CS:MAIN,DS:DATA
    START:
         MOV AX,DATA
         MOV DS,AX
         MOV CX,5
         MOV AL,00
         LEA SI,NUM 
          
         MOV AL,[SI] 
         
         AGAIN :  INC SI
         CMP  AL,[SI]
         JC CHG  
         LOOP AGAIN 
         
         JMP PP
         
         CHG:
         MOV AL,[SI] 
         LOOP AGAIN
         
        PP:    
       
MAIN ENDS
    END START    

回复列表 (共8个回复)

沙发

JC CHG 是JG而不是JC

板凳

对不起,说错了 是JL

3 楼

为什么啊?

4 楼

JG 和 JL  是 jmp if Greater 和 jmp if less 的意思,跟在cmp之后判断compared 的两个数的大小

5 楼


但为啥编后 loop again会翻议成loop 00H?

6 楼

还是不行,不信你可以亲自用emu8086试一下

7 楼

我用masm 6.11可以编译,
把MOV AL,00换成

mov ax,00

jc换成jl

8 楼


编译是没有问题。我现在解决了。原来是again 后面多了一个空格。

我来回复

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