西电微机原理大作业

合集下载

西电 机电微机原理实验报告

西电 机电微机原理实验报告

微机原理实验报告姓名:学号:实验一8259中断实验一、实验目的1.掌握PC机中断处理系统的基本原理。

2.掌握外部扩展中断源的设计方法。

3.学会编写中断服务程序。

二、实验原理PC机用户可使用的硬件中断只有可屏蔽中断,由8259中断控制器管理。

中断控制器用于接收外部的中断请求信号,经过优先级判别等处理后向CPU发出可屏蔽中断请求。

三、实验内容实验要求实现8259控制器的IR1、IR3两路中断都可以通过IRQ向PC机发起中断请求,用SP1、SP2单次脉冲模拟两个中断源。

IR1中断时,在它的中断服务程序中编程显示“IR1 OK AND EXIT!”;IR3中断时,在它的中断服务程序中编程显示“IR3 OK AND EXIT!”。

采用查询方式完成。

图1-1 扩展中断电路四、实验步骤1、连接线路SP1和SP2分别接到IR1和IR3,IR1和IR3与L0和L1指示灯相连,8259CS 接到Y0上,最后将/RD、/WR、INT分别与IOR、IOW、IRQ相连接,连接好后打开电源。

2、编写程序3、汇编、编译、连接及运行五、实验程序DATA SEGMENTIOPORT EQU 0FF00H-0280HMY8259_ICW1 EQU IOPORT +280H ;实验系统中8259的ICW1端口地址MY8259_ICW2 EQU IOPORT +281H ;实验系统中8259的ICW2端口地址MY8259_ICW3 EQU IOPORT +281H ;实验系统中8259的ICW3端口地址MY8259_ICW4 EQU IOPORT +281H ;实验系统中8259的ICW4端口地址MY8259_OCW1 EQU IOPORT +281H ;实验系统中8259的OCW1端口地址MY8259_OCW2 EQU IOPORT +280H ;实验系统中8259的OCW2端口地址MY8259_OCW3 EQU IOPORT +280H ;实验系统中8259的OCW3端口地址MSG1 DB 0DH,0AH,'DVCC PCI CARD INTERRUPT',0DH,0AH,'$'MSG2 DB 0DH,0AH,'PRESS ANY KEY TO EXIT!',0DH,0AH,'$'MSG3 DB 0DH,0AH,'IR1 OK AND EXIT!',0DH,0AH,'$'MSG4 DB 0DH,0AH,'IR3 OK AND EXIT!',0DH,0AH,'$'DATA ENDSSTACKS SEGMENTDB 100 DUP (?)STACKS ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKS,ES:DATASTART: MOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,STACKSMOV SS,AXMOV AX,DATAMOV DS,AXMOV DX,OFFSET MSG1MOV AH,09HINT 21HMOV DX,OFFSET MSG2MOV AH,09HINT 21HSTART1: MOV DX,MY8259_ICW1 ;初始化实验系统中8259的ICW1 MOV AL,13H ;边沿触发、单片8259、需要ICW4OUT DX,ALMOV DX,MY8259_ICW2 ;初始化实验系统中8259的ICW2MOV AL,08HOUT DX,ALMOV DX,MY8259_ICW4 ;初始化实验系统中8259的ICW4MOV AL,01H ;非自动结束EOIOUT DX,ALMOV DX,MY8259_OCW1 ;初始化实验系统中8259的OCW1MOV AL,0F5H ;打开IR1和IR3的屏蔽位OUT DX,ALQUERY: MOV DX,MY8259_OCW3 ;向8259的OCW3发送查询命令MOV AL,0CHOUT DX,ALNOPNOPNOPMOV DX,MY8259_OCW3IN AL,DX ;读出查询字TEST AL,80H ;判断中断是否已响应JZ QUERY ;没有响应则继续查询AND AL,07HCMP AL,01HJE IR1ISR ;若为IR1请求,跳到IR1处理程序CMP AL,03HJE IR3ISR ;若为IR1请求,跳到IR1处理程序JMP EOIQUERY1: MOV DL,0FFHMOV AH,06HINT 21HJZ START1MOV AH,4CHINT 21HIR1ISR: MOV DX,OFFSET MSG3 ;IR1处理,显示字符串'IR1 OK AND EXIT'MOV AH,09HINT 21HJMP EOIIR3ISR: MOV DX,OFFSET MSG4 ;IR1处理,显示字符串'IR3 OK AND EXIT'MOV AH,09HINT 21HEOI: MOV DX,MY8259_OCW2 ;向实验系统中8259发送中断结束命令MOV AL,20HOUT DXMOV AL,20H ;SEND EOIOUT 0A0H,ALOUT 20H,ALPOP DSPOP DXPOP AXJMP START1CODE ENDSEND START六、实验结果接好电路,编好程序,打开电源后,两个LED指示L0和L1灯都熄灭;编译、链接、运行程序,8259控制器的IR1、IR3两路中断可通过IRQ向PC机发起中断请求,按下SP1,IR1中断,指示灯L0亮,电脑屏幕上显示“IR1 OK AND EXIT!”;按下SP2, IR3中断,指示灯L1亮,电脑屏幕上显示“IR3 OK AND EXIT!”七、实验中遇到的问题及解决方法最初认为要按照原理图把所有线都接上,后来知道了直接用排线连接就好,同时还能降低短路的可能性。

西电微机原理实验报告

西电微机原理实验报告

微机系统实验报告班级: 031214 学号: 03121370 姓名:孔玲玲地点: E-II-312 时间:第二批实验一汇编语言编程实验一、实验目的(1)掌握汇编语言的编程方法(2)掌握DOS功能调用的使用方法(3)掌握汇编语言程序的调试运行过程二、实验设备PC机一台。

三、实验内容(1)将指定数据区的字符串数据以ASCII码形式显示在屏幕上,并通过DOS功能调用完成必要提示信息的显示。

(2) 在屏幕上显示自己的学号姓名信息。

(3)循环从键盘读入字符并回显在屏幕上,然后显示出对应字符的ASCII码,直到输入“Q”或“q”时结束。

(4)自主设计输入显示信息,完成编程与调试,演示实验结果。

考核方式:完成实验内容(1)(2)(3)通过,完成实验内容(4)优秀。

实验中使用的DOS功能调用: INT 21H表3-1-1 显示实验中可使用DOS功能调用AH 值功能调用参数结果1 键盘输入并回显AL=输出字符2 显示单个字符(带Ctrl+Break检查) DL=输出字符光标在字符后面6 显示单个字符(无Ctrl+Break检查) DL=输出字符光标在字符后面8 从键盘上读一个字符AL=字符的ASCII码9 显示字符串DS:DX=串地址,‘$’为结束字符光标跟在串后面4CH 返回DOS系统AL=返回码四、实验步骤(1)运行QTHPCI软件,根据实验内容编写程序,参考程序流程如图3-1-1所示。

(2)使用“项目”菜单中的“编译”或“编译连接”命令对实验程序进行编译、连接。

(3)“调试”菜单中的“进行调试”命令进入Debug调试,观察调试过程中数据传输指令执行后各寄存器及数据区的内容。

按F9连续运行。

(4)更改数据区的数据,考察程序的正确性。

五、实验程序DATA SEGMENTBUFFER DB '03121370konglingling:',0AH,0DH,'$'BUFFER2 DB 'aAbBcC','$'BUFFER3 DB 0AH,0DH,'$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXmov ah,09hmov DX,OFFSET BUFFERint 21hMOV SI,OFFSET BUFFER2lab1:cmp BYTE PTR [SI],'$'je lab2MOV AL,DS:[SI]AND AL,0F0H ;取高4位MOV CL,4SHR AL,CLCMP AL,0AH ;是否是A以上的数JB C2ADD AL,07HC2: ADD AL,30HMOV DL,AL ;show characterMOV AH,02HINT 21HMOV AL,DS:[SI]AND AL,0FH ;取低4位CMP AL,0AHJB C3ADD AL,07HC3: ADD AL,30HMOV DL,AL ;show characterMOV AH,02HINT 21Hadd SI,1jmp lab1lab2:mov ah,09hmov DX,OFFSET BUFFER3int 21hmov ah,01hint 21hcmp al,'q'je lab3mov BL,ALAND AL,0F0H ;取高4位MOV CL,4SHR AL,CLCMP AL,0AH ;是否是A以上的数JB C4ADD AL,07HC4: ADD AL,30HMOV DL,AL ;show characterMOV AH,02HINT 21HMOV AL,BLAND AL,0FH ;取低4位CMP AL,0AHJB C5ADD AL,07HC5: ADD AL,30HMOV DL,AL ;show characterMOV AH,02HINT 21Hjmp lab2lab3:mov ah,4chint 21hCODE ENDSend START六、实验结果实验二数码转换实验一、实验目的(1)掌握不同进制数及编码相互转换的程序设计方法。

(完整word版)西电微机原理上机

(完整word版)西电微机原理上机

4.37 (上机题)编写程序实现,将缓冲区BUFFER中的100个字按递增排序,并按下列格式顺序显示:数据1 <原序号>数据2 <原序号>……算法流程图:调试问题、心得体会:通过这道题,熟悉了流程图画法,掌握了产生随机数,“冒泡法”排序,子函数编写调用等的基本过程,尤其对于中断调用,并利用ASCII码回显和对课本字节型数据“冒泡法”排序改进为字形排序的过程,是我受益匪浅。

并且亲身实践了源程序的汇编、调试也连接。

问题:将字节型冒泡法直接应用于该题,导致出错,该题存储的是字型数据!原因在于只是排列的AL中的数值,并不是产生的随机数!同时对于字型与字节型在运算类指令中的应用还是有误,以及其他的一些小错误,应加以改善!运行结果:程序代码:STACK SEGMENT STACK 'STACK'DW 100H DUP(?)TOP LABEL WORDSTACK ENDSDATA SEGMENTBUFFER LABEL WORDX=17REPT 100X=(X+80)mod 43DW XENDMBUF DW 100 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START:MOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,STACKMOV SS,AXLEA SP,TOPMOV CX,100LEA SI,BUFFERLEA DI,BUFL1:MOV AX,[SI]INC SIINC SIMOV [DI],AXINC DIINC DILOOP L1MOV CX,100DEC CXLEA SI,BUFFERPUSH CXADD CX,CXADD SI,CXPOP CXL2:PUSH CXPUSH SIL3:MOV AX,[SI]CMP AX,[SI-2]JAE NOXCHGXCHG AX,[SI-2]MOV [SI],AXNOXCHG:LOOP L3POP SIPOP CXLOOP L2MOV CX,100LEA SI,BUFFER L4:MOV AX,[SI] CALL DISPAX ADD SI,2CALL XIAOYU CALL XUHAOCALL DAYUCALL DISPCR LOOP L4MOV AH,4CHMOV AL,0INT 21H DISPAX PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DIMOV BX,10MOV CX,3L7:XOR DX,DXDIV BXMOV [DI],DX INC DIINC DILOOP L7MOV CX,3L8:DEC DIDEC DIMOV AL,[DI] ADD AL,30HMOV AH,02MOV DL,ALINT 21HLOOP L8POP DXPOP CXPOP BXPOP AXRET DISPAX ENDP DISPCR PROC NEAR PUSH AXPUSH DXMOV AH,2MOV DL,0AH INT 21HMOV AH,2MOV DL,0DH INT 21HPOP DXPOP AXRET DISPCR ENDP XIAOYU PROC NEAR PUSH AXPUSH DXMOV AH,02 MOV DL,3CH INT 21HPOP DXPOP AXRET XIAOYU ENDP XUHAO PROC NEAR PUSH AXPUSH BXPUSH CXPUSH SIMOV CX,100 MOV BX,AX LEA SI,BUF L5:CMP BX,[SI] JZ L6ADD SI,2LOOP L5L6:MOV AX,101SUB AX,CXCALL DISPAXPOP SIPOP CXPOP BXPOP AXRETXUHAO ENDPDAYU PROC NEARPUSH AXPUSH DXMOV AH,02MOV DL,3EHINT 21HPOP DXPOP AXRETDAYU ENDPCODE ENDSEND START4.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>算法流程图:调试问题、心得体会:通过该问题,进一步练习了通过流程图分析设计程序的功能,掌握了随机数产生,子函数调用,分支程序,循环程序,中断调用等过程,进行了调试,找出了数值无法转化为十进制并显示的问题,原因在于未定义临时存储单元。

西安电子科技大学微机原理上机题37题

西安电子科技大学微机原理上机题37题

编写程序实现将缓冲区BUFFER中的100个字按递增排序,并按下列格式顺序显示:数据1 <原序号>数据2 <原序号>数据3 <原序号>················程序如下(效果图):N=100DATAS SEGMENTBUFFER LABEL WORDX=55519REPT 100X=(X+7517)mod 65535DW XENDMNUMBER LABEL BYTEY=0REPT 100Y=Y+1DB YENDMDECIMAL DB 5 DUP(?)M DW 1 DUP(?)DATAS ENDSSTACKS SEGMENTDW 100H DUP(?)TOP LABEL WORDSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AXMOV ES,AXMOV AX,STACKSMOV SS,AXLEA SP,TOPXOR AX,AX ;开始程序LEA SI,BUFFERLEA DI,NUMBERCALL SORTMOV CX,N ;显示程序开始L1:MOV AX,[SI]MOV M,5CALL DISPAXDCALL DISPEMADD SI,2 ;显示数值XOR AX,AXMOV AL,[DI]MOV M,3CALL DISPAXDCALL DISPCRINC DI ;显示序号LOOP L1MOV AH,4CHMOV AL,0INT 21HSORT PROC NEARPUSH SIPUSH DIPUSH AXPUSH BXPUSH CXMOV CX,N;开始冒泡程序DEC CXLP1: ;外循环PUSH SIPUSH DIPUSH CXLP2: ;内循环MOV AX,[SI]CMP AX,[SI+2]JBE NOXCHGXCHG AX,[SI+2]MOV [SI],AXMOV BL,[DI]XCHG BL,[DI+1]MOV [DI],BLNOXCHG:ADD SI,2INC DILOOP LP2POP CXPOP DIPOP SILOOP LP1 ;冒泡结束POP CXPOP BXPOP AXPOP DIPOP SIRETSORT ENDPDISPAXD PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DILEA DI,DECIMALCALL TRANS16TO10MOV CX,MMOV BX,CXDEC BXLEA DI,DECIMAL[BX];指向最高位MOV AH,2DISPAXD2:MOV DL,[DI]ADD DL,30HDEC DIINT 21HLOOP DISPAXD2POP DIPOP DXPOP CXPOP BXPOP AXRETDISPAXD ENDPTRANS16TO10 PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DIMOV BX,10MOV CX,MTRANS1:XOR DX,DXDIV BXMOV [DI],DLINC DILOOP TRANS1POP DIPOP DXPOP CXPOP BXPOP AXRETTRANS16TO10 ENDPDISPEM PROC NEARPUSH AXPUSH DXMOV AL,20HMOV AH,02MOV DL,ALINT 21H ;显示一位字符POP DXPOP AXRETDISPEM ENDPDISPCR PROC NEARPUSH AXPUSH DXMOV AL,0AHMOV AH,02MOV DL,ALINT 21H ;显示一位字符POP DXPOP AXRETDISPCR ENDPCODES ENDSEND START。

15秋西电《微机原理与应用》在线作业 答案

15秋西电《微机原理与应用》在线作业 答案

西电《微机原理与应用》在线作业一、判断题(共 25 道试题,共 100 分。

)1. 判断下列语句语法是否正确:MOV [X][SI],T1 . 错误. 正确正确答案:2. 判断下列语句语法是否正确:MOVS. 错误. 正确正确答案:3. 判断下列语句语法是否正确:MOV S, X. 错误. 正确正确答案:4. 判断下列语句语法是否正确:SHL X,3. 错误. 正确正确答案:5. 判断下列语句语法是否正确: X,S. 错误. 正确正确答案:6. 判断下列语句语法是否正确: X,L. 错误. 正确正确答案:7. 判断下列语句语法是否正确:JMP [X]. 错误. 正确正确答案:8. 判断下列语句语法是否正确:N X,S. 错误. 正确正确答案:9. 判断下列语句语法是否正确:MOV [X],L. 错误. 正确正确答案:10. 判断下列语句语法是否正确:XHG X,2100. 错误. 正确正确答案:11. 判断下列语句语法是否正确:MOV WOR PTR [I]+3,200 . 错误. 正确正确答案:12. 判断下列语句语法是否正确: [X],100. 错误. 正确正确答案:13. 判断下列语句语法是否正确:IN 100. 错误. 正确正确答案:14. 判断下列语句语法是否正确:MOV S,1000H. 错误. 正确正确答案:15. 判断下列语句语法是否正确:MOV 20H,L. 错误. 正确正确答案:16. 判断下列语句语法是否正确:PUSH 12H. 错误. 正确正确答案:17. 判断下列语句语法是否正确:MUL 50. 错误. 正确正确答案:18. 判断下列语句语法是否正确:MOV S, SG VRW. 错误. 正确正确答案:19. 判断下列语句语法是否正确:JMP X. 错误. 正确正确答案:20. 判断下列语句语法是否正确:IV L. 错误. 正确正确答案:21. 判断下列语句语法是否正确:. 错误. 正确正确答案:22. 判断下列语句语法是否正确:XHG X,L . 错误. 正确正确答案:23. 判断下列语句语法是否正确:MOV X,L . 错误. 正确正确答案:24. 判断下列语句语法是否正确:PUSH X . 错误. 正确正确答案:25. 判断下列语句语法是否正确:LL X. 错误. 正确正确答案:。

西安电子科技大学微机原理大作业

西安电子科技大学微机原理大作业

西安电子科技大学微机原理大作业第一次上机一、实验目的1. 熟练掌握8086/8088的各种寻址方式及应用。

2.掌握DEBUG调试程序中的一些常用命令的使用方法,为以后的实验打下基础二、实验仪器586微机 1台三、实验内容1.关于数据的寻址方式练习8086/8088 提供多种方式实现操作数寻址,大体可分为7种:a. 立即寻址b. 寄存器寻址c. 直接寻址d. 寄存器间接寻址e. 寄存器相对寻址f. 基址变址寻址g. 基址变址且相对寻址掌握8086/8088的这些寻址方式,是学习汇编语言编程的关键。

指令SRC 寻址方式SRC的地址AX 推算值AX 实际值MOV AX, CX寄存器寻址0005 0005 MOV AX, 500H 立即寻址0500 0500 MOV AX, TABLE 直接寻址1541:0004 A5A 4 A5A 4MOV AX, ES:[BX] 寄存器间接寻址 1542:0004 C5C 4 C5C4MOV AX, [BX+05H] 寄存器相对寻址 1541:0009 AAA 9 AAA 9 MOV AX,寄存器相153FB8B B8B7 MOV AX, TABLE [BX] 寄存器相对寻址 1541:0008 A9A 8 A9A8MOV AX, 07H [BX] 寄存器相对寻址 1541:000B ACA B ACA BMOV AX, [BP]寄存器间接寻址 153F :0003 B4B 3 B4B 3 MOV AX, TABLE [BP] 寄存器相对寻址 1541:0007 A8A 7 A8A 7 MOV AX, 08H [BP] 寄存器相对寻址 153F :000B BCB B BCB B MOV AX, [BP+06H] 寄存器相对寻址 153F :0009 BAB 9 BAB 9 MOV AX,寄存器相1541A7A A7A6MOV AX, [BP]+05H 寄存器相对寻址153F:0008B9B8B9B8MOV AX, ES: [SI+03H] 寄存器相对寻址1542:0005C6C5C6C5MOV AX, [DI+06H] 寄存器相对寻址1541:0007A8A7A8A7MOV AX, [DI]+05H 寄存器相对寻址1541:0006A7A6A7A6MOV AX, TABLE [SI] 寄存器相对寻址1541:0006A7A6A7A6MOV AX, [SI] 寄存器间接寻址1541:0002A3A2A3A2MOV AX, TABLE 寄存器相1541A6A A6A[DI] 对寻址:00055 5MOV AX, [SI]+05H 寄存器相对寻址1541:0007A8A7A8A7MOV AX, [BX] [DI+01H] 基址变址且相对寻址1541:0006A7A6A7A6MOV AX, [BX] [SI]+03H 基址变址且相对寻址1541:0009AAA9AAA9MOV AX, TABLE [BX] [SI] 基址变址且相对寻址1541:000AABAAABAAMOV AX, ES:[BX] [DI] 基址变址寻址1542:0005C6C5C6C5MOV AX, [BP] [DI+02H] 基址变址且相对寻址153F:0006B7B6B7B6MOV AX, TABLE 基址变址1541A9A A9A[BP] [DI] 且相对寻址:00088 8MOV AX, ES:[BP] [SI] 基址变址寻址1542:0005C6C5C6C5MOV AX, [BP] [SI+05H] 基址变址且相对寻址153F:000ABBBABBBAMOV AX, 03H [BP] [DI] 基址变址且相对寻址153F:0007B8B7B8B7MOV AX, [BP] [SI] 基址变址寻址153F:0005B6B5B6B5MOV AX, [BP+02H] [DI+03H] 基址变址且相对寻址153F:0009BAB9BAB9MOV AX, TABLE [BP+02H][DI+03H] 基址变址且相对寻址1541:000DAEADAEAD第二次上机一、实验目的1. 熟练掌握汇编语言程序设计的方法及上机步骤。

西安电子科技大学微机原理上机要求及必做题目答案(汇编实现)

西安电子科技大学微机原理上机要求及必做题目答案(汇编实现)

西安电子科技大学微机原理上机必做题目及汇编程序答案1、编写求十进制数12678532与21736543之和的程序,并将和以十进制数的形式送屏幕显示。

编程要求与提示:[1]两个加数均以压缩(组合)十进制数形式存放在ADD1和ADD2为首址的存贮器单元。

[2]和以压缩十进制数的形式存入SUM以下单元。

[3]将和送到屏幕显示部分功能的实现采用子程序的形式。

汇编语言实现如下:STACK SEGMENT STACKDB10H DUP(00)STACK ENDSDATA SEGMENTADD1DB12H,67H,85H,32HADD2DB21H,73H,65H,43HSUM DB4H DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV AX,DATAMOV ES,AXMOV AX,STACKMOV SS,AXLEA SI,ADD1[3]LEA BX,ADD2[3]LEA DI,SUM[3]MOV CX,4CLCL1:MOV AL,[SI]ADC AL,[BX]DAAMOV[DI],ALDEC SIDEC BXDEC DILOOP L1CALL DISPAL;-------------------------------------EXITPROC:MOV AH,4CH;结束程序MOV AH,1INT21H;-------------------------------------DISPAL PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DILEA DI,SUMMOV CX,4DISPAL2:MOV AL,[DI]SHR AL,1SHR AL,1SHR AL,1SHR AL,1MOV AH,2MOV DL,ALADD DL,30HINT21HMOV AL,[DI]AND AL,0FHMOV AH,2MOV DL,ALADD DL,30HINT21HINC DILOOP DISPAL2POP DIPOP DXPOP CXPOP BXPOP AXRETDISPAL ENDPCODE ENDSEND START2、有一个首地址为A的N字数组,请编程序使该数组中的数按从大到小的次序排列。

西电微机实验报告

西电微机实验报告

西电微机实验报告引言本实验通过学习微机原理和使用相应软件工具,掌握西电微机的基本配置和操作。

本实验主要包括硬件部分和软件部分。

硬件部分主要涉及微机组成和接线;软件部分则包括微机启动和应用软件的使用。

通过本实验,可以加深对微机原理的理解和掌握西电微机的使用。

实验内容硬件部分1. 搭建微机系统主机和外设的连接。

按照提供的连接图和说明,连接主机和显示器、键盘、鼠标、扬声器等外设,并确认连接无误。

2. 检查硬件接线。

确认各个连接口的接触良好,避免松动或脱落导致电流不稳定或数据传输错误。

软件部分1. 启动微机系统。

按照提供的启动指南,打开电源,并检查显示器是否正常显示主机开机画面。

2. 学习操作系统的基本使用。

熟悉微机系统的操作界面、文件管理、软件运行等基本操作,并能够通过鼠标和键盘完成相应操作。

3. 运行应用软件。

通过应用软件,如文档编辑、图片处理、音频播放等,来实践操作系统的使用。

实验结果在硬件部分,我根据提供的连接图和说明,顺利地连接了主机和外设。

在检查硬件接线时,我认真检查了每个连接口,确保其接触良好。

在软件部分,启动微机系统时,显示器正常显示主机开机画面。

通过学习操作系统的基本使用,我掌握了微机系统的操作界面,并能够通过鼠标和键盘完成相应操作。

在运行应用软件时,我成功地进行了文档编辑、图片处理和音频播放等操作。

总体来说,硬件和软件部分的实验都在我的预期范围内顺利进行,并且能够熟练地使用微机系统进行各种操作。

实验总结通过本次实验,我对微机原理有了更深入的了解,掌握了西电微机的基本配置和操作。

通过实际操作,我对微机系统的组成和连接方式有了更直观的认识,并能够独立完成硬件的搭建和连接。

在软件部分,通过学习操作系统的基本使用和运行应用软件,我对微机系统的操作界面和功能有了更深入的理解。

我能够通过鼠标和键盘完成各种操作,并熟练地运行应用软件。

通过本次实验,我不仅加深了对微机原理的理解,同时也提高了自己的动手能力和问题解决能力。

西安电子科技大学考研复试-微机原理练习题

西安电子科技大学考研复试-微机原理练习题

《微型计算机原理及接口技术》试题一. 单项选择题1. 8086CPU芯片的外部引线中,数据线的条数为○①6条②8条③16条④20条2. 8088CPU上READY信号为下面哪种信号有效?○①上升边②下降边③高电平④低电平3. 8088CPU中的CS寄存器是一个多少位的寄存器?○①8位②16位③24位④32位4. 当8086CPU 读写内存的一个规则(对准)字(16位)时,BHE和A0的状态必须是○①00 ②01 ③10 ④115. 当8086CPU读I/O接口时,信号M/IO和DT/R的状态必须是○①00 ②01 ③10 ④116. 在8088CPU中, 用于寄存器间接寻址输入输出指令的寄存器是○①AX ②BX ③CX ④DX7. ISA总线是一种多少位的内(系统)总线?○①8位②16位③32位④64位8. 属于只读存贮器的芯片是○①SRAM ②DRAM ③EPROM ④SDRAM9. 需要定时刷新的存贮器是○①SRAM ②DRAM ③EPROM ④EEPROM10. 内存从A4000H到CBFFFH,共有○①124K ②160K ③180K ④224K11. 擦除EPROM是用○①+5V电压②+15V电压③+21V电压④紫外光照射12. 采用查询方式来实现输入输出是因为它○①速度最快②CPU可以不介入③实现起来比较容易④在对多个事件查询工作时,能对突发事件做出实时响应13. 实现DMA传送,需要○①CPU通过执行指令来完成②CPU利用中断方式来完成③CPU利用查询方式来完成④不需要CPU参与即可完成14 下面哪种说法不正确○①内存地址也可做为接口地址使用②内存地址不可做为接口地址使用③接口地址不可做为内存地址使用④接口地址也可做为外存地址使用15. 8255工作在方式0时,下面哪种说法正确○①A、B、C三个口输入均有锁存能力②只有A口输入有锁存能力③只有C口输入有锁存能力④A、B、C三个口输入均无锁存能力二. 多项选择(在备选的答案中选出正确的答案,每小题2.5分, 本题共10分)1 . 在构成8 0 88最大模式下构成系统总线时,可用到下列哪些芯片?○①74LS373 ②8288 ③74LS245 ④74LS138 ⑤82892 . 8086CPU一个总线周期可以读(或写)的字节数为○①1个②2个③3个④4个⑤6个3. 当8255的A口工作在方式2,B口工作在方式0时,其C口可用作○①全部用作联络信号②5条用作联络信号③4条用作联络信号④3条用作I/O ⑤8条用作I/O4. 当8086CPU最大模式下读内存时,下列哪些信号的状态是正确的?○①MEMR=0 ②MEMW=0 ③IOW=1 ④IOR=0 ⑤DT/R=0三. 判断题1. 8086CPU的复位启动地址为0FFFFH。

15春西电《微机原理与应用》在线作业答案

15春西电《微机原理与应用》在线作业答案

西电《微机原理与应用》在线作业
一、判断题(共25 道试题,共100 分。


1. 判断下列语句语法是否正确:BUFFER2 DB 'THIS'
A. 错误
B. 正确
正确答案:B
2. 判断下列语句语法是否正确:MOV [BX],V AR1
A. 错误
B. 正确
正确答案:A
3. 判断下列语句语法是否正确:MOV SS, AX
A. 错误
B. 正确
正确答案:B
4. 判断下列语句语法是否正确:JMP [BX]
A. 错误
B. 正确
正确答案:A
5. 判断下列语句语法是否正确:INC 100
A. 错误
B. 正确
正确答案:A
6. 判断下列语句语法是否正确:XCHG AX,BX
A. 错误
B. 正确
正确答案:B
7. 判断下列语句语法是否正确:AND AX,DS
A. 错误
B. 正确
正确答案:A
8. 判断下列语句语法是否正确:MOV [BX][SI],DA T1
A. 错误
B. 正确
正确答案:B
9. 判断下列语句语法是否正确:DAA
A. 错误。

西电微机原理上机作业完整版

西电微机原理上机作业完整版

班级:021113 学号:02111283 :亚男指导老师:董玫上机作业(一)指令SRC寻址方式SRC的地址AX推算值AX实际值MOV AX, CX 寄存器寻址0005 0005 MOV AX, 500H 立即寻址0500 0500 MOV AX, TABLE 直接寻址1541:0004 A5A4 A5A4 MOV AX, ES:[BX] 寄存器间接寻址1542:0004 C5C4 C5C4 MOV AX, [BX+05H] 寄存器相对寻址1541:0009 AAA9 AAA9 MOV AX, SS:[BX]+03H 寄存器相对寻址153F:0007 B8B7 B8B7 MOV AX, TABLE [BX] 寄存器相对寻址1541:0008 A9A8 A9A8 MOV AX, 07H [BX] 寄存器相对寻址1541:000B ACAB ACAB MOV AX, [BP] 寄存器间接寻址153F:0003 B4B3 B4B3 MOV AX, TABLE [BP] 寄存器相对寻址1541:0007 A8A7 A8A7 MOV AX, 08H [BP] 寄存器相对寻址153F:000B BCBB BCBB MOV AX, [BP+06H] 寄存器相对寻址153F:0009 BAB9 BAB9 MOV AX, DS:[BP+03H] 寄存器相对寻址1541:0006 A7A6 A7A6 MOV AX, [BP]+05H 寄存器相对寻址153F:0008 B9B8 B9B8 MOV AX, ES: [SI+03H] 寄存器相对寻址1542:0005 C6C5 C6C5 MOV AX, [DI+06H] 寄存器相对寻址1541:0007 A8A7 A8A7 MOV AX, [DI]+05H 寄存器相对寻址1541:0006 A7A6 A7A6MOV AX, TABLE [SI] 寄存器相对寻址1541:0006 A7A6 A7A6MOV AX, [SI] 寄存器间接寻址1541:0002 A3A2 A3A2 MOV AX, TABLE [DI] 寄存器相对寻址1541:0005 A6A5 A6A5 MOV AX, [SI]+05H 寄存器相对寻址1541:0007 A8A7 A8A7 MOV AX, [BX] [DI+01H] 基址变址且相对寻址1541:0006 A7A6 A7A6 MOV AX, [BX] [SI]+03H 基址变址且相对寻址1541:0009 AAA9 AAA9 MOV AX, TABLE [BX] [SI] 基址变址且相对寻址1541:000A ABAA ABAA MOV AX, ES:[BX] [DI] 基址变址寻址1542:0005 C6C5 C6C5 MOV AX, [BP] [DI+02H] 基址变址且相对寻址153F:0006 B7B6 B7B6 MOV AX, TABLE [BP] [DI] 基址变址且相对寻址1541:0008 A9A8 A9A8 MOV AX, ES:[BP] [SI] 基址变址寻址1542:0005 C6C5 C6C5 MOV AX, [BP] [SI+05H] 基址变址且相对寻址153F:000A BBBA BBBA MOV AX, 03H [BP] [DI] 基址变址且相对寻址153F:0007 B8B7 B8B7 MOV AX, [BP] [SI] 基址变址寻址153F:0005 B6B5 B6B5 MOV AX, [BP+02H] [DI+03H] 基址变址且相对寻址153F:0009 BAB9 BAB9MOV AX, TABLE [BP+02H][DI+03H]基址变址且相对寻址1541:000D AEAD AEAD1.编写求十进制数12678532与21736543之和的程序,并将和以十进制数的形式送屏幕显示。

西电微机原理试题

西电微机原理试题

西电微机原理试题考试时间:120分钟姓名:班级:学号:任课老师:一、填空题(每空1分,共35分)1.十进制数125对应的二进制数为 B;十进制数0.6875对应的二进制数为B。

2.设机器字长为8位,-1010101B的原码为 B;补码为 B。

3.设a=0F7H, b=0D7H,且a、b为8位二进制补码表示的十六进制数。

计算a+b,并判断其结果是否溢出。

正确的结论为。

4.一般来说,8位二进制数(一个字节)可以表示两位十进制数,这种表示方法称为 BCD数表示方法。

十进制数49以分离BCD码形式定义到FLBCD 字单元,正确的伪指令为。

5.计算机中的带符号数都是用表示的,字符都是用表示的。

将AL 中保存的字母ASCII码变换成相应的大写字母的ASCII码,则正确的逻辑指令为。

6.8086 CPU芯片有40个管脚,微处理器通过这些引脚与外部的逻辑部件连接,完成信息的交换。

CPU的这些引脚信号称为。

7.在微型计算机系统中,对存储器的编址和对I/O端口的编址方法有和两种编址方法。

而大多数微处理器是采用两个独立的地址空间,即存储器地址空间和I/O地址空间。

8086CPU对存储器的编址和对I/O端口的编址采用的是方法。

8086CPU采用引脚信号来区分对存储器和I/O端口的读写操作。

8.8086CPU内部的功能结构主要包含两个独立的逻辑单元:执行单元EU和总线接口单元BIU。

其中BIU主要完成。

9.在8086CPU的寄存器组织中,通用寄存器分别为。

10.8086微处理器状态字PSW是一个16位的寄存器,一共设定了9个标志位,其中用于反映ALU前一次操作结果的状态标志分别为;若(AX)=5439H,则8086CPU 执行ADD AX,476AH指令后,OF= ;执行AND AX,476AH指令后,OF= 。

11.有一块120个字的存储区域,其起始地址为625AH:234DH,则这个存储区域的末地址单元的物理地址为。

西安电子科技大学电院微机原理试题2.

西安电子科技大学电院微机原理试题2.

西安电子科技大学微机原理试题一•填空题(每空1分,共30分115的8位二进制补码为00001111B ,-15的8位二进制补码为11110001B。

2某8位二进制补码为80H,其十进制表示为-128。

3字符B的ASCII码为42H,字符0的ASCII码为30H。

48086CPU总线按功能可分为数据总线,地址总线和控制总线。

58086CPU数据总线包含16条数据线,最多可寻址的存储器容量为1MB。

6CPU内部用于计算的部分为C ,用于保存下一条要执行的指令地址的为BA程序状态字B程序计数器C ALU D工作寄存器7经常用作循环次数的寄存器是C ,用于I/O端口寻址的寄存器是D。

A AXB BXC CXD DX8指令MOV CX, 1000的结果是CH= 03H。

9 将0D787H 和4321H 相加后,标志位CF= 1 ,SF= 0 ,ZF= 0 ,OF= 0 ,AF= 0 ,PF= 0。

10寄存器SI中能够表示的最大有符号数为32767最小有符号数为-3276811 设(DS=4000H,(BX=0100H,(DI=0002H,(4002=0A0AH,(40100=1234H,(40102=5678H,求以下指令分别执行后AX寄存器的值MOV AX , [2] (AX= 0A0AH 。

MOV AX , [BX] (AX= 1234H 。

MOV AX , [BX][DI] (AX= 5678H 。

MOV AX , 1[BX] (AX= 7812H 。

12用一条指令将AX寄存器低四位清零,其余位不变:。

13用一条指令将AX寄存器高四位取反,其余位不变:。

14用一条指令将 AX高8位与低8位交换:。

15用一条指令将AL中的大写字母变成相应的小写:。

二•判断题(每题1分,共10分以下语句是语法正确的打皿法错误打X其中TABLE和TAB为两个字节类型的变量。

1MOV DS , 1000H X2MOV DS , TABLE V3MOV [1200H] , [1300H] X4ADD AX , BX , CX X5XCHG AL , CL V6CALLAL X7MULAX,BX X8JU L1 X9SHR CL , CL V10CMP AX , CL X三简答题(共5分0000H。

微机原理期末大作业

微机原理期末大作业

微机原理期末大作业——iPad设计一设计思路通过一个学期对微型计算机原理的学习,我初步掌握了微型计算机的内部构造与工作原理,学会了一些微型计算机设计方法,也对微型计算机设计产生了兴趣。

我利用本学期所学的关于微处理器及其接口设备,以及微处理器的编程语言相关知识,并利用网络资源自己设计了一个iPad 平板电脑模型。

(2010年1月27日,在美国旧金山欧巴布也那艺术中心所举行的苹果公司发布会上,传闻已久的平板电脑——iPad由首席执行官史蒂夫·乔布斯亲自发布。

iPad定位介于苹果的智能手机iPhone和笔记本电脑产品之间,通体只有四个按键,与iPhone布局一样,提供浏览互联网、收发电子邮件、观看电子书、播放音频或视频等功能。

)二设计要求要求设计出的模型理论上具有与真实iPad相仿的功能,但对使用的器材不做限制。

设计应有一个微型计算机所必需的部件,设计应构成一套完整的简单微型计算机系统。

并能够模仿真实iPad,具有显示器、触摸输入、扬声器输出、摄像头输入等功能器件。

三设计内容1、硬件系统主板系统主板采用飞思卡尔(Freescale)i.MX51 (Cortex-A8, 800MHz)的小尺寸核心主板(53mm*97mm),板载WiFi,支持3D加速,支持720P视频播放,支持两路micro Sd卡,支持USB OTG。

内部USB host 接口和UART接口,可扩展3G模块和蓝牙模块。

结构简洁,BOM成本低,量产方便。

性能参数接口描述本方案基于飞思卡尔(Freescale)i.MX51 (Cortex-A8,800MHz)的小尺寸核心主板(53mm*97mm),板载WiFi,支持3D加速,支持720P视频播放,支持两路micro Sd卡,支持USB OTG。

内部USB host接口和UART接口,可扩展3G模块和蓝牙模块。

规格参数触屏系统目前主要有几种类型的触摸屏,它们分别是:电阻式(双层),表面电容式和感应电容式,表面声波式,红外式,以及弯曲波式、有源数字转换器式和光学成像式。

微机原理上机答案(西电)

微机原理上机答案(西电)

微机原理上机答案(西电)上机作业(三)编写如下程序,并在机器上调试成功。

程序采用菜单式选择,可以接收用户从键盘输入的五个命令(1-5),各命令功能分别为:(1)按下“1”键,完成字符串小写字母变成大写字母。

用户输入一由英文大小写字母或数字0-9组成的字符串(以回车结束),程序逐个检查字符串中各字符,将原串中小写字母变成大写字母,其他字符不变,并在屏幕上显示。

用户按任一键,重做,按ESC键,返回主菜单。

(2)按下“2”键,完成找最大值(二选一)。

a.接收用户输入的可显示字符串(以回车结束),程序将其中ASCII码值最大的字符显示出来;b.接收用户输入若干个无符号8位数(以空格或逗号为分隔符,以回车结束),程序将其中最大的数显示出来。

用户按任一键,重做,按ESC键,返回主菜单。

(3)按下“3”键,完成排序(二选一)。

a.接收用户输入的可显示字符串,以回车结束。

程序按ASCII码值大小由大到小排序并输出显示;b.接收用户输入若干个有符号8位数(以空格或逗号为分隔符,以回车结束),程序将其中最大的数显示出来。

用户按任一键,重做,按ESC键,返回主菜单。

(4)按下“4”键,显示时间。

首先提示用户对时,即用户输入时、分、秒(以空格或逗号为分隔符,以回车结束),然后,在屏幕上不断显示时间,格式为:XX(时): XX(分): XX(秒)最好定点显示。

用户按任一键,重新对时,按ESC键,返回主菜单。

(5)按下“5”键,结束程序运行,返回系统提示符。

程序代码:STACK SEGMENT STACKDB 256 DUP(?)TOP LABEL WORDSTACK ENDSDA TA SEGMENTTABLE DW G1, G2, G3, G4, G5STRING1 DB '1. Change small letters into capital letters of string;', 0DH, 0AH, '$' STRING2 DB '2. Find the maximum of string;', 0DH, 0AH, '$'STRING3 DB '3. Sort for datas;', 0DH, 0AH, '$'STRING4 DB '4. Show Time;', 0DH, 0AH, '$'STRING5 DB '5. Exit.', 0DH, 0AH, '$'STRINGN DB 'Input the number you select (1-5) : $'IN_STR DB 'Input the string (including letters & numbers, less than 60 letters) :', 0DH, 0AH, '$' PRESTR DB 'Original string : $'NEWSTR DB 'New string : $'OUT_STR DB 'The string is $'MAXCHR DB 'The maximum is $'IN_NUM DB 'Input the numbers (0 - 255, no more than 20 numbers) : ', 0DH, 0AH, '$' OUT_NUM DB 'Sorted numbers : ', 0DH, 0AH, '$'IN_TIM DB 'Correct the time (HH:MM:SS) : $'HINTSTR DB 'Press ESC, go back to the menu; or press any key to play again!$' KEYBUF DB 61DB ?DB 61 DUP (?)NUMBUF DB ?DB 20 DUP (?)DA TA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA, SS:STACKSTART:MOV AX, DATAMOV DS, AXMOV AX, STACKMOV SS, AXMOV SP, OFFSET TOPMAIN: CALL FAR PTR MENU ; 设置显示器AGAIN:MOV AH, 2MOV BH, 0 ; 页号MOV DL, 41 ; 列号MOV DH, 10 ; 行号INT 10H ; 光标位置设置MOV AH, 1INT 21HCMP AL, '1'JB AGAINCMP AL, '5'JA AGAINSUB AL, '1' ; N-1SHL AL, 1 ; (N-1)*2CBW ; AL->AXLEA BX, TABLEADD BX, AXJMP WORD PTR [BX]G1:CALL FAR PTR CHGLTRMOV AH, 8INT 21HCMP AL, 1BHJZ MAINJMP G1G2:CALL FAR PTR MAXLTRMOV AH, 8INT 21HCMP AL, 1BHJZ MAINJMP G2G3:CALL FAR PTR SORTNUMMOV AH, 8INT 21HCMP AL, 1BHJZ MAINJMP G3G4:CALL FAR PTR TIMCHKMOV AH, 8INT 21HCMP AL, 1BHJZ MAINJMP G4G5:MOV AH, 4CHINT 21HMENU PROC FAR ; 显示主界面;设置显示器方式MOV AH, 0MOV AL, 3;MOV BL, 0;INT 10H ; 清屏MOV AH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 5 ; 行号INT 10H ; 光标位置设置MOV AH, 9LEA DX, STRING1INT 21HMOV AH, 2MOV DL, 5 ; 列号MOV DH, 6 ; 行号INT 10H ; 光标位置设置MOV AH, 9LEA DX, STRING2INT 21HMOV AH, 2MOV DL, 5 ; 列号MOV DH, 7 ; 行号INT 10H ; 光标位置设置MOV AH, 9LEA DX, STRING3INT 21HMOV AH, 2MOV DL, 5 ; 列号MOV DH, 8 ; 行号INT 10H ; 光标位置设置MOV AH, 9LEA DX, STRING4INT 21HMOV AH, 2MOV DL, 5 ; 列号MOV DH, 9 ; 行号INT 10H ; 光标位置设置MOV AH, 9LEA DX, STRING5INT 21HMOV AH, 2MOV DL, 5 ; 列号MOV DH, 10 ; 行号INT 10H ; 光标位置设置MOV AH, 9LEA DX, STRINGNINT 21HRETMENU ENDPCHGLTR PROC FAR ; 将输入字符串中小写字母便换成大写字母RECHG:;设置显示器方式MOV AH, 0MOV AL, 3MOV BL, 0INT 10H ; 清屏MOV AH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 5 ; 行号INT 10H ; 输入提示光标位置设置MOV AH, 9LEA DX, IN_STRINT 21H ; 输入字符串提示MOV AH, 2MOV DL, 5 ; 列号MOV DH, 6 ; 行号INT 10H ; 输入字符串光标位置设置MOV AH, 0AHLEA DX, KEYBUFINT 21H ; 输入字符串CMP KEYBUF + 1, 0JZ RECHG ; 判断输入字符串是否为空串LEA BX, KEYBUF + 2MOV AL, KEYBUF + 1CBWMOV CX, AXADD BX, AXMOV BYTE PTR [BX], '$' ; 在输入字符串尾加结束标志$MOV AH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 7 ; 行号INT 10H ; 源字符串提示光标位置设置MOV AH, 9LEA DX, PRESTRINT 21H ; 输出源字符串提示MOV AH, 9LEA DX, KEYBUF + 2INT 21H ; 输出源字符串LEA BX, KEYBUF + 2LCHG:CMP BYTE PTR [BX], 61HJB NOCHGAND BYTE PTR [BX], 0DFHNOCHG:INC BXLOOP LCHG ; 将字符串中小写字母转换成大写字母MOV AH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 8 ; 行号INT 10H ; 新字符串提示光标位置设置MOV AH, 9LEA DX, NEWSTRINT 21H ; 输出新字符串提示MOV AH, 9LEA DX, KEYBUF + 2INT 21H ; 输出新字符串MOV AH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 9 ; 行号INT 10H ; 提示信息光标位置设置MOV AH, 9LEA DX, HINTSTRINT 21H ; 输出提示信息RETCHGLTR ENDPMAXLTR PROC FAR ; 在输入字符串中找出最大值REMAX:;设置显示器方式MOV AH, 0MOV AL, 3MOV BL, 0INT 10H ; 清屏MOV AH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 5 ; 行号INT 10H ; 输入提示光标位置设置MOV AH, 9LEA DX, IN_STRINT 21H ; 输入字符串提示MOV AH, 2MOV DL, 5 ; 列号MOV DH, 6 ; 行号INT 10H ; 输入字符串光标位置设置MOV AH, 0AHLEA DX, KEYBUFINT 21H ; 输入字符串CMP KEYBUF + 1, 0JZ REMAX ; 判断输入字符串是否为空串LEA BX, KEYBUF + 2MOV AL, KEYBUF + 1CBWMOV CX, AXADD BX, AXMOV BYTE PTR [BX], '$' ; 在输入字符串位加结束标志$MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 7 ; 行号INT 10H ; 源字符串提示光标位置设置MOV AH, 9LEA DX, OUT_STRINT 21H ; 输出字符串提示MOV AH, 9LEA DX, KEYBUF + 2INT 21H ; 输出字符串MOV AH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 8 ; 行号INT 10H ; 新字符串提示光标位置设置MOV AH, 9LEA DX, MAXCHRINT 21H ; 输出字符串中最大值提示MOV DL, 0LEA BX, KEYBUF + 2LCMP:CMP [BX], DLJB NOLCHGMOV DL, [BX]NOLCHG:INC BXLOOP LCMP ; 找出字符串中最大字符,放入DLMOV AH, 2INT 21H ; 输出字符串中最大字符MOV AH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 9 ; 行号INT 10H ; 提示信息光标位置设置MOV AH, 9LEA DX, HINTSTRINT 21H ; 输出提示信息RETMAXLTR ENDPSORTNUM PROC FAR ; 对输入数据组排序RESORT:;设置显示器方式MOV AH, 0MOV BL, 0INT 10H ; 清屏MOV AH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 5 ; 行号INT 10H ; 输入提示光标位置设置MOV AH, 9LEA DX, IN_NUMINT 21HMOV AH, 2MOV DL, 5 ; 列号MOV DH, 6 ; 行号INT 10H ; 输入数据组光标位置设置MOV AH, 0AHLEA DX, KEYBUFINT 21H ; 输入数据组字符串CALL CIN_INT ; 字符串转换成数据串CMP AL, 0JZ RESORT ; 判断数据串是否有错CMP NUMBUF, 0JZ RESORT ; 判断数据串是否为空MOV AH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 7 ; 行号INT 10H ; 输出提示光标位置设置MOV AH, 9LEA DX, OUT_NUMINT 21H ; 输出数据串提示MOV AH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 8 ; 行号INT 10H ; 输出数据组光标位置设置CALL FAR PTR MPSORT ; 数据组排序CALL FAR PTR INT_OUT ; 数据组的输出MOV AH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 9 ; 行号INT 10H ; 提示信息光标位置设置MOV AH, 9LEA DX, HINTSTRINT 21H ; 输出提示信息RETSORTNUM ENDPCIN_INT PROC NEAR ; 读入整型数; 入口参数:无; 出口参数为:AL(有无错误标志,0为有,1为无)MOV CL, KEYBUF + 1LEA SI, KEYBUF + 2MOV CH, 0 ; 数据组数据个数置0MOV DH, 10MOV AL, 0 ; 当前数据x=0MOV DL, 0 ; 有无数据标志置0,即无数据FNDNUM:CMP BYTE PTR [SI], ' 'JZ ADDNUM ; 判断当前字符是否为空格CMP BYTE PTR [SI], '0'JB ERRNUMCMP BYTE PTR [SI], '9'JA ERRNUM ; 判断当前字符是否在'0'-'9'之间MOV DL, 1 ; 有无数据标志置1,即有数据MUL DHXOR BH, BHMOV BL, [SI]ADD AX, BXSUB AX, '0' ; 计算出当前数据xCMP AH, 0JA ERRNUM ; 判断x是否越界JMP NEXTADDNUM:CMP DL, 1JNZ NEXT ; 判断是否有数据INC CH ; 数据组数据个数加1CALL ADDNEWMOV DL, 0MOV AL, 0 ; 清零NEXT:INC SIDEC CLCMP CL, 0JNZ FNDNUM ; 依次检查各字符CMP DL, 1JNZ TOTAL ; 判断是否有未加入的数据INC CHCALL ADDNEWTOTAL:MOV NUMBUF, CH ; 置数据组数据个数MOV AL, 1 ; 输入数据无错误JMP CRTNUMERRNUM:MOV AL, 0 ; 输入数据有错误CRTNUM:RETCIN_INT ENDPADDNEW PROC NEAR ; 增加新数; 入口参数:CH(数据组数据个数)、AL(当前数据x); 出口参数:无PUSH AXLEA BX, NUMBUFMOV AL, CHCBWADD BX, AXPOP AXMOV [BX], ALRETADDNEW ENDPMPSORT PROC FAR ; 数据组排序MOV AL, NUMBUFCMP AL, 1JBE NOSORT ; 若只有一个元素,停止排序CBWMOV CX, AXLEA SI, NUMBUF ; SI指向数据组首地址ADD SI, CX ; SI指向数据组末地址DEC CX ; 外循环次数LP1: ; 外循环开始PUSH CXPUSH SIMOV DL, 0 ; 交换标志置0LP2: ; 内循环开始MOV AL, [SI]CMP AL, [SI - 1]JAE NOXCHGXCHG AL, [SI - 1] ; 交换操作MOV [SI], ALMOV DL, 1 ; 交换标志置1 NOXCHG:DEC SILOOP LP2POP SIPOP CXCMP DL, 1JNZ NOSORT ; 判断交换标志LOOP LP1NOSORT:RETMPSORT E NDPINT_OUT PROC FAR ; 输出数据组MOV AL, NUMBUFCBWMOV CX, AXMOV BL, 10HLEA SI, NUMBUF + 1PRINT:MOV AL, [SI]CALL OUTNUMINC SIMOV AH, 2MOV DL, ' 'INT 21HLOOP PRINTRETINT_OUT ENDPOUTNUM PROC NEAR ; 将十进制数以十六进制输出; 入口参数:AL(待转换的数据),BL(转换进制数16); 出口参数:无MOV AH, 0DIV BLPUSH AXCMP AH, 10JB PNUMADD AH, 7PNUM: ADD AH, 30HMOV DL, AHPOP AXPUSH DXCMP AL, 0JZ OUTNCALL OUTNUMOUTN:POP DXMOV AH, 2INT 21HRETOUTNUM ENDPTIMCHK PROC FAR ; 设定并显示时间;设置显示器方式MOV AH, 0MOV AL, 3;MOV BL, 0;INT 10H ; 清屏MOV AH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 6 ; 行号INT 10H ; 设置提示光标位置设置MOV AH, 9LEA DX, IN_TIMINT 21H ; 时间串提示MOV AH, 0AHLEA DX, KEYBUFINT 21H ; 输入时间串MOV BL, 10MOV AL, KEYBUF + 2SUB AL, '0'MUL BLADD AL, KEYBUF + 3SUB AL, '0'CMP AL, 0JB INV ALIDCMP AL, 24JAE INV ALID ; 判断时有效性MOV CH, ALMOV AL, KEYBUF + 5SUB AL, '0'MUL BLADD AL, KEYBUF + 6SUB AL, '0'CMP AL, 0JB INV ALIDCMP AL, 60JAE INV ALID ; 判断分有效性MOV CL, ALMOV AL, KEYBUF + 8SUB AL, '0'MUL BLADD AL, KEYBUF + 9SUB AL, '0'CMP AL, 0JB INV ALIDCMP AL, 60JAE INV ALID ; 判断秒有效性MOV DH, ALMOV DL, 0MOV AH, 2DHINT 21H ; 置系统时间INV ALID:CALL TIMERETTIMCHK ENDPTIME PROC ; 显示时间子程序;设置显示器方式MOV AH, 0MOV AL, 3;MOV BL, 0;INT 10H ; 清屏MOV AH, 2MOV BH, 0 ; 页号MOV DL, 10 ; 列号MOV DH, 9 ; 行号INT 10H ; 提示信息光标位置设置MOV AH, 9LEA DX, HINTSTRINT 21H ; 输出提示信息DISP1:MOV AH, 2MOV BH, 0 ; 页号MOV DL, 72 ; 列号MOV DH, 0 ; 行号INT 10H ; 提示光标位置设置MOV AH, 2CH ; 取系统时间,CH,CL,DH分别存放时/分/秒INT 21HMOV AL, CH ; 显示时CALL SHOWNUMMOV AH, 2MOV DL, ':'INT 21HMOV AL, CL ; 显示分CALL SHOWNUMMOV AH, 2MOV DL, ':'INT 21HMOV AL, DH ; 显示: 秒CALL SHOWNUMMOV AH,02H ; 设置光标位置MOV DX,090AHMOV BH,0INT 10HMOV BX,0018HRE: MOV CX,0FFFFH ; 延时REA: LOOP READEC BXJNZ REMOV AH, 0BH ; 或MOV AH, 01HINT 21H ; INT 16HCMP AL, 0 ; JE DISP1JZ DISP1 ; 检查键盘状态RETTIME ENDPSHOWNUM PROC ; 把AL中的数字以十进制输出; 入口参数:AL(待显示的数据); 出口参数:无CBWPUSH CXPUSH DXMOV CL, 10DIV CLADD AH, '0'MOV BH, AHADD AL, '0'MOV AH, 2MOV DL, ALINT 21HMOV DL, BHINT 21HPOP DXPOP CXRETSHOWNUM ENDPCODE ENDSEND START五、实验结果运行程序。

16秋西电《微机原理与应用》在线作业

16秋西电《微机原理与应用》在线作业
B. 正确
正确答案:
21. 判断下列语句语法是否正确:CMPSW
A. 错误
B. 正确
正确答案:
22. 判断下列语句语法是否正确:JMP [BX]
A. 错误
B. 正确
正确答案:
23. 判断下列语句语法是否正确:BUFFER2 DB 'THIS'
A. 错误
B. 正确
正确答案:
A. 错误
B. 正Байду номын сангаас
正确答案:
4. 判断下列语句语法是否正确:DIV 220
A. 错误
B. 正确
正确答案:
5. 判断下列语句语法是否正确:SUB BX,ES
A. 错误
B. 正确
正确答案:
6. 判断下列语句语法是否正确:MUL BL
A. 错误
B. 正确
正确答案:
7. 判断下列语句语法是否正确:INC AL
14. 判断下列语句语法是否正确:PUSH AL
A. 错误
B. 正确
正确答案:
15. 判断下列语句语法是否正确:DIV AL
A. 错误
B. 正确
正确答案:
16. 判断下列语句语法是否正确:MOV [BX][SI],DAT1
A. 错误
B. 正确
正确答案:
17. 判断下列语句语法是否正确:MOV [BX],AL
正确答案:
11. 判断下列语句语法是否正确:SHL AX,3
A. 错误
B. 正确
正确答案:
12. 判断下列语句语法是否正确:XCHG AX,DS
A. 错误
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

汇编语言程序设计综合实验姓名:***学号:*********** 2016年12月25日题目功能及要求题目要求编写程序实现下列5项功能,通过从键盘输入1~5进行菜单式选择:(1)按数字键“1”,完成将字符串中的小写字母变换成大写字母。

用户输入由英文大小写字母或数字0~9组成的字符串(以回车结束),变换后按下列格式在屏幕上显示:<原字符串>例如:abcdgyt0092<新字符串> ABCDGYT0092按任一键重做;按Esc键返回主菜单。

(2)按数字键“2”,完成在字符串中找最大值。

用户输入由英文大小写字母或数字0~9组成的字符串(以回车结束),找出最大值后按下列格式在屏幕上显示:<原字符串> The maximum is <最大值>.按任一键重做;按Esc键返回主菜单。

(3)按数字键“3”,完成输入数据组的排序。

用户输入一组十进制数值(小于255),然后变换成十六进制数,并按递增方式进行排序,按下列格式在屏幕上显示:<原数值串><新数值串>按任一键重做;按Esc键返回主菜单。

(4)按数字键“4”,完成时间的显示。

首先提示用户对时,即改变系统的定时器HH:MM:SS(以冒号间隔,回车结束),然后在屏幕的右上角实时显示出时间:HH:MM:SS。

按任一键重新对时;按Esc键返回主菜单。

(5)按数字键“5”,结束程序的运行,返回操作系统。

程序功能及分析:程序主干:(1)主程序:通过调用屏幕初始化子程序、光标位置设定子程序、清屏子程序、菜单显示子程序、命令解析子程序完成显示器初始化,设置光标位置,打印程序菜单列表以及用户输入提示信息,并等待用户从键盘输入1~5进行菜单选择。

用户输入错误会被要求重输。

子程序跳转利用数据段转移地址查找表实现。

从子服务退回时,重新开始上述操作。

(2)子服务一:将字符串中的小写字母转换成大写字母,并输出到屏幕上。

先调用字符串输出子程序输出提示信息,后调用字符串输入子程序将用户从键盘输入的字符串读到BUFFER1存储区,后逐个判断字符是否为小写字母,如果是,则通过逻辑与进行转化,完成后,将结果放置到BUFFER2,后调用字符串输出子程序完成输出。

然后输出是否重做提示信息,调用无回显的字符读入子程序,并判断退出到主程序或重做。

(3)子服务二:找出一字符串中ASCII码最大的字符并输出。

先调用字符串输出子程序输出提示信息,后调用字符串输入子程序将用户从键盘输入的字符串读到BUFFER1存储区,将AL赋初值为第一个字符,后将AL作为暂时最大值与各字符逐个比较,若小于则将其值赋给AL,否则不赋。

后将结果与提示信息生成字符串,后调用字符串输出子程序完成输出。

然后输出是否重做提示信息,调用无回显的字符读入子程序,并判断退出到主程序或重做。

(4)子服务三:读入一组十进制数,递增排序,并原格式输出。

先调用字符串输出子程序输出提示信息,后调用字符串输入子程序将用户从键盘输入的字符串读到BUFFER1存储区,后调用十进制数转二进制数子程序,将转换数据放置到BUFFER2,再利用冒泡算法对BUFFER2内的数据递增排序,再调用二进制数转十进制数子程序将BUFFER2内的二进制数转化为十进制数,放置到BUFFER3存储区内,并调用字符串格式修正子程序将不必要的前导’0’删除,再调用字符串输出子程序将BUFFER3内的数据输出。

对于非法输入(数值超过255、非法字符)会给出错误提示信息。

然后输出是否重做提示信息,调用无回显的字符读入子程序,并判断退出到主程序或重做。

(5)子服务四:完成时间的显示、修改。

调用字符串输出子程序将是否更改时间提示信息输出,并调用无等待字符读入子程序等待用户输入。

然后通过DOS功能调用读出系统时间,后调用二进制转十进制数子程序,将系统时间显示到屏幕右上方。

如果用户确认修改时间,则调用字符串读入子程序将时间放置到BUFFER1,后调用十进制数转二进制数子程序并将结果放置到BUFFER2,后通过DOS功能调用将数据送给系统,如果出错则给出出错信息。

然后输出是否重做提示信息,调用无回显的字符读入子程序,并判断退出到主程序或重做。

(6)子服务五:退出到系统。

通过DOS功能调用完成。

辅助子程序:(1)命令解析子程序:完成对用户输入选择信息的检查,合法则安排服务跳转,否则要求用户重做。

(2)菜单显示子程序:调用字符串输出子程序将菜单输出到屏幕上。

(3)屏幕初始化子程序:通过BIOS功能调用将屏幕设置成80*25字符模式。

(4)光标位置设定:通过BIOS功能调用完成设定。

(5)字符串显示子程序:通过DOS功能调用完成。

(6)清屏子程序:通过重新设置屏幕显示模式到达清屏目的。

(7)字符串读入子程序:通过DOS功能调用完成字符串输入,数据放在BUFFER1。

(8)字符读入子程序:通过DOS功能调用完成。

(9)无等待的字符读子程序:通过DOS功能调用完成。

(10)无回显的字符读入子程序:通过DOS功能调用完成。

(11)字符串结束符添加子程序:在指定存储区的字符串的最后添加回车、换行、字符串结束符。

(12)字符输出子程序:通过DOS功能调用完成。

(13)十进制数转二进制数子程序:利用加权求和公式将读入的十进制数(ASCII码字符串表示的数字)转化成二进制数并放到BUFFER存储区,其中第一个字节变量值为数据个数。

具有非法字符判定、数值超过255等判断。

(14)二进制数转十进制数子程序:利用除10取余并逆序的算法将每一个二进制数转化为十进制数(ASCII字符串),将输出放置到BUFFER3存储区。

(15)字符串前导’0’删除子程序:将十进制数(ASCII码字符串)高位的前导’0’删除。

汇编源程序STACK SEGMENT'STACK'DW 4096 DUP('C')TOP LABEL WORDSTACK ENDSDATA SEGMENTTRANSFORM DB'1.TRANSFORM', 0DH,0AH,'$'MAX DB'2.MAX',0DH,0AH,'$'SORT DB'3.SORT',0DH,0AH,'$'TIME DB'4.TIME',0DH,0AH,'$'EXIT DB'5.EXIT',0DH,0AH,'$'WAITING DB'PLEASE INPUT NUM 1-5 TO SELECT SERVICE:',0DH,0AH,'$' TIP DB'PLEASE INPUT A STRING',0DH,0AH,'$'TIPNUM DB'PLEASE INPUT A GROUP OF DECIMAL',0DH,0AH,'$'ANYKEY DB'PRESS ANY KEY TO CONTINUE',0DH,0AH,'$'MAXIMUM DB'THE MAXIMUM IS:$ 'INPUT_TIME DB'PLEASE INPUT CURRENT TIME LIKEHH:MM:SS',0DH,0AH,'$'QUESTION DB'DO YOU WANT TO SET TIME(Y/N)',0DH,0AH,'$'INPUT_ERROR DB'ERROR OR INVALID INPUT',0DH,0AH,'$'SUCCESS DB'SET TIME SUCCEED',0DH,0AH,'$'STRING DW TRANSFORM,MAX,SORT,TIME,EXIT,WAITINGSERVICE DW TRANS,FIND_MAX,SORTING,SET_TIME,EXIT_TOSYSBUFFER1 DB 512 DUP('C') ;INPUT BUFFERBUFFER2 DB 512 DUP('C') ;PROCESS WORKSPACEBUFFER3 DB 512 DUP('C') ;OUTPUT BUFFERDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV ES,AXLEA AX,TOPMOV SP,AXCALL SCREEN_INITMAIN_AGAIN:CALL CLEAR_SCREENCALL DISPLAY_MENUCALL GET_CHARCALL ORDER_PARSEJMP MAIN_AGAINMOV AH,4CHINT 21HORDER_PARSE PROC NEAR ;RETURN AL=-1 IF ERROR ELSE INVOKE SERVICE PUSH AXPUSH BXAND AL,0FHCMP AL,1JB ERROR_OVERCMP AL,5JA ERROR_OVERLEA BX,SERVICEDEC ALSHL AL ,1XOR AH,AHADD BX,AXCALL CLEAR_SCREENCALL word ptr [BX]POP BXPOP AXJMP OVER_ORDERERROR_OVER :MOV AL,0FFHOVER_ORDER:RETORDER_PARSE ENDPDISPLAY_MENU PROC NEAR ;display menu including five items PUSH DXPUSH CXPUSH SIMOV DH,0BHMOV DL,14HMOV CX,06HLEA SI,STRINGNEXT_DIS:MOV BH,0CALL CURSOR_SETPUSH DXMOV DX,[SI]ADD SI,02HCALL STRING_DISPLAYPOP DXINC DHLOOP NEXT_DISPOP SIPOP CXPOP DXRETDISPLAY_MENU ENDPSCREEN_INIT PROC NEAR ;set screen mode 80*25 character PUSH AXMOV AH,0MOV AL,02HINT 10HPOP AXRETSCREEN_INIT ENDPCURSOR_SET PROC NEAR ;set cursor BH PAGE,DH ROW,DL COLUMN PUSH AXMOV AH,02HINT 10HPOP AXRETCURSOR_SET ENDPSTRING_DISPLAY PROC NEAR ;display string DX ADDRESS PUSH AXMOV AH,09HINT 21HPOP AXRETSTRING_DISPLAY ENDPCLEAR_SCREEN PROC NEAR ;clear screenPUSH AXMOV AX,3INT 10HPOP AXRETCLEAR_SCREEN ENDPGET_CHAR_DIR PROCPUSH DXMOV AH,06HMOV DL,0FFHINT 21HPOP DXRETGET_CHAR_DIR ENDPGET_CHAR_N PROC NEAR;AL<=INPUT CHAR,NO DISPLAY MOV AH,07HINT 21HRETGET_CHAR_N ENDPGET_CHAR PROC NEAR ;AL<=IMPUT CHAR PUSH DXMOV AH,01HINT 21HPUSH AXMOV DL,0DHMOV AH,02HINT 21HMOV DL,0AHINT 21HPOP AXPOP DXRETGET_CHAR ENDPGET_STRING PROC NEAR ;DS:DX<=STRINGPUSH AXPUSH DXPUSH BXPUSH SILEA DX,BUFFER1MOV BUFFER1,0FFHMOV AH,0AHINT 21HMOV BL,BUFFER1+1XOR BH,BHLEA SI,BUFFER1[BX+2] CALL STR_ENDPOP SIPOP BXPOP DXPOP AXRETGET_STRING ENDPTRANS PROC ;PUSH AXPUSH DXPUSH CXPUSH SIPUSH DILEA DX,TIPCALL STRING_DISPLAY AGAIN_TRANS:CALL GET_STRINGLEA SI,BUFFER1+2LEA DI,BUFFER2MOV CL,BUFFER1+1XOR CH,CHJCXZ OVER_TRANS NEXT_TRANS:MOV AL, BYTE PTR [SI]CMP AL,'a'JB NOPROCESSCMP AL,'z'JA NOPROCESSAND AL,0DFH NOPROCESS:MOV BYTE PTR [DI],ALINC SIINC DILOOP NEXT_TRANS OVER_TRANS:MOV SI,DICALL STR_ENDLEA DX,BUFFER1+2CALL STRING_DISPLAYLEA DX,BUFFER2CALL STRING_DISPLAYLEA DX,ANYKEYCALL STRING_DISPLAYCALL GET_CHAR_NCMP AL,1BHJZ EXIT_TRANSJMP AGAIN_TRANSEXIT_TRANS:POP DIPOP SIPOP CXPOP DXPOP AXRETTRANS ENDPSTR_END PROC ;INSERT END FLAG SI=ADDRESS PUSH SIMOV BYTE PTR [SI],0DHINC SIMOV BYTE PTR [SI],0AHINC SIMOV BYTE PTR [SI],'$'POP SIRETSTR_END ENDPFIND_MAX PROC;FIND MAXIMUM AMOUNT A STRING PUSH AXPUSH DXPUSH CXPUSH SILEA DX,TIPCALL STRING_DISPLAYMAX_AGAIN:CALL GET_STRINGLEA SI,BUFFER1+2MOV CL,BUFFER1+1XOR CH,CHMOV AL,[SI]JCXZ FIND_MAX_OVERFIND_MAX_NEXT:INC SICMP AL,[SI]JA MAX_NOPROCESSMOV AL,[SI]MAX_NOPROCESS:LOOP FIND_MAX_NEXTFIND_MAX_OVER:LEA DX,BUFFER1+2CALL STRING_DISPLAYLEA DX,MAXIMUMCALL STRING_DISPLAYMOV DL,ALCALL CHAR_DISPLAYMOV DL,0DHCALL CHAR_DISPLAYMOV DL,0AHCALL CHAR_DISPLAYLEA DX,ANYKEYCALL STRING_DISPLAYCALL GET_CHAR_NCMP AL,1BHJNZ MAX_AGAINPOP SIPOP CXPOP DXPOP AXRETFIND_MAX ENDPCHAR_DISPLAY PROC;DISPLAY A CHARACTER DLPUSH AXMOV AH,02HINT 21HPOP AXRETCHAR_DISPLAY ENDPDEC2HEX PROC ;10 TO 16 BUFFER1->BUFFER2,CNT->BUF2,NUM->BUF2+1 PUSH AXPUSH BXPUSH CXPUSH DXPUSH SIPUSH DILEA SI,BUFFER1+2LEA DI,BUFFER2+1XOR CH,CHMOV CL,BUFFER1+1MOV AL,0MOV BL,0AHMOV BYTE PTR BUFFER2,0JCXZ DH_OVERDEC_NEXT:MOV BH,BYTE PTR [SI]CMP BH,' 'JZ NEXT_NUMCMP BH,'0'JB ERROR_OVERFLOWCMP BH,'9'JA ERROR_OVERFLOWCMP BH,':'JZ NEXT_NUMAND BH,0FHMUL BLJC ERROR_OVERFLOWADD AL,BHJC ERROR_OVERFLOWJMP NEXT_PRONEXT_NUM:MOV [DI],ALINC DIINC BYTE PTR BUFFER2XOR AX,AXNEXT_PRO:INC SILOOP DEC_NEXTMOV [DI],ALINC BYTE PTR BUFFER2JMP DH_OVERERROR_OVERFLOW:MOV BUFFER2,0DH_OVER:POP DIPOP SIPOP DXPOP CXPOP BXPOP AXRETDEC2HEX ENDPHEX2DEC PROC ;INPUT:BUFFER2,NUM,BUFFER2+1,START;; OUTPUT:BUFFER3,STRING,STACK :OR ,3OR2 PUSH AXPUSH BXPUSH CXPUSH DXPUSH SIPUSH DIMOV BP,SPADD BP,0EHLEA DI,BUFFER3LEA SI,BUFFER2+1MOV CL,BUFFER2XOR CH,CHMOV BL,0AHJCXZ HEX_OVERHEX2DEC_OUTTER:MOV AH,0MOV AL,[SI]PUSH CXPUSH DIMOV DL,[BP+1]XOR DH,DHADD DI,DXDEC DIMOV CL,[BP+1]HEX2DEC_INNER:DIV BLOR AH,30HMOV BYTE PTR [DI],AHDEC DIXOR AH,AHLOOP HEX2DEC_INNERINC SIPOP DIPOP CXADD DI,DXMOV AH,[BP]MOV BYTE PTR [DI],AHINC DILOOP HEX2DEC_OUTTERHEX_OVER:MOV SI,DICALL STR_ENDPOP DIPOP SIPOP DXPOP CXPOP BXPOP AXRET 2HEX2DEC ENDPSTR_NUM_ADJUST PROC;INPUT:BUFFER3,REMOVE INVALID ZERO PUSH AXPUSH BXPUSH SIPUSH DILEA SI,BUFFER3LEA DI,BUFFER3XOR AL,ALL1:MOV BL,[SI]CMP BL,0DHJZ ADJUST_OVERCMP BL,' 'JZ CHAR_NEXTCMP BL,'0'JZ CHECK_FLAGMOV AL,01HJMP TRANSFERCHECK_FLAG:CMP AL,0JZ ADJUST_NEXTTRANSFER:MOV [DI],BLINC DIJMP ADJUST_NEXTCHAR_NEXT:MOV BYTE PTR [DI],' 'INC DIXOR AL,ALADJUST_NEXT:INC SIJMP L1ADJUST_OVER:MOV SI,DICALL STR_ENDPOP DIPOP SIPOP BXPOP AXRETSTR_NUM_ADJUST ENDPSORTING PROC ;SORTPUSH AXPUSH CXPUSH DXPUSH DISORT_AGAIN:LEA DX,TIPNUMCALL STRING_DISPLAYCALL GET_STRINGCALL DEC2HEXXOR CH,CHMOV CL,BUFFER2JCXZ SORT_ERRORDEC CXJCXZ SORT_COMPLETE SORT_OUTTER:LEA DI,BUFFER2+1PUSH CXSORT_INNER:MOV AL,[DI]CMP AL,[DI+1]JBE SORT_NOPROCESSXCHG AL,[DI+1]MOV [DI],ALSORT_NOPROCESS:INC DILOOP SORT_INNERPOP CXLOOP SORT_OUTTER SORT_COMPLETE:MOV AH,03HMOV AL,' 'PUSH AXCALL HEX2DECCALL STR_NUM_ADJUSTLEA DX,BUFFER1+2CALL STRING_DISPLAYLEA DX,BUFFER3CALL STRING_DISPLAYSORT_TIP:LEA DX,ANYKEYCALL STRING_DISPLAYCALL GET_CHAR_NCMP AL,1BHJNZ SORT_AGAINJZ SORT_OVERSORT_ERROR:LEA DX,INPUT_ERRORCALL STRING_DISPLAYJMP SORT_TIPSORT_OVER:POP DIPOP DXPOP CXPOP AXRETSORTING ENDPSET_TIME PROC;TIME SET SERVICE PUSH AXPUSH CXPUSH DXSETTIME_AGAIN:CALL CLEAR_SCREENLEA DX,QUESTIONCALL STRING_DISPLAYREFRESH:MOV AH,2CHINT 21HMOV BUFFER2,3MOV BUFFER2+1,CHMOV BUFFER2+2,CLMOV BUFFER2+3,DHMOV AH,02HMOV AL,':'PUSH AXCALL HEX2DECMOV AH,02HMOV BH,0MOV DH,0MOV DL,60INT 10HMOV BUFFER3+8,' 'LEA DX,BUFFER3CALL STRING_DISPLAYCALL GET_CHAR_DIRJZ REFRESHCMP AL,'Y'JNZ NOSETLEA DX,INPUT_TIMECALL STRING_DISPLAYCALL GET_STRINGCALL DEC2HEXMOV AH,2DHMOV CH,BUFFER2+1MOV CL,BUFFER2+2MOV DH,BUFFER2+3MOV DL,0INT 21HCMP AL,0HJZ SET_TIME_SUCCLEA DX,INPUT_ERRORCALL STRING_DISPLAYJMP NOSETSET_TIME_SUCC:LEA DX,SUCCESSCALL STRING_DISPLAY NOSET:LEA DX,ANYKEYCALL STRING_DISPLAYCALL GET_CHAR_NCMP AL,1BHJNZ SETTIME_AGAINPOP DXPOP CXPOP AXRETSET_TIME ENDPEXIT_TOSYS PROC MOV AH,4CH INT 21HRETEXIT_TOSYS ENDP CODE ENDSEND START运行结果主程序界面子服务一:子服务二:子服务三:(注:第二次输入非法输入,给出错误提示信息)子服务四:精品文档。

相关文档
最新文档