大学汇编实验报告答案(软件)(2)
INT 21H ;提示用户输入
MOV SI,0
MOV COUNT,0 ;将输入用户的输入个数置0
_ENTER: ;对用户的输入进行监视,对错误输入立即进行出错处理 CALL DECIBIN ;调用DECIBIN ;对用户输入进行处理 INC COUNT
CMP DL,',' ;与','比较,相同则保存成绩,不同出错 JE _STORE
CMP DL,0DH ;与回车键进行比较,回车则成绩输入结束 JE _ENDENTER
JNE _ERROR ;出错处理:显示出错信息 _STORE: ;保存成绩 MOV GRADE[SI],BX ADD SI,2 JMP _ENTER _ERROR:
LEA DX,ERROR MOV AH,9 INT 21H
_ENDENTER: ;用户结束成绩输入 MOV GRADE[SI],BX
MOV DX,OFFSET CR ;换行 MOV AH,9 INT 21H RET INPUT ENDP
;RANKP程序段
;从grade数组取得一个班的成绩,以学号为序计算出该班每个学生的名次存入rank数组。
;算法为:一个学生的名次等于成绩高于该生的学生人数加1
RANKP PROC NEAR
MOV DI,COUNT MOV BX,0 _LOOP:
MOV AX,GRADE[BX] ;取学生成绩
MOV WORD PTR RANK[BX],0 ;初始化RANK[BX]的值为0 MOV CX,COUNT
LEA SI,GRADE ;第一个学生的成绩 _NEXT1:
CMP AX,[SI] ;比较两个成绩
JG _JUMP ;成绩大于被比较的跳过 INC WORD PTR RANK[BX] _JUMP:
ADD SI,2 ;取下一个被比较成绩的地址 LOOP _NEXT1
ADD BX,2 ; 下一个成绩
DEC DI ;未比较成绩个数减1 JNE _LOOP RET RANKP ENDP
;OUTPUT程序段
;从rank数组取得一个班的学生名次。把一个班的学生名次以学号为序在终端显示出来 ;调用子模块binidec,以便把rank数组中的二进制数转成十进制数并在终端上显示出来.调用子模块crlf完成回车,换行功能.
OUTPUT PROC NEAR
LEA DX,SHOW MOV AH,09H INT 21H
MOV SI,0
MOV DI,COUNT _NEXT2:
MOV BX,RANK[SI] ;将成绩保存到BX中 CALL BINIDEC ;调用BINIDEC
CMP DI,1 ;将剩余的成绩个数与1比较,若为1则不显示',' JE _NOCOMMA MOV DL,',' MOV AH,02H
INT 21H ;显示','
_NOCOMMA:
ADD SI,02H ;取下一个成绩名次 DEC DI
JNZ _NEXT2
MOV DX,OFFSET CR ;换行 MOV AH,9 INT 21H RET OUTPUT ENDP
;DECIBIN程序段
;从键盘取得一个十进制数。把该数转换成二进制数并存入BX寄存器中。
DECIBIN PROC NEAR
MOV BX,0 _CATCH:
MOV AH,01H INT 21H
MOV DL,AL
SUB AL,30H
JL _ENDCHANGE ;小于则结束SFVOF=1 CMP AL,39H
JG _ENDCHANGE ;大于则结束 CBW
XCHG AX,BX ;AX与BX值交换 MOV CX,10
MUL CX ;无符号数乘法指令,(AX)<----(AL)*(CX)
XCHG AX,BX
ADD BX,AX ;(BX)<------(BX)+(AX) JMP _CATCH _ENDCHANGE:
RET DECIBIN ENDP
;BINIDEC程序段
;把bx寄存器中的二进制数转换成10进制数,并在终端屏幕上显示出来。调用dec_div来作除法运算并显示字符。
BINIDEC PROC NEAR
PUSH BX PUSH CX PUSH SI
PUSH DI ;压栈
MOV CX,10
CALL DEC_DIV ;调用DEC_DIV
MOV CX,1
CALL DEC_DIV ;调用DEC_DIV
POP DI POP SI POP CX
POP BX ;出栈 RET BINIDEC ENDP
;DEC_DIV程序段
;把bx中二进制数除以相应的十的幂,并在屏幕上显示一位商。余数保存在bx寄存器中。
DEC_DIV PROC NEAR
MOV AX,BX MOV DX,0 DIV CX
MOV BX,DX MOV DL,AL ADD DL,30H
MOV AH,02H
INT 21H ;显示 RET DEC_DIV ENDP
CODE ENDS END START
运行结果:
1、 思考题:
(1)写出4位BCD码转二进制数的算法。 设AX寄存器中存放着4位BCD码 BCDTO2 PROC NEAR PUSH BX PUSH CX PUSH DX
MOV BX, AX ;保存AX中的BCD码到BX MOV AX, 0 ;结果单元清0
MOV CX, 4 ;共处理4位BCD码 RETRY: PUSH CX MOV CL, 4
ROL BX, CL ;最高1位BCD码移到BX中的低半字节 …… 此处隐藏:915字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [建筑文档]2018年公需课:专业技术人员创新能力与
- [建筑文档]2013年福建教师招考小学数学历年真题
- [建筑文档]高中信息技术课flash知识点总结 - 图文
- [建筑文档]电工实训 - 图文
- [建筑文档]最高院公告案例分析100篇(民商篇)
- [建筑文档]南开中学高2017级14-15学年(上)期末
- [建筑文档]五粮液集团战略分析
- [建筑文档]鲁教版(2012秋季版)九年级化学 酸碱
- [建筑文档]超星尔雅2017中国哲学概论自整理题库答
- [建筑文档]关于成为海口金盘饮料公司材料独家供货
- [建筑文档]LNG学习资料第一册 基础知识 - 图文
- [建筑文档]四年级品社下册《好大一个家》复习资料
- [建筑文档]现阶段领导权力腐败的特点及发展趋势
- [建筑文档]魏晋南北朝诗歌鉴赏—嵇康
- [建筑文档]坚持追求真爱是理智的行为 正方一辩稿
- [建筑文档]湘西州刑释解教人员帮教安置工作存在的
- [建筑文档]园林工程试题库及答案
- [建筑文档]计算机长期没有向WSUS报告状态
- [建筑文档]日语最新流行语
- [建筑文档]B62-016 景观进场交底专题会议
- 2018年中考语文课内外古诗词鉴赏专题复
- 高考试题研究心得体会
- C语言基础题及答案
- 电气控制及PLC习题及答案
- 都昌小学家长学校汇报材料
- GMAT作文模板正确使用方法
- 俄军办坦克大赛:中国99式有望与豹2A6
- 成本会计练习题
- 酒店餐饮业最流行的5S管理方法
- 2014-2015学年山东省菏泽市高二(下)
- 《黄鹤楼送孟浩然之广陵》教案、说课、
- 2013年结构化学自测题 有答案版
- 2011西安世界园艺博览会游览解说词(附
- 窗口文明单位示范单位创建活动总结
- 2018满分超星尔雅就业课后练习期末答案
- 韶山市城市总体规划-基础资料
- 苏教版第三单元知识点归纳
- 第4章 曲轴模态分析
- 加大查办案件力度的思考
- 武汉CPC导轨介绍




