注册 登录
编程论坛 汇编论坛

帮一个学生查程序错误,但不知道哪出错了

buliaoren 发布于 2007-04-16 18:29, 642 次点击

程序实现的是六个数之中的最大数,但有个学生写了这样一个程序,但编绎出错了,作为老师太丢人的。有谁能帮我看看这个程序出错在哪?
用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

5 回复
#2
hu9jj2007-04-16 19:08
很久未使用汇编了,可能也会记错。上面源程序中最后一句END START好象应该放在MAIN ENDS之前。
#3
菜鸟上路2007-04-16 22:21
以下是引用buliaoren在2007-4-16 18:29:38的发言:

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 //为什么用JC?
LOOP AGAIN

JMP PP

CHG:
MOV AL,[SI]
LOOP AGAIN

PP:

MAIN ENDS
END START

没进位就永远循环下去,而且你这程序什么都没做

2楼说的不对

#4
srl99732007-04-19 21:30

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]
DEC CX
AGAIN: INC SI
CMP AL,[SI]
JC CHG
LOOP AGAIN

JMP PP

CHG:
MOV AL,[SI]
LOOP AGAIN

PP: MOV AH,4CH
INT 21H

MAIN ENDS
END START

#5
srl99732007-04-19 21:34
而且EMU8086中的有的汇编指令不能使用
#6
ml3424181752007-04-22 14:03
看不懂
1