汇编实验第二次.docx
《汇编实验第二次.docx》由会员分享,可在线阅读,更多相关《汇编实验第二次.docx(12页珍藏版)》请在冰豆网上搜索。
汇编实验第二次
《汇编语言程序设计》
实验报告
专业班级
计101
学号
姓名
指导教师
陆勤
实验一循环程序实验
程序说明:
1.第一个程序是用来显示AL寄存器中的两位十六进制数,通过DOS功能调
用INT21H的2号功能显示出来。
2.第二个程序是用来判断键盘上输入的字符:
若是1-9数字,则显示;若为A-Z或a-z,则显示c;若是回车字符,则结束程序。
其它字符不显示,继续等待输入。
实验二:
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAH,1
INT21H
CMPAL,0DH
JZDONE
CMPAL,'0'
JBNEXT
CMPAL,'9'
JACHARUP
MOVDL,AL
MOVAH,2
INT21H
JMPSTART
CHARUP:
CMPAL,41H
JBNEXT
CMPAL,5AH
JACHRDN
DISPC:
MOVDL,'c'
MOVAH,2
INT21H
NEXT:
JMPSTART
CHRDN:
CMPAL,61H
JBNEXT
CMPAL,7AH
JANEXT
JMPDISPC
DONE:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
实验清单:
实验一:
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAL,3EH
PUSHAX
MOVDL,AL
MOVCL,4
SHRDL,CL
CMPDL,9
JBENEXT1
ADDDL,7
NEXT1:
ADDDL,30H
MOVAH,2
INT21H
POPAX
MOVDL,AL
ANDDL,0FH
CMPDL,9
JBENEXT2
ADDDL,7
NEXT2:
ADDDL,30H
MOVAH,2
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
程序运行结果:
实验1:
实验2:
实验二统计不同成绩段学生的人数
实验说明:
设有十个学生成绩分别是76,69,84,90,73,88,99,63,100和80分。
试编制一个子程序,统计低于60分,60~69分,70~79分,80~89分,90~99分和100分的人数,并输出显示统计结果。
编程提示:
1、成绩分等部分采用分支结构,统计所有成绩则用循环结构完成,显示统计结果采用DOS功能调用。
2、统计学生成绩和显示统计结果两部分内容用子程序结构来完成。
结构图:
程序清单:
DATASEGMENT
GRADEDB76,69,84,90,73,88,99,63,100,80
ADB'小于60分的人数:
','$'
BDB0AH,0DH,'在60~70之间的人数:
','$'
CDB0AH,0DH,'在70~80之间的人数:
','$'
DDB0AH,0DH,'在80~90之间的人数:
','$',
EDB0AH,0DH,'在90~100之间的人数:
','$'
FDB0AH,0DH,'满分的人数:
','$'
COUNTDB10
DATAENDS
STACKSSEGMENT
STACKSENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACKS
MAINPROCFAR
START:
MOVAX,DATA
MOVDS,AX
XORAX,AX
XORBX,BX
XORCX,CX
XORDH,DH
CALLCOUNTGRADE
CALLOUTPUT
MOVAH,4CH
INT21H
MAINENDP
COUNTGRADEPROCNEAR
MOVDI,0
L0:
CMPGRADE[DI],60
JBL1
CMPGRADE[DI],70
JBL2
CMPGRADE[DI],80
JBL3
CMPGRADE[DI],90
JBL4
CMPGRADE[DI],100
JBL5
INCAL
JMPCONTINUE
L1:
INCBH
JMPCONTINUE
L2:
INCBL
JMPCONTINUE
L3:
INCCH
JMPCONTINUE
L4:
INCCL
JMPCONTINUE
L5:
INCDH
JMPCONTINUE
CONTINUE:
INCDI
DECCOUNT
JNZL0
RET
COUNTGRADEENDP
OUTPUTPROCNEAR
MOVAH,0
PUSHAX
PUSHDX
PUSHCX
PUSHBX
LEADX,A
MOVAH,9
INT21H
POPBX
MOVDL,BH
ADDDL,30H
MOVAH,2
INT21H
LEADX,B
MOVAH,9
INT21H
MOVDL,BL
ADDDL,30H
MOVAH,2
INT21H
LEADX,C
MOVAH,9
INT21H
POPBX
MOVDL,BH
ADDDL,30H
MOVAH,2
INT21H
LEADX,D
MOVAH,9
INT21H
MOVDL,BL
ADDDL,30H
MOVAH,2
INT21H
LEADX,E
MOVAH,9
INT21H
POPBX
MOVDL,BH
ADDDL,30H
MOVAH,2
INT21HMOVAH,2
LEADX,FINT21H
MOVAH,9RET
INT21HOUTPUTENDP
POPBXCODEENDS
MOVDL,BLENDSTART
ADDDL,30H
程序运行截图:
实验三循环补充实验
实验说明:
从键盘输入一系列字符串(以回车符结束),按字母、数字和其它字符分类计数,最后显示出这三类的计数结果。
程序清单:
datasegment
adb0ah,0dh,'字母个数:
','$'
bdb0ah,0dh,'数字个数:
','$'
cdb0ah,0dh,'其他字符个数:
','$'
dataends
codesegment
assumecs:
code,ds:
data
mainprocfar
start:
pushds
subax,ax
pushax
movax,data
movds,ax
subcx,cx
subbl,bl
lab0:
movah,1
int21h
lab4:
leadx,a
movah,9
int21h
movdl,cl
ordl,30h
movah,2
int21h
leadx,b
movah,9
int21h
movdl,ch
ordl,30h
movah,2
int21h
leadx,c
movah,9
int21h
movdl,bl
ordl,30h
movah,2
int21h
ret
mainendp
codeends
endstart
cmpal,0dh
jzlab4
cmpal,'0'
jblab3
cmpal,'9'
jalab1
incch
jmplab0
lab1:
cmpal,'A'
jblab3
cmpal,'Z'
jalab2
inccl
jmplab0
lab2:
cmpal,'a'
jblab3
cmpal,'z'
jalab3
inccl
jmplab0
lab3:
incbl
jmplab0
程序运行截图: