MUL DL MOV DH,[BX] SUB DH,30H INC BX
ADD AL,DH ; 结果 CMP AL,B ; 比较哪个最小 JB YES
CMP BYTE PTR [BX],0DH ;判断是否是回车 JZ LAST JMP ONCE
YES: MOV B,AL ; 最小数存于B CMP BYTE PTR [BX],0DH JZ LAST INC BX JMP ONCE LAST: NOP
MOV AL,B ;将数的个位和十位分别存储AH存个位AL存十位 MOV AH,0 MOV DL,10
DIV DL
ADD AH,30H ;转换为ASCII码 ADD AL,30H
MOV B,AL ;存到内存中 MOV B+1,AH
POP DX ;pop出原保存的寄存器数据 POP BX POP AX RET
CHANGE ENDP
START PROC FAR ;主程序 MOV AX,DATA MOV DS,AX
CALL INPUT ;调用输入子程序 MOV AH,09H
MOV DX,OFFSET STRING1 ;显示提示性语句 INT 21H
CALL CHANGE ;调用比较子程序 MOV AH,09H
MOV DX,OFFSET B ;显示最小数 INT 21H MOV AX,4C00H INT 21H START ENDP CODE ENDS END START 五.运行结果
六.预习题
1.如何将输入的两个字符(0 -- 9变为十进制或二进制数?
答:将数的ASCII码值减去30H,即可得到对应的十进制数。 2.如何将选出的最小值(二进制或十进制变为ASCII 码再进行显示? 答:用DB定义一个字节型数据存放十进制数(高四位表示十位,低四位表示个位。使用cmp指令,先比较高四位,若小于,则和已存的数交换;若等于,则继续比较低四位,小于则交换。若等于,数不变。
3.你觉得采用二进制运算还是十进制运算更适合于这个实验? 答:十进制更合适。 实验四子程序设计 一.实验目的
1.进一步掌握子程序设计方法。 2.进一步掌握基本的DOS 功能调用。 二.实验内容
1.从键盘上输入某班学生的某科目成绩.输入按学生的学号由小到大的顺序输入 2.统计检查每个学生的名次。 3.将统计结果在屏幕上显示。
4.为便于观察,输入学生数目不宜太多,以不超过一屏为宜.输出应便于阅读.尽可能考虑美观。
5.输入要有检错手段。 三.流程图
四.源代码 DATA SEGMENT BUFFER DB 100 DB ? DB 10 DUP (?
STR1 DB 'please input the score of the students:',0DH,0AH,'$' STR2 DB 'error,please input the score again:',0DH,0AH,'$'
STR3 DB 'num rank scor ',0DH,0AH,'$' ;提示语句的字符串VAR1 DW ? VAR2 DW ? CK DB ?