精校版西电微机原理上机.docx
- 文档编号:8136354
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:44
- 大小:395.44KB
精校版西电微机原理上机.docx
《精校版西电微机原理上机.docx》由会员分享,可在线阅读,更多相关《精校版西电微机原理上机.docx(44页珍藏版)》请在冰豆网上搜索。
精校版西电微机原理上机
(完整word版)西电微机原理上机
编辑整理:
尊敬的读者朋友们:
这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整word版)西电微机原理上机)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整word版)西电微机原理上机的全部内容。
4.37(上机题)编写程序实现,将缓冲区BUFFER中的100个字按递增排序,并按下列格式顺序显示:
数据1〈原序号〉
数据2〈原序号>
……
算法流程图:
调试问题、心得体会:
通过这道题,熟悉了流程图画法,掌握了产生随机数,“冒泡法"排序,子函数编写调用等的基本过程,尤其对于中断调用,并利用ASCII码回显和对课本字节型数据“冒泡法”排序改进为字形排序的过程,是我受益匪浅。
并且亲身实践了源程序的汇编、调试也连接。
问题:
将字节型冒泡法直接应用于该题,导致出错,该题存储的是字型数据!
原因在于只是排列的AL中的数值,并不是产生的随机数!
同时对于字型与字节型在运算类指令中的应用还是有误,以及其他的一些小错误,应加以改善!
运行结果:
程序代码:
STACKSEGMENTSTACK'STACK’
DW100HDUP(?
)
TOPLABELWORD
STACKENDS
DATASEGMENT
BUFFERLABELWORD
X=17
REPT100
X=(X+80)mod43
DWX
ENDM
BUFDW100DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVAX,STACK
MOVSS,AX
LEASP,TOP
MOVCX,100
LEASI,BUFFER
LEADI,BUF
L1:
MOVAX,[SI]
INCSI
INCSI
MOV[DI],AX
INCDI
INCDI
LOOPL1
MOVCX,100
DECCX
LEASI,BUFFER
PUSHCX
ADDCX,CX
ADDSI,CX
POPCX
L2:
PUSHCX
PUSHSI
L3:
MOVAX,[SI]
CMPAX,[SI-2]
JAENOXCHG
XCHGAX,[SI-2]
MOV[SI],AX
NOXCHG:
SUBSI,2
LOOPL3
POPSI
POPCX
LOOPL2
MOVCX,100
LEASI,BUFFER
L4:
MOVAX,[SI]
CALLDISPAX
ADDSI,2
CALLXIAOYU
CALLXUHAO
CALLDAYU
CALLDISPCR
LOOPL4
MOVAH,4CH
MOVAL,0
INT21H
DISPAXPROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
PUSHDI
MOVBX,10
MOVCX,3
L7:
XORDX,DX
DIVBX
MOV[DI],DX
INCDI
INCDI
LOOPL7
MOVCX,3
L8:
DECDI
DECDI
MOVAL,[DI]
ADDAL,30H
MOVAH,02
MOVDL,AL
INT21H
LOOPL8
POPDI
POPDX
POPCX
POPBX
POPAX
RET
DISPAXENDP
DISPCRPROCNEAR
PUSHAX
PUSHDX
MOVAH,2
MOVDL,0AH
INT21H
MOVAH,2
MOVDL,0DH
INT21H
POPDX
POPAX
RET
DISPCRENDP
XIAOYUPROCNEAR
PUSHAX
PUSHDX
MOVAH,02
MOVDL,3CH
INT21H
POPDX
POPAX
RET
XIAOYUENDP
XUHAOPROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHSI
MOVCX,100
MOVBX,AX
LEASI,BUF
L5:
CMPBX,[SI]
JZL6
ADDSI,2
LOOPL5
L6:
MOVAX,101
SUBAX,CX
CALLDISPAX
POPSI
POPCX
POPBX
POPAX
RET
XUHAOENDP
DAYUPROCNEAR
PUSHAX
PUSHDX
MOVAH,02
MOVDL,3EH
INT21H
POPDX
POPAX
RET
DAYUENDP
CODEENDS
ENDSTART
4.38(上机题)按同余法产生一组随机数N(1 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,导致编译出错,出现语法错误! 改正后得到正确结果! 运行结果: 程序代码: STACKSEGMENTSTACK'STACK’ DW100HDUP(? ) TOPLABELWORD STACKENDS DATASEGMENT BUFFERLABELBYTE X=17 REPT225 X=(X+97)mod50 DBX ENDM BUFDB45DUP(? ) NUMBERDW6DUP(? ) TOTALDB54H,6FH,74H,61H,6CH LETTERDB41H,42H,43H,44H,45H,46H DECIMALDB5DUP(? ) DATAENDS CODESEGMENT ASSUMECS: CODE,DS: DATA,ES: DATA,SS: STACK START: MOVAX,DATA MOVDS,AX MOVES,AX MOVAX,STACK MOVSS,AX LEASP,TOP LEASI,BUFFER LEADI,BUF MOVCX,45 L1: PUSHCX MOVCX,5 XORAX,AX L2: MOVBL,[SI] MOVBH,0 ADDAX,BX ADDAX,50 INCSI LOOPL2 POPCX MOVBL,5 DIVBL MOV[DI],AL INCDI LOOPL1 LEASI,BUF LEADI,NUMBER MOVCX,6 MOVAX,0 L3: MOV[DI],AX INCDI INCDI LOOPL3 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 JMPL5 LB: ADD[DI+2],BX JMPL5 LC: ADD[DI+4],BX JMPL5 LD: ADD[DI+6],BX JMPL5 LM: ADD[DI+8],BX L5: INCSI LOOPL4 LEASI,TOTAL MOVCX,5 L6: MOVAH,02 MOVDL,[SI] INT21H INCSI LOOPL6 CALLKONGGE CALLXIAOYU MOVAX,45 CALLDISPAX CALLDAYU CALLDISPCR MOVCX,6 LEASI,LETTER LEADI,NUMBER L7: MOVAH,02 MOVDL,[SI] INT21H INCSI MOVAH,02 MOVDL,3AH INT21H CALLKONGGE CALLXIAOYU MOVAX,[DI] CALLDISPAX INCDI INCDI CALLDAYU CALLDISPCR LOOPL7 MOVAH,4CH MOVAL,0 INT21H KONGGEPROCNEAR PUSHAX PUSHDX MOVAH,02 MOVDL,20H INT21H POPDX POPAX RET KONGGEENDP DISPCRPROCNEAR PUSHAX PUSHDX MOVAH,2 MOVDL,0AH INT21H MOVAH,2 MOVDL,0DH INT21H POPDX POPAX RET DISPCRENDP XIAOYUPROCNEAR PUSHAX PUSHDX MOVAH,02 MOVDL,3CH INT21H POPDX POPAX RET XIAOYUENDP DAYUPROCNEAR PUSHAX PUSHDX MOVAH,02 MOVDL,3EH INT21H POPDX POPAX RET DAYUENDP DISPAXPROCNEAR PUSHAX PUSHBX PUSHCX PUSHDX PUSHDI LEADI,DECIMAL CALLTRANS16TO10 MOVCX,5 LEADI,DECIMAL+4 MOVAH,2 DISPAX2: MOVDL,[DI] ADDDL,30H DECDI INT21H LOOPDISPAX2 POPDI POPDX POPCX POPBX POPAX RET DISPAXENDP TRANS16TO10PROCNEAR PUSHAX PUSHBX PUSHCX PUSHDX PUSHDI MOVBX,10 MOVCX,5 TRANS1: XORDX,DX DIVBX MOV[DI],DL INCDI LOOPTRANS1 POPDI POPDX POPCX POPBX POPAX RET TRANS16TO10ENDP CODEENDS ENDSTART 4。 39(上机题)编写程序实现下列5项功能,通过从键盘输入1~5进行菜单式选择: (1)按数字键“1”,完成将字符串中的小写字母变换成大写字母。 用户输入由英文大小写字母或数字0~9组成的字符串(以回车结束),变换后按下列格式在屏幕上显示: <原字符串〉例如: abcdgyt0092 〈新字符串〉ABCDGYT0092 按任一键重做;按Esc键返回主菜单。 (2)按数字键“2",完成在字符串中找最大值。 用户输入由英文大小写字母或数字 0~9组成的字符串(以回车结束),找出最大值后按下列格式在屏幕上显示: <原字符串〉Themaximumis〈最大值〉. 按任一键重做;按Esc键返回主菜单. (3)按数字键“3”,完成输入数据组的排序。 用户输入一组十进制数值(小于255), 然后变换成十六进制数,并按递增方式进行排序,按下列格式在屏幕上显示: 〈原数值串〉 <新数值串〉 按任一键重做;按Esc键返回主菜单。 (4)按数字键“4”,完成时间的显示。 首先提示用户对时,即改变系统的定时器 HH: MM: SS(以冒号间隔,回车结束),然后在屏幕的右上角实时显示出时 间: HH: MM: SS。 按任一键重新对时;按Esc键返回主菜单。 (5)按数字键“5”,结束程序的运行,返回操作系统。 程序流程图: 主函数: 功能1: 功能2: 功能3: 功能4: 调试问题、心得体会: 此程序共5个功能,采用跳转表法来实现多路分支结构程序设计.现将这5个程序段,各程序段的首地址分别标号。 将5个程序段的入口地址做成表TABLE放入数据段,程序根据给定的参数计算出欲转入的程序段的首地址在TABLE中的位置后,取出该地址,跳转至该程序段。 然后执行该程序段功能。 执行完后根据选择决定是重复执行改程序还是跳出选择其他程序执行。 问题1: 未在输入字符串末尾加上'$’,导致出错,将后续存储区域的混乱字符全部显示出来! 修改: MOVBYTEPTR[BX],'$';在输入字符串尾加结束标志$ 问题2: 排序子函数出现问题 各数值只转化为16进制,并未排序,调用过程出现问题! 问题3: 实现显示位置不对,未设置显示位置坐标! 改正后得到正确结果! 运行结果: 主函数: 功能1: 功能2: 功能3: 功能4: 功能5: 程序代码: STACKSEGMENTSTACK DB256DUP(? ) TOPLABELWORD STACKENDS 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。 ',0DH,0AH,'$' STRINGNDB’Inputthenumber1-5: $’ STRBUFDB'Inputthestring: ’,0DH,0AH,’$' MAXCHRDB’Themaximumis$' NUMBERDB'Inputthenumbers: ',0DH,0AH,’$' TIMESDB'Correctthetime(HH: MM: SS): $' STRBUF2DB’PressESCtoexit;orpressanykeytocontinue$’ KEYBUFDB61 DB? DB61DUP(? ) NUMBUFDB? DB20DUP(? ) DATAENDS CODESEGMENT ASSUMECS: CODE,DS: DATA,SS: STACK START: 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] L1: CALLFARPTRCHGLTR MOVAH,8 INT21H CMPAL,1BH JZMAIN JMPL1 L2: CALLFARPTRMAXLTR MOVAH,8 INT21H CMPAL,1BH JZMAIN JMPL2 L3: CALLFARPTRSORTNUM MOVAH,8 INT21H CMPAL,1BH JZMAIN JMPL3 L4: CALLFARPTRTIMCHK MOVAH,8 INT21H CMPAL,1BH JZMAIN JMPL4 L5: MOVAH,4CH INT21H MENUPROCFAR;设置显示器方式 MOVAH,0 MOVAL,3; MOVBL,0; INT10H MOVAH,2 MOVBH,0 MOVDL,5 MOVDH,5 INT10H MOVAH,9 LEADX,STRING1 INT21H MOVAH,2 MOVDL,5 MOVDH,6 INT10H MOVAH,9 LEADX,STRING2 INT21H MOVAH,2 MOVDL,5 MOVDH,7 INT10H MOVAH,9 LEADX,STRING3 INT21H MOVAH,2 MOVDL,5 MOVDH,8 INT10H MOVAH,9 LEADX,STRING4 INT21H MOVAH,2 MOVDL,5 MOVDH,9 INT10H MOVAH,9 LEADX,STRING5 INT21H MOVAH,2 MOVDL,5 MOVDH,10 INT10H MOVAH,9 LEADX,STRINGN INT21H RET MENUENDP CHGLTRPROCFAR RECHG: MOVAH,0 MOVAL,3 MOVBL,0 INT10H MOVAH,2 MOVBH,0 MOVDL,5 MOVDH,5 INT10H MOVAH,9 LEADX,STRBUF INT21H;输入字符串提示 MOVAH,2 MOVDL,5 MOVDH,6 INT10H MOVAH,0AH LEADX,KEYBUF INT21H;输入字符串 CMPKEYBUF+1,0 JZRECHG;判断输入字符串是否为空串 LEABX,KEYBUF+2 MOVAL,KEYBUF+1 CBW MOVCX,AX ADDBX,AX MOVBYTEPTR[BX],'$’;在输入字符串尾加结束标志$ MOVAH,2 MOVBH,0 MOVDL,5 MOVDH,7 INT10H LEABX,KEYBUF+2 LCHG: CMPBYTEPTR[BX],61H JBNOCHG ANDBYTEPTR[BX],0DFH NOCHG: INCBX LOOPLCHG;将字符串中小写字母转换成大写字母 MOVAH,9 LEADX,KEYBUF+2 INT21H;输出新字符串 MOVAH,2 MOVBH,0 MOVDL,5 MOVDH,9 INT10H MOVAH,9 LEADX,STRBUF2 INT21H;输出提示信息 RET CHGLTRENDP MAXLTRPROCFAR;在输入字符串中找出最大值 REMAX: ;设置显示器方式 MOVAH,0 MOVAL,3 MOVBL,0 INT10H MOVAH,2 MOVBH,0 MOVDL,5 MOVDH,5 I
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精校版西电 微机 原理 上机