汇编语言四个错误不会改,程序在下面
SEG SEGMENT
DATA DB 76,69,84,90,73,54,99,63,100,80
S5 DB 0
S6 DB 0
S7 DB 0
S8 DB 0
S9 DB 0
S10 DB 0
DSEG ENDS;
CSEG SEGMENT
ASSUME DS:DSEG,CS:CSEG
STA:MOV AX,DSEG
MOV DS,AX
LEA SI,DATA
MOV CX,10
A1: MOV AL,[SI]
CMP AL,0
JB A2
CMP AL,59
JA P1
INC S5
JMP A2
P1: CMP AL,69
JA P2
INC S6
JMP A2
P2: CMP AL,79
JA P3
INC S7
JMP A2
P3: CMP AL,89
JA P4
INC S8
JMP A2
P4: CMP AL,99
JA P4
INC S9
JMP A2
P5: INC S10
A2: INC SI
LOOP A1
MOV BH,S5
ADD BH,30H
MOV DL,BH
MOV AH,02H
INT 21H
MOV BH,S6
ADD BH,30H
MOV DL,BH
MOV AH,02H
INT 21H
MOV BH,S7
ADD BH,30H
MOV DL,BH
MOV AH,02H
INT 21H
MOV BH,S8
ADD BH,30H
MOV DL,BH
MOV AH,02H
INT 21H
MOV BH,S9
ADD BH,30H
MOV DL,BH
MOV AH,02H
INT 21H
MOV BH,S10
ADD BH,30H
MOV DL,BH
MOV AH,02H
INT 21H
MOV AH,4CH
INT 21H
CSEG ENDS
END START
追问:他们帮我改错了,但是没运行结果,
答案:数据段的定义名字不统一
应该是dseg segment
。。。
dseg ends
然后是代码段的开头的标号应该是start,因为你最后用的是end start
其他:data segment
s5 db 0
s6 db 0
s7 db 0
s8 db 0
s9 db 0
s10 db 0
store db 56,78,83,67,39,48,95,76,86,62,100,57,85,71,92,'$'
count equ $-store-1
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
xor ax,ax
xor cx,cx
mov cx,count
lea bx,store
again:cmp byte ptr[bx],60d ;将成绩与60比较
jb s5j
cmp byte ptr[bx],70d ;将成绩与70比较
jb s6j
cmp byte ptr[bx],80d ;将成绩与80比较
jb s7j
cmp byte ptr[bx],90d ;将成绩与90比较
jb s8j
cmp byte ptr[bx],100d ;将成绩与100比较
jb s9j
inc s10 ;若到此,则说明成绩为100,s10++
inc bx ;切不可忘记地址加1
loop again
jmp done
s5j:inc s5 ;成绩小于60,s5++
inc bx
loop again
jmp done ;此处可能成为程序出口,下同
s6j:inc s6 ;成绩不小于60小于70,s6++
inc bx
loop again
jmp done
s7j:inc s7 ;成绩不小于70小于80,s7++
inc bx
loop again
jmp done
s8j:inc s8 ;成绩不小于80小于90,s8++
inc bx
loop again
jmp done
s9j:inc s9 ;成绩不小于90小于100,s9++
inc bx
loop again
done:mov ah,4ch
int 21h
code ends
end start
我们刚好也做了这个题目,你把我的store里面的分数改成你题目的就可以了。
上一个:用汇编语言编写一个加法程序
下一个:汇编语言除法,AX里的内容是0BB8H。BL里的内容是05H。为什么命令DIV BL,结果会出现除法溢出呢??求解……