精校版西电微机原理上机Word格式文档下载.docx
- 文档编号:21272600
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:44
- 大小:395.44KB
精校版西电微机原理上机Word格式文档下载.docx
《精校版西电微机原理上机Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《精校版西电微机原理上机Word格式文档下载.docx(44页珍藏版)》请在冰豆网上搜索。
MOVES,AX
MOVAX,STACK
MOVSS,AX
LEASP,TOP
MOVCX,100
LEASI,BUFFER
LEADI,BUF
L1:
MOVAX,[SI]
INCSI
MOV[DI],AX
INCDI
LOOPL1
MOVCX,100
DECCX
LEASI,BUFFER
PUSHCX
ADDCX,CX
ADDSI,CX
POPCX
L2:
PUSHSI
L3:
MOVAX,[SI]
CMPAX,[SI-2]
JAENOXCHG
XCHGAX,[SI-2]
MOV[SI],AX
NOXCHG:
SUBSI,2
LOOPL3
POPSI
LOOPL2
L4:
MOVAX,[SI]
CALLDISPAX
ADDSI,2
CALLXIAOYU
CALLXUHAO
CALLDAYU
CALLDISPCR
LOOPL4
MOVAH,4CH
MOVAL,0
INT21H
DISPAXPROCNEAR
PUSHAX
PUSHBX
PUSHDX
PUSHDI
MOVBX,10
MOVCX,3
L7:
XORDX,DX
DIVBX
MOV[DI],DX
LOOPL7
MOVCX,3
L8:
DECDI
MOVAL,[DI]
ADDAL,30H
MOVAH,02
MOVDL,AL
LOOPL8
POPDI
POPDX
POPBX
POPAX
RET
DISPAXENDP
DISPCRPROCNEAR
MOVAH,2
MOVDL,0AH
MOVAH,2
MOVDL,0DH
DISPCRENDP
XIAOYUPROCNEAR
MOVDL,3CH
XIAOYUENDP
XUHAOPROCNEAR
MOVBX,AX
LEASI,BUF
L5:
CMPBX,[SI]
JZL6
LOOPL5
L6:
MOVAX,101
SUBAX,CX
RET
XUHAOENDP
DAYUPROCNEAR
MOVAH,02
MOVDL,3EH
DAYUENDP
CODEENDS
ENDSTART
4.38(上机题)按同余法产生一组随机数N(1<
N〈=50),并按N+50赋给45名同学的5门课程的成绩,要求编程实现计算每个同学的平均成绩,并根据平均成绩统计全班的成绩各等级的人数(A:
90~100,B:
80~89,C:
70~79,D:
66~69,E:
60~65,F:
60分以下),按下列格式显示:
Total〈总人数>
A:
<
人数1>
B:
人数2>
C:
〈人数3〉
D:
〈人数4>
E:
人数5〉
F:
〈人数6〉
算法流程图:
通过该问题,进一步练习了通过流程图分析设计程序的功能,掌握了随机数产生,子函数调用,分支程序,循环程序,中断调用等过程,进行了调试,找出了数值无法转化为十进制并显示的问题,原因在于未定义临时存储单元。
最后进行了汇编,链接等,得到了最终结果。
问题1:
NUMEER(用来存储各等级人数)存储单元清零后,忘记让DI再次指向其首地址,也就是各成绩等级的人数并未存入NUMBER,因此显示的都是0
改正后得到正确结果!
问题2:
直接照搬课本数值转换子程序,未定义临时存储单元DECIMAL,导致编译出错,出现语法错误!
改正后得到正确结果!
BUFFERLABELBYTE
REPT225
X=(X+97)mod50
DBX
BUFDB45DUP(?
NUMBERDW6DUP(?
TOTALDB54H,6FH,74H,61H,6CH
LETTERDB41H,42H,43H,44H,45H,46H
DECIMALDB5DUP(?
CODE,DS:
DATA,ES:
START:
MOVAX,DATA
MOVDS,AX
MOVSS,AX
LEASP,TOP
MOVCX,45
L1:
MOVCX,5
XORAX,AX
MOVBL,[SI]
MOVBH,0
ADDAX,BX
ADDAX,50
MOVBL,5
DIVBL
MOV[DI],AL
LEADI,NUMBER
MOVCX,6
MOVAX,0
L3:
MOV[DI],AX
MOVCX,45
MOVBX,1
LEADI,NUMBER
L4:
MOVAL,[SI]
CMPAL,90
JAELA
CMPAL,80
JAELB
CMPAL,70
JAELC
CMPAL,66
JAELD
CMPAL,60
JAELM
ADD[DI+10],BX
JMPL5
LA:
ADD[DI],BX
LB:
ADD[DI+2],BX
LC:
ADD[DI+4],BX
LD:
ADD[DI+6],BX
LM:
ADD[DI+8],BX
LEASI,TOTAL
MOVCX,5
L6:
MOVDL,[SI]
LOOPL6
CALLKONGGE
MOVAX,45
MOVCX,6
LEASI,LETTER
MOVDL,[SI]
MOVDL,3AH
MOVAX,[DI]
MOVAH,4CH
MOVAL,0
KONGGEPROCNEAR
MOVDL,20H
KONGGEENDP
MOVDL,0AH
MOVDL,3CH
LEADI,DECIMAL
CALLTRANS16TO10
LEADI,DECIMAL+4
DISPAX2:
MOVDL,[DI]
ADDDL,30H
LOOPDISPAX2
TRANS16TO10PROCNEAR
PUSHCX
MOVBX,10
TRANS1:
MOV[DI],DL
LOOPTRANS1
TRANS16TO10ENDP
4。
39(上机题)编写程序实现下列5项功能,通过从键盘输入1~5进行菜单式选择:
(1)按数字键“1”,完成将字符串中的小写字母变换成大写字母。
用户输入由英文大小写字母或数字0~9组成的字符串(以回车结束),变换后按下列格式在屏幕上显示:
原字符串〉例如:
abcdgyt0092
〈新字符串〉ABCDGYT0092
按任一键重做;
按Esc键返回主菜单。
(2)按数字键“2"
,完成在字符串中找最大值。
用户输入由英文大小写字母或数字
0~9组成的字符串(以回车结束),找出最大值后按下列格式在屏幕上显示:
原字符串〉Themaximumis〈最大值〉.
按Esc键返回主菜单.
(3)按数字键“3”,完成输入数据组的排序。
用户输入一组十进制数值(小于255),
然后变换成十六进制数,并按递增方式进行排序,按下列格式在屏幕上显示:
〈原数值串〉
新数值串〉
(4)按数字键“4”,完成时间的显示。
首先提示用户对时,即改变系统的定时器
HH:
MM:
SS(以冒号间隔,回车结束),然后在屏幕的右上角实时显示出时
间:
HH:
SS。
按任一键重新对时;
(5)按数字键“5”,结束程序的运行,返回操作系统。
程序流程图:
主函数:
功能1:
功能2:
功能3:
功能4:
此程序共5个功能,采用跳转表法来实现多路分支结构程序设计.现将这5个程序段,各程序段的首地址分别标号。
将5个程序段的入口地址做成表TABLE放入数据段,程序根据给定的参数计算出欲转入的程序段的首地址在TABLE中的位置后,取出该地址,跳转至该程序段。
然后执行该程序段功能。
执行完后根据选择决定是重复执行改程序还是跳出选择其他程序执行。
未在输入字符串末尾加上'
$’,导致出错,将后续存储区域的混乱字符全部显示出来!
修改:
MOVBYTEPTR[BX],'
$'
;
在输入字符串尾加结束标志$
排序子函数出现问题
各数值只转化为16进制,并未排序,调用过程出现问题!
问题3:
实现显示位置不对,未设置显示位置坐标!
运行结果:
主函数:
功能1:
功能2:
功能3:
功能5:
程序代码:
STACKSEGMENTSTACK
DB256DUP(?
TOPLABELWORD
DATASEGMENT
TABLEDWL1,L2,L3,L4,L5
STRING1DB’1.Changestring;
’,0DH,0AH,'
$'
STRING2DB'
2.Findthemaximum;
'
0DH,0AH,'
STRING3DB'
3.Rank;
0DH,0AH,’$’
STRING4DB’4.Time;
’,0DH,0AH,'
$’
STRING5DB’5。
Exit。
STRINGNDB’Inputthenumber1-5:
$’
STRBUFDB'
Inputthestring:
’,0DH,0AH,’$'
MAXCHRDB’Themaximumis$'
NUMBERDB'
Inputthenumbers:
'
,0DH,0AH,’$'
TIMESDB'
Correctthetime(HH:
SS):
$'
STRBUF2DB’PressESCtoexit;
orpressanykeytocontinue$’
KEYBUFDB61
DB?
DB61DUP(?
NUMBUFDB?
DB20DUP(?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
MOVAX,DATA
MOVDS,AX
MOVAX,STACK
MOVSS,AX
LEASP,TOP
MAIN:
CALLFARPTRMENU
AGAIN:
MOVAH,2
MOVBH,0
MOVDL,41
MOVDH,10
INT10H
MOVAH,1
INT21H
CMPAL,’1'
JBAGAIN
CMPAL,'
5'
JAAGAIN
SUBAL,’1'
SHLAL,1
CBW
LEABX,TABLE
ADDBX,AX
JMPWORDPTR[BX]
CALLFARPTRCHGLTR
MOVAH,8
CMPAL,1BH
JZMAIN
JMPL1
L2:
CALLFARPTRMAXLTR
MOVAH,8
JMPL2
CALLFARPTRSORTNUM
CMPAL,1BH
JMPL3
CALLFARPTRTIMCHK
JZMAIN
JMPL4
MOVAH,4CH
MENUPROCFAR;
设置显示器方式
MOVAH,0
MOVAL,3;
MOVBL,0;
MOVAH,2
MOVBH,0
MOVDL,5
MOVDH,5
MOVAH,9
LEADX,STRING1
MOVDH,6
LEADX,STRING2
MOVDL,5
MOVDH,7
MOVAH,9
LEADX,STRING3
MOVDH,8
LEADX,STRING4
MOVDH,9
LEADX,STRING5
MOVDH,10
LEADX,STRINGN
RET
MENUENDP
CHGLTRPROCFAR
RECHG:
MOVAH,0
MOVAL,3
MOVBL,0
MOVDH,5
LEADX,STRBUF
INT21H;
输入字符串提示
MOVDH,6
MOVAH,0AH
LEADX,KEYBUF
INT21H;
输入字符串
CMPKEYBUF+1,0
JZRECHG;
判断输入字符串是否为空串
LEABX,KEYBUF+2
MOVAL,KEYBUF+1
CBW
MOVCX,AX
ADDBX,AX
MOVBYTEPTR[BX],'
$’;
在输入字符串尾加结束标志$
MOVDH,7
INT10H
LCHG:
CMPBYTEPTR[BX],61H
JBNOCHG
ANDBYTEPTR[BX],0DFH
NOCHG:
INCBX
LOOPLCHG;
将字符串中小写字母转换成大写字母
LEADX,KEYBUF+2
输出新字符串
MOVDH,9
LEADX,STRBUF2
输出提示信息
CHGLTRENDP
MAXLTRPROCFAR;
在输入字符串中找出最大值
REMAX:
;
MOVAL,3
I
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精校版西电 微机 原理 上机