1.1 程序修改
;FILENAME: EXA131.ASM
.486
DATA SEGMENT USE16
SUM DB ?,?
MESG DB '25+9='
DB 0,0,'$'
N1 DB 9,0F0H
N2 db 25
data ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA
BEG: MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET SUM
MOV AH,N1
MOV AL,N2
ADD AH,AL
MOV [BX],AH
CALL CHANG
MOV AH,9
MOV DX,OFFSET mesg
INT 21H
MOV AH,4CH
INT 21H
chang PROC
LAST: CMP byte ptr [BX],10
JC NEXT
SUB byte ptr [BX],10
INC byte ptr [BX+7]
JMP LAST
NEXT: mov dx,word ptr sum
ADD [BX+8],dx
ADD byte ptr [BX+7],30H
ADD byte ptr [BX+8],30H
ret
chang endp
CODE ENDS
END BEG
2.1学生成绩
;FILENAME EXA241.ASM
.486
DATA SEGMENT USE16
N EQU 10
SCORE DB 43,51,61,71,75,82,86,92,99,100
S5 DB 0
S6 DB 0
S7 DB 0
S8 DB 0
S9 DB 0
S10 DB 0
MESG1 DB 'S5(0-59):','$'
MESG2 DB ' S6(60-69):','$'
MESG3 DB ' S7(70-79):','$'
MESG4 DB ' S8(80-89):','$'
MESG5 DB ' S9(90-99):','$'
MESG6 DB ' S10(100):','$'
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA
BEG:MOV AX,DATA
MOV DS,AX
MOV AH,00H ;
MOV AL,3 ;
INT 10H ;前面三行可以去掉不影响运行
MOV CX,N
AND CX,00FFH
MOV BX,OFFSET SCORE
COUNT:CMP BYTE PTR [BX],59
JNA COUNT1
CMP BYTE PTR [BX],69
JNA COUNT2
CMP BYTE PTR [BX],79
JNA COUNT3
CMP BYTE PTR [BX],89
JNA COUNT4
CMP BYTE PTR [BX],99
JNA COUNT5
INC S10
JMP SHORT NEXT
COUNT1 PROC
INC S5
INC BX
JMP SHORT NEXT
COUNT1 ENDP
COUNT2 PROC
INC S6
INC BX
JMP SHORT NEXT
COUNT2 ENDP
COUNT3 PROC
INC S7
INC BX
JMP SHORT NEXT
COUNT3 ENDP
COUNT4 PROC
INC S8
INC BX
JMP SHORT NEXT
COUNT4 ENDP
COUNT5 PROC
INC S9
INC BX
JMP SHORT NEXT
COUNT5 ENDP
NEXT:LOOP COUNT
MOV AH,09H
MOV DX,OFFSET MESG1
INT 21H
MOV AH,02H
MOV DL,30H
ADD DL,S5
INT 21H
MOV AH,09H
LEA DX,MESG2
INT 21H
MOV AH,02H
MOV DL,30H
ADD DL,S6
INT 21H
MOV AH,09H
LEA DX,MESG3
INT 21H
MOV AH,02H
MOV DL,30H
ADD DL,S7
INT 21H
MOV AH,09H
LEA DX,MESG4
INT 21H
MOV AH,02H
MOV DL,30H
ADD DL,S8
INT 21H
MOV AH,09H
LEA DX,MESG5
INT 21H
MOV AH,02H
MOV DL,30H
ADD DL,S9
INT 21H
MOV AH,09H
LEA DX,MESG6
INT 21H
MOV AH,02H
MOV DL,30H
ADD DL,S10
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END BEG
为什么去掉MOV AH,02H语句后就无法输出正确结果(数值就不对)呢?
MOV DL,30H
ADD DL,S10
INT 21H
这三条语句为什么能够把统计的数值给输出出来呢?如是S10:1它是怎么输出的?为什么S10:后就会接着显示1呢?
MOV AH,00H ;
MOV AL,3 ;
INT 10H ;
这三条语句有什么作用?
2.2通信字
.486
DATA SEGMENT USE16
BUF1 DB '123456'
BUF2 DB '000000'
BUF3 DB 'Please input communication words:',0DH,0AH,'$'
BUF4 DB 3
OUT1 DB 'ERRORS',0DH,0AH,'$'
OUT2 DB 'RIGHT',0DH,0AH,'$'
OUT3 DB '*','$'
OUT4 DB 0DH,0AH,'$'
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA,ES:DATA
BEG: MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV AH,00H
MOV AL,3
INT 10H
LAST1: LEA SI,BUF1
LEA DI,BUF2
MOV BX,OFFSET BUF2
MOV CX,6
MOV AH,09H
LEA DX,BUF3
INT 21H
LAST: MOV AH,07H
INT 21H
MOV BYTE PTR [BX],AL
INC BX
MOV AH,09H
MOV DX,OFFSET OUT3
INT 21H
LOOP LAST
MOV AH,09H
LEA DX,OUT4
INT 21H
MOV CX,6
CLD
REPE CMPSB
JZ EXIT
MOV AH,09H
LEA DX,OUT1
INT 21H
DEC BUF4
JZ LAST2
JMP LAST1
EXIT: MOV AH,09H
LEA DX,OUT2
INT 21H
LAST2: MOV AH,4CH
INT 21H
CODE ENDS
END BEG
第二篇:南邮第四个实验
实验报告
(2010 / 20## 学年第一学期)
实验报告
实验报告