作业要求:
(1)统计学生成绩:
设有10个学生的成绩分别为46、68、88、87、76、89、99、65、100和80分。试编制程序统计低于60分、60~69分、70~79分、80~89分、90~99分及100分的人数,并存放到S5、S6、S7、S8、S9及S10单元中。
(2)对键盘键入的小写字母用大写字母显示出来;若键入的为非字母键,则程序结束。
统计学生成绩:
代码参考见附件:
tongji.asm
;定义数据段
DATA SEGMENT
table db 46,68,88,87,76,89,99,65,100,80;定义成绩表
S5 db 0;0-59
S6 db 0;60-70
S7 db 0;71-80;
S8 db 0;81-90
S9 db 0;90-99
S10 db 0;100
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV si,OFFSET table
MOV AX,DATA
MOV DS,AX
MOV Cl,0;Cl用作计数器,控制循环的次数
XOR aL,AL;--->S5
XOR ah,AH;--->S6
XOR bl,BL;--->s7
XOR bh,bh;--->s8
XOR dl,DL;--->s9
XOR dh,dh;--->s10
;开始进行比较
COM:
CMP Cl,10;
Je Save;计数结束,跳转保存
MOV CH,[si] ;接受数据
CMP CH,60
JL case1;
CMP CH,70
JL case2;
CMP CH,80
JL case3;
CMP CH,90
JL case4;
CMP CH,100
JL case5;
Je case6;
case1:
inc al;
JMP finish
case2:
inc ah
JMP finish
case3:
inc bl
JMP finish
case4:
inc bh
JMP finish
case5:
inc dl
JMP finish
case6:
inc dh
JMP finish
finish:
inc Cl
inc si
JMP COM
Save:
MOV s6,ah
MOV S5,aL
MOV s7,bl
MOV s8,bh
MOV s9,dl
MOV s10,dh
MOV ax,4c00h
int 21H
CODE ENDS
end START
思路分析:
调试过程如下:
Step1: XOR指令对需要用到的计数寄存器进行清零
Step2 :
Step3:
Step4:
Step5:
Step6:
大小写转换:
代码参考附件:
convert.asm
DATA SEGMENT
MSG1 DB 'Enter an English word(a-z):','$'
MSG2 DB 0DH,0AH,'the Rwitting word is :','$'
MSG3 DB 'input error!','$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA;,SS:STACK
START:
MOV AX,DATA ;将数据段的数据移到DS寄存器中,因为无法直接数据从内存移到DS,只能从寄存器移到DS,
MOV DS,AX ;所以需要先把数据移到AX寄存器,然后再移到DS寄存器。
MOV DX,OFFSET MSG1;输出提示文本
MOV AH,9
INT 21H
MOV AH,1 ;键盘输入字符自动存入AL中
INT 21H ;int中断
;判断输入的ascII码值
;已知ASCII码的a的整型数字为97,z为122;A的整型数字对应数字为65,因此小写字母ascii码=大写字母ascii码 + 32
CMP AL,65;65-90代表大写字母
JL OVER
CMP AL,90;如果是大写字母则直接输出
JLE OUTPUT
CMP AL,97
JL OVER
CMP AL,122;97-122代表小写字母,是小写字母就进行转换,
JG OVER
SUB AL,32 ; 小写变大写
JMP OUTPUT
OUTPUT:
MOV BL,AL ;赋值给BX
MOV DX,OFFSET MSG2;提示文本
MOV AH,9
INT 21H
MOV AH,2 ;显示输出 DL=输出字符
MOV DL,BL
INT 21H ;int中断
MOV AH,4CH ;带返回码结束,AL=返回码
INT 21H
OVER:;输入的不是字母就结束程序
MOV DX,OFFSET MSG3;输出提示文本
MOV AH,9
INT 21H
MOV AH,4CH ;带返回码结束,AL=返回码
INT 21H
CODE ENDS
END START
思路分析:
调试过程如下:
Step1:初始化代码段
Step2:调入提示性语句
Step3:中断指令
Step4:提示用户该输入了
Step5:输入需要的小写字母