微型计算机系统程序设计实验报告
微型计算机实验一实验报告

微型计算机实验一实验报告一、实验目的本次微型计算机实验的主要目的是让我们熟悉微型计算机的硬件组成,了解计算机各部件之间的连接和工作原理,并掌握基本的计算机组装和调试技能。
通过实际操作,提高我们对计算机系统的认识和动手能力,为今后的学习和工作打下坚实的基础。
二、实验设备与工具1、计算机主机箱、主板、CPU、内存、硬盘、显卡、声卡、网卡等硬件设备。
2、螺丝刀、镊子、防静电手环等工具。
三、实验内容1、了解计算机硬件组成打开计算机主机箱,观察主板、CPU、内存、硬盘、显卡、声卡、网卡等硬件设备的外观和安装位置。
学习各硬件设备的功能和作用,如 CPU 负责运算和控制,内存用于临时存储数据,硬盘用于长期存储数据等。
2、计算机硬件组装戴上防静电手环,防止静电对硬件设备造成损坏。
首先安装 CPU,将 CPU 对准主板上的插座,轻轻放下,然后扣紧CPU 插座的扳手。
安装内存,将内存插槽两端的卡扣掰开,将内存条对准插槽,用力按下,直到两端的卡扣自动扣紧。
安装硬盘,将硬盘固定在机箱的硬盘架上,然后连接数据线和电源线。
安装显卡,将显卡插入主板上的 PCIE 插槽,并用螺丝固定。
安装声卡和网卡,根据主板的接口类型,将声卡和网卡插入相应的插槽。
连接机箱前面板的线缆,包括电源按钮、重启按钮、指示灯、USB 接口等。
3、计算机硬件调试检查各硬件设备的安装是否牢固,连接是否正确。
接通电源,按下电源按钮,观察计算机能否正常启动。
如果计算机无法启动,根据报警声和指示灯的提示,查找故障原因并进行排除。
四、实验步骤1、准备工作清理实验台,将所需的硬件设备和工具摆放整齐。
阅读计算机硬件组装的相关资料,了解组装的流程和注意事项。
2、硬件组装按照上述步骤,依次安装 CPU、内存、硬盘、显卡、声卡、网卡等硬件设备,并连接好线缆。
3、硬件调试检查组装完成的计算机,确保没有遗漏的部件和连接错误。
接通电源,按下电源按钮,观察计算机的启动情况。
如果计算机无法启动,首先检查电源是否正常,然后检查各硬件设备的连接是否松动。
微型计算机系统程序设计实验报告

目录Part1.程序设计目求Part2.程序设计要求Part3.系统整体设计思路Part4.程序框图设计Part5.硬件电路设计Part6.课程设计体会Part7.程序设计的参考文献Part8.程序设计代码附录(总共三题)Part1:程序设计的目的:1.巩固和掌握对“微机原理”课程内容的认识和理解,提高应用水平.2.掌握汇编语言程序的编制方法.3.熟悉键盘控制和七段码管及74LS138芯片的使用.Part2:程序设计要求:本课程设计内容包括两个方面A.硬件设计:显示器用6个八段数码段显示.键盘采用4*4矩阵形式.由8255控制B.软件编程(上机编程内容)题目一※显示器工作于查询方式.键盘工作于中断方式※16个按键定位的键值为:0~f,按任意键在显示器上现实对应的键值.lED显示器显示数值从右到左逐位显示题目二※定义键盘按键:10个数字键(0~9);6个功能键:+(加),-(减),*(乘),/(除),=(等于),CLEAR(清零)※实现五位八进制数加法运算.可连续做加法.直接按"=号结束,显示结果※实现五位八进制数乘法运算.可连续做乘法运算Part3:程序设计的整体设计思路:A.物理构想思路:1)微型计算机由微处理器,存储器,接口电路以及连接在这些部件上的总线组成.微处理器,存储器和所有I\O设备之间的信息交换都通过总线进行.总线包括地址总线,数据总线和控制总线,他们始于CPU或终于CPU,现代微机大部分都是这种以总线为中心的结构.2)微型计算机及外围设备组成微型计算机系统的硬件,外围设备必须通过接口电路才能与系统总线相连,因此构建一个基于8255A的简单微型计算机系统,就是通过编译程序和物理连接让单片机拥有简单的计算器运算功能,因此系统总线上挂上一定规模的存储器和接口电路,然后在把合适的外围设备连接到接口电路上.解决物理连线方面的构想思路.就轮到程序设置的构想思路:B.软件构想思路:1)首先.是建立一个蕴含所有段码的数据表(在程序中的体现是TABLE),作用是存储段码,为程序的相应调用提供对应的段码.避免在程序中实现调用显示功能的时候造成过多的赘余.因为这次实验套装的LED管是共阳极管.所以只有列出对应的16个(0~F)适用于共阳极管的段码,才能满足显示的要求2)其次.是建立选通信号的输出存储.也就是.在数据部分建立一个表格,里面能够告诉CPU 的输出端要输出低电平的时候对应的代码指令:为什么是输出低电平?因为本次选用的LED 管是共阳极管.所以要在CPU的输出端与显示器的输入端对应借口接入CPU输出的低电平.从而告诉是哪一个显示器被选中.对应要输出怎么样的段码(信息).方能准确进行数据的显示3)在DATA设置完以后.就是功能键的自定义设计.这部分将会在物理连线框图里面提出(Part5)4)进行主程序的编写思路部分,首先是对应4*4的键盘程序.在按下对应的键位以后.为了能在显示器中正确显示出对应的数值.必须进行扫描,首先是判断是否有按键.如果按得是数字键.那么就要在LED显示管上面对应的位数以及对应的数值进行显示.并且判断数字键之前是否已经按了运算的功能键.从而判断是否要进行运算.如果确认在数字键之前按了运算的功能键.则应该进行运算功能,并且将运算结果存储在内存单元里面.等待下一步的指令.并且重复检测.等到有在物理键上面检测到有等号.则将最终的结果释放在LED管子上进行显示5)在运算结束后要实行放键功能,并且自动将所有的存储器(这里指的是RAM)上面的数据复位.等待实行重新的运算Part4:程序框图的设计:硬件电路设置:Part6.课程设计体会:一个星期的微机课程设计,在这个星期之中通过不断找资料解决问题,回顾了上学期所学的内容,给了我们很好一个机会将所学内容综合应用实践,温故而知新,对未来的学习也有很大帮助.但在课程设计之中也还发现一些不足的地方,我发现我能通过设计找出不足,更好的学习.并且给将来的学习提供一个好的解决榜样.所以通过这次程序设计的学习.我觉得我并不仅仅只学习到如何的运用汇编程序按照要求解答问题.而更是学习到了要怎么去思考.怎么去解决问题的方法.并且希望能够将这个所得应用在日后的学习之中.我觉得这才是本次课程设计的核心内容参考文献:微型计算机系统原理--(教材)微型计算机系统程序设计指导书--(实验题目)微型计算机系统程序设计例题A--(实验例题)Part8:实验程序:※设计代码※part1:※显示器工作于查询方式,键盘工作于中断方式※16个按键定义的键值:0-F,安任意键在显示器上现实对应的键值,LED显示器现实数值从右到左逐位现实STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSDA TA SEGMENTV A1 DB 0DFH,0EFH,0F7H,0FBH,0FDH,0FEH ;A端口的6根控制线(控制6个LED显示屏) VB2 DB 3FH,3FH,3FH,3FH,3FH,3FHVB3 DB 00H,00H,00H,00H,00H,00HVB4 DB 00H,00H,00H,00H,00H,00HTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H;0~F的显示段码DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART:MOV AX,DATAMOV DS,AXMOV DX,0606HMOV AL,88HOUT DX,AL :8255初始化MOV BX,0000H :BX清零STT: :键盘测试MOV AL,00HMOV DX,0600HOUT DX,ALMOV DX,0604HIN AL,DXAND AL,0F0HCMP AL,0F0HJNZ KEYABCCALL DISP :调用显示程序JMP STTKEYABC:CALL TIME :延时去抖动MOV DX,0604HIN AL,DXAND AL,0F0HCMP AL,0F0HJNZ KEYJMP STTKEY: :键盘扫描识别MOV DX,0600HMOV AL,0FEHOUT DX,ALMOV DX,0604HIN AL,DXKEY_3:TEST AL,10HJNZ KEY_7CALL KEY3JMP STTKKEY_7:TEST AL,20HJNZ KEY_BCALL KEY7JMP STTKKEY_B:TEST AL,40HJNZ KEY_FCALL KEYBJMP STTKKEY_F:TEST AL,80HJNZ KEY_2CALL KEYFJMP STTKMOV DX,0600H MOV AL,0FDH OUT DX,AL MOV DX,0604H IN AL,DX TEST AL,10H JNZ KEY_6 CALL KEY2 JMP STTKKEY_6:TEST AL,20H JNZ KEY_A CALL KEY6 JMP STTKKEY_A:TEST AL,40H JNZ KEY_E CALL KEYA JMP STTKKEY_E:TEST AL,80H JNZ KEY_1 CALL KEYE JMP STTKKEY_1:MOV DX,0600H MOV AL,0FBH OUT DX,AL MOV DX,0604H IN AL,DX TEST AL,10H JNZ KEY_5 CALL KEY1 JMP STTKKEY_5:TEST AL,20H JNZ KEY_9 CALL KEY5KEY_9:TEST AL,40H JNZ KEY_D CALL KEY9 JMP STTKKEY_D:TEST AL,80H JNZ KEY_0 CALL KEYD JMP STTKKEY_0:MOV DX,0600H MOV AL,0F7H OUT DX,AL MOV DX,0604H IN AL,DX TEST AL,10H JNZ KEY_4 CALL KEY0 CALL STTKKEY_4:TEST AL,20H JNZ KEY_8 CALL KEY4 JMP STTKKEY_8:TEST AL,40H JNZ KEY_C CALL KEY8 JMP STTKKEY_C:TEST AL,80H JNZ KEY_G CALL KEYCKEY_G:JMP STTKKEY0:CALL LP1 MOV AL,3FH MOV [SI+5],AL MOV AL,00H MOV [DI+5],AL CALL DISP RETKEY1:CALL LP1 MOV AL,06H MOV [SI+5],AL MOV AL,01H MOV [DI+5],AL CALL DISP RETKEY2:CALL LP1 MOV AL,5BH MOV [SI+5],AL MOV AL,02H MOV [DI+5],AL CALL DISP RETKEY3:CALL LP1 MOV AL,4FH MOV [SI+5],AL MOV AL,03H MOV [DI+5],AL CALL DISP RETKEY4:CALL LP1 MOV AL,66H MOV [SI+5],AL MOV AL,04H MOV [DI+5],AL CALL DISPRETKEY5:CALL LP1 MOV AL,6DH MOV [SI+5],AL MOV AL,05H MOV [DI+5],AL CALL DISP RETKEY6:CALL LP1 MOV AL,7DH MOV [SI+5],AL MOV AL,06H MOV [DI+5],AL CALL DISP RETKEY7:CALL LP1 MOV AL,07H MOV [SI+5],AL MOV AL,07H MOV [DI+5],AL CALL DISP RETKEY8:CALL LP1 MOV AL,7FH MOV [SI+5],AL MOV AL,08H MOV [DI+5],AL CALL DISP RETKEY9:CALL LP1 MOV AL,6FH MOV [SI+5],AL MOV AL,09H MOV [DI+5],ALCALL DISP RETKEYA:CALL LP1 MOV AL,77H MOV [SI+5],AL MOV AL,0AH MOV [DI+5],AL CALL DISP RETKEYB:CALL LP1 MOV AL,7CH MOV [SI+5],AL MOV AL,0BH MOV [DI+5],AL CALL DISP RETKEYC:CALL LP1 MOV AL,39H MOV [SI+5],AL MOV AL,0CH MOV [DI+5],AL CALL DISP RETKEYD:CALL LP1 MOV AL,5EH MOV [SI+5],AL MOV AL,0DH MOV [DI+5],AL CALL DISP RETKEYE:CALL LP1 MOV AL,79H MOV [SI+5],AL MOV AL,0EHMOV [DI+5],ALCALL DISPRETKEYF:CALL LP1MOV AL,71HMOV [SI+5],ALMOV AL,0FHMOV [DI+5],ALCALL DISPRET;上面是键盘键位的设置以及对应子程序的编写LP1: (数据段以为保存子程序,前移6位) MOV SI,0FFSET VA2MOV DI,OFFSET V A3MOV CX,0005HLP2:MOV AL,[SI+4]MOV [SI+5],ALMOV AL,[DI+4]MOV [DI+5],ALDEC SIDEC DILOOP LP2RETDISP: (6位显示程序)MOV SI,OFFSET V A1MOV DI,OFFSET V A2MOV DL,[DI+5]CMP DL,3FHJNZ DIR5MOV DL,[DI+4]CMP DL,3FHJNZ DIR4MOV DL,[DI+3]CMP DL,3FHJNZ DIR3MOV DL,[DI+2]CMP DL,3FHJNZ DIR2MOV DL,[DI+1]CMP DL,3FHJNZ DIR1JMP DIR0DIR5:MOV CX,0006HJMP DIRDIR4:MOV CX,0005HJMP DIRDIR3:MOV CX,0004HJMP DIRDIR2:MOV CX,0003HJMP DIRDIR1:MOV CX,0002HJMP DIRDIR0:MOV CX,0001HDIR:MOV DX,0600HMOV AL,[SI]OUT DX,ALMOV DX,0602HMOV AL,[DI]OUT DX,ALCALL TIMEINC SIINC DILOOP DIRRETTIME: (延时程序) PUSH AXPUSH CXMOV CX,0005HTIME1:MOV AX,00F0HTIME2:DEC AXJNZ TIME2LOOP TIME1POP CXPOP AXRETSTTK: (按键测试程序)CALL DISPMOV AL,00HMOV DX,0600HOUT DX,ALMOV DX,0604HIN AL,DXAND AL,0F0HCMP AL,0F0HJNZ STTKJMP STTCODE ENDSEND STARTPart2:※显示器工作于查询方式,键盘工作于中断方式※定义键盘按键:10个数字键(0~9);6个功能键:+(加),-(减),*(乘),/(除),=(等于),CLEAR(清零)※实现五位八进制数加法运算.可连续做加法.直接按"=号结束,显示结果STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSDA TA SEGMENTV A1 DB 0DFH,0EFH,0F7H,0FBH,0FDH,0FEHV A2 DB 3FH,3FH,3FH,3FH,3FH,3FHV A3 DB 00H,00H,00H,00H,00H,00HV A4 DB 00H,00H,00H,00H,00H,00HSUM DB 00H,00H,00H,00H,00H,00HTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DA TAMOV DS,AXMOV DX,0606HMOV AL,88HOUT DX,ALMOV BX,0000HSTT: MOV AL,00HMOV DX,0600HOUT DX,ALMOV DX,0604HIN AL,DXAND AL,0F0HCMP AL,0F0HJNZ KEYABCCALL DISPJMP STTKEYABC:CALL DELAYMOV DX,0604HIN AL,DXAND AL,0F0HCMP AL,0F0HJNZ KEYJMP STTKEY: MOV DX,0600HMOV AL,0FEHOUT DX,ALMOV DX,0604HIN AL,DXKEY_0: TEST AL,10HJNZ KEY_1CALL KEY0JMP STTKKEY_1: TEST AL,20HJNZ KEY_4CALL KEY1JMP STTKKEY_4: TEST AL,40HJNZ KEY_7CALL KEY4JMP STTKKEY_7: TEST AL,80HJNZ KEY2CCALL KEY7JMP STTKKEY2C: MOV DX,0600HMOV AL,0FDHOUT DX,ALMOV DX,0604HIN AL,DXKEY_CLEAR:TEST AL,10HJNZ KEY_2CALL KEYCLEARJMP STTKKEY_2: TEST AL,20HJNZ KEY_5CALL KEY2JMP STTKKEY_5: TEST AL,40HJNZ KEY_8CALL KEY5JMP STTKKEY_8: TEST AL,80HJNZ KEY3CCALL KEY8JMP STTKKEY3C: MOV DX,0600HMOV AL,0FBHOUT DX,ALMOV DX,0604HIN AL,DXKEY_QUAL: TEST AL,10HJNZ KEY_3CALL KEYEQUALJMP STTKKEY_3: TEST AL,20HJNZ KEY_6CALL KEY3JMP STTKKEY_6: TEST AL,40HJNZ KEY_9CALL KEY6JMP STTKKEY_9: TEST AL,80HJNZ KEY4CCALL KEY9JMP STTKKEY4C: MOV DX,0600HMOV AL,0F7HOUT DX,ALMOV DX,0604HIN AL,DXKEY_PLUS: TEST AL,10HJNZ KEY_MINUSCALL KEYPLUSJMP STTKKEY_MINUS: TEST AL,20HJNZ KEY_MULJMP STTKKEY_MUL: TEST AL,40HJNZ KEY_DIVJMP STTKKEY_DIV: TEST AL,80HKEY_G: JMP STTK;结束按键扫描,下面是按键处理函数(与第一个程序不同的地方是功能键的设置问题)KEY0: CMP BH,00HJZ KEY0_1CALL CLEARKEY0_1: CALL LP1MOV AL,3FHMOV [SI+4],ALMOV AL,00HMOV [DI+4],ALCALL DISPRETKEY1: CMP BH,00HJZ KEY1_1CALL CLEAR KEY1_1: CALL LP1MOV AL,06HMOV [SI+4],ALMOV AL,01HMOV [DI+4],ALCALL DISPRETKEY2: CMP BH,00HJZ KEY2_1CALL CLEAR KEY2_1: CALL LP1MOV AL,5BHMOV [SI+4],ALMOV AL,02HMOV [DI+4],ALCALL DISPRETKEY3: CMP BH,00HJZ KEY3_1CALL CLEAR KEY3_1: CALL LP1MOV AL,4FHMOV [SI+4],ALMOV AL,03HMOV [DI+4],ALCALL DISPRETKEY4: CMP BH,00HJZ KEY4_1CALL CLEAR KEY4_1:CALL LP1MOV AL,66HMOV [SI+4],ALMOV AL,04HMOV [DI+4],ALRETKEY5: CMP BH,00HJZ KEY5_1CALL CLEAR KEY5_1: CALL LP1MOV AL,6DHMOV [SI+4],ALMOV AL,05HMOV [DI+4],ALCALL DISPRETKEY6: CMP BH,00HJZ KEY6_1CALL CLEAR KEY6_1: CALL LP1MOV AL,7DHMOV [SI+4],ALMOV AL,06HMOV [DI+4],ALCALL DISPRETKEY7: CMP BH,00HJZ KEY7_1CALL CLEAR KEY7_1: CALL LP1MOV AL,07HMOV [SI+4],ALMOV AL,07HMOV [DI+4],ALCALL DISPRETKEY8: CMP BH,00HJZ KEY8_1CALL CLEAR KEY8_1: CALL LP1MOV AL,7FHMOV [SI+4],ALMOV AL,08HMOV [DI+4],ALRETKEY9: CMP BH,00HJZ KEY9_1CALL CLEARKEY9_1: CALL LP1MOV AL,6FHMOV [SI+4],ALMOV AL,09HMOV [DI+4],ALCALL DISPRETKEYPLUS: CMP BH,00H ;设置加法的标志位以及程序的跳转判定JNZ KEYPLUS_1MOV BX,0101HCALL ADD1KEYPLUS_1: MOV BX,0101HRETKEYEQUAL: MOV BH,01H ;设置等号的标志位以及程序的跳转判定CMP BL,00HJZ EQUALFCMP BL,01HJZ ADDFCMP BL,02HSTTE: RETEQUALF: CALL EQUAL1JMP STTEADDF: CALL ADDSUMJMP STTEKEYCLEAR:CALL CLEAR2 ;按键CLEAR的功能调用RETCLEAR: MOV SI,OFFSET V A2 ;CLEAR系列的程序(作用是全部复位) MOV DI,OFFSET V A3MOV CX,0006HCLEAR1:MOV AL,3FHMOV [SI],ALMOV AL,00HMOV [DI],ALINC SIINC DILOOP CLEAR1MOV BH,00HRETCLEARPLUS: MOV DI,OFFSET V A3 ;加法专用的清零程序,实现连加的重要部分MOV CX,0006HCLEARPLUS1: MOV AL,00HMOV [DI],ALINC SIINC DILOOP CLEARPLUS1MOV BH,00HRETCLEAR2: MOV SI,OFFSET V A2MOV DI,OFFSET V A3MOV CX,0006HCLEAR3: MOV AL,3FHMOV [SI],ALMOV AL,00HMOV [DI],ALINC SIINC DILOOP CLEAR3CLEAR4: MOV SI,OFFSET SUMMOV CX,0006HCLEAR5: MOV AL,00HMOV [SI],ALINC SILOOP CLEAR5MOV BX,00HRETADD1: PUSH BX ;加法的子程序实现MOV SI,OFFSET V A3MOV DI,OFFSET SUMCLCXOR AH,AHMOV CX,0005HMOV BL,08HADD1_1: MOV AL,[DI]ADD AL,[SI]ADD AL,AHCBWDIV BLMOV [DI],AHMOV AH,ALINC SIINC DILOOP ADD1_1MOV [DI],AHCALL CLEARPLUSPOP BXRETEQUAL1: MOV SI,OFFSET V A3MOV DI,OFFSET SUMMOV CX,00006H EQUAL1_1: MOV AL,[SI]MOV [DI],ALINC SIINC DILOOP EQUAL1_1CALL CHANGECALL DISPRETADDSUM: CALL ADD1CALL CHANGECALL DISPRETLP1: MOV SI,OFFSET V A2MOV DI,OFFSET V A3MOV CX,0004HLP2: MOV AL,[SI+3]MOV [SI+4],ALMOV AL,[DI+3]MOV [DI+4],ALDEC SIDEC DILOOP LP2RETLP3: MOV CX,0006HMOV SI,OFFSET V A3MOV DI,OFFSET SUMLP4: MOV AL,[SI]MOV [DI],ALINC SIINC DILOOP LP4RETCHANGE: PUSH BX ;意思是转码,将SUM存储器里面的东西调到V A2中MOV SI,OFFSET V A2MOV DI,OFFSET SUMMOV BX,OFFSET TABLEMOV CX,0006HCOMP0: MOV AL,[DI]XLATMOV [SI],ALINC SIINC DILOOP COMP0POP BXRETDISP: MOV SI,OFFSET V A1MOV DI,OFFSET V A2MOV DL,[DI+5]CMP DL,3FHJNZ DIR5MOV DL,[DI+4]CMP DL,3FHJNZ DIR4MOV DL,[DI+3]CMP DL,3FHJNZ DIR3MOV DL,[DI+2]CMP DL,3FHJNZ DIR2MOV DL,[DI+1]CMP DL,3FHJNZ DIR1JMP DIR0DIR5: MOV CX,0006HJMP DIRDIR4: MOV CX,0005HJMP DIRDIR3: MOV CX,0004HJMP DIRDIR2: MOV CX,0003HJMP DIRDIR1: MOV CX,0002HJMP DIRDIR0: MOV CX,0001HJMP DIR DIR: MOV DX,0600HMOV AL,[SI]OUT DX,ALMOV DX,0602HMOV AL,[DI]OUT DX,ALCALL DELAYINC SIINC DILOOP DIRRET DELAY: PUSH AXPUSH CXMOV CX,0005H DELAY1: MOV AX,00F0H DELAY2: DEC AXJNZ DELAY2LOOP DELAY1POP CXPOP AXRETSTTK: CALL DISPMOV AL,00HMOV DX,0600HOUT DX,ALMOV DX,0604HIN AL,DXAND AL,0F0HCMP AL,0F0HJNZ STTKJMP STT CODE ENDSEND STARTPart3: ※定义键盘按键:10个数字键(0~9);6个功能键:+(加),-(减),*(乘),/(除),=(等于),CLEAR(清零)※实现五位八进制数乘法运算.可连续做乘法运算STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSDA TA SEGMENTV A1 DB 0DFH,0EFH,0F7H,0FBH,0FDH,0FEHV A2 DB 3FH,3FH,3FH,3FH,3FH,3FHV A3 DB 00H,00H,00H,00H,00H,00HV A4 DB 00H,00H,00H,00H,00H,00HV A5 DB 00H,00H,00H,00H,00H,00HSUM DB 00H,00H,00H,00H,00H,00HMULSUM DB 00H,00H,00H,00H,00H,00HTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DA TAMOV DS,AXMOV DX,0606HMOV AL,88HOUT DX,ALMOV BX,0000HSTT: MOV AL,00HMOV DX,0600HOUT DX,ALMOV DX,0604HIN AL,DXAND AL,0F0HCMP AL,0F0HJNZ KEYABCCALL DISPJMP STTKEYABC:CALL DELAYMOV DX,0604HIN AL,DXAND AL,0F0HCMP AL,0F0HJNZ KEY1CJMP STTKEY1C: MOV DX,0600HMOV AL,0FEHOUT DX,ALMOV DX,0604HIN AL,DXKEY_0: TEST AL,10HJNZ KEY_1CALL KEY0JMP STTKKEY_1: TEST AL,20HJNZ KEY_4CALL KEY1JMP STTKKEY_4: TEST AL,40HJNZ KEY_7CALL KEY4JMP STTKKEY_7: TEST AL,80HJNZ KEY2CCALL KEY7JMP STTKKEY2C: MOV DX,0600HMOV AL,0FDHOUT DX,ALMOV DX,0604HIN AL,DXKEY_C: TEST AL,10HJNZ KEY_2CALL KEYCLEARJMP STTKKEY_2: TEST AL,20HJNZ KEY_5CALL KEY2JMP STTKKEY_5: TEST AL,40HJNZ KEY_8CALL KEY5JMP STTKKEY_8: TEST AL,80HJNZ KEY3CCALL KEY8JMP STTKKEY3C: MOV DX,0600HMOV AL,0FBHOUT DX,ALMOV DX,0604HIN AL,DXKEY_E: TEST AL,10HJNZ KEY_3CALL KEYEQUALJMP STTKKEY_3: TEST AL,20HJNZ KEY_6CALL KEY3JMP STTKKEY_6: TEST AL,40HJNZ KEY_9CALL KEY6JMP STTKKEY_9: TEST AL,80HJNZ KEY4CCALL KEY9JMP STTKKEY4C: MOV DX,0600HMOV AL,0F7HOUT DX,ALMOV DX,0604HIN AL,DXKEY_P: TEST AL,10HJNZ KEY_MINUSJMP STTKKEY_MINUS:TEST AL,20HJNZ KEY_MULJMP STTKKEY_MUL: TEST AL,40HJNZ KEY_DIVCALL KEYMULJMP STTKKEY_DIV: TEST AL,80HKEY_G: JMP STTK;结束按键扫描,下面是按键处理函数(这里只有乘法功能的定义)KEY0: CMP BH,00HJZ KEY0_1CALL CLEAR KEY0_1: CALL LP1MOV AL,3FHMOV [SI+4],ALMOV AL,00HMOV [DI+4],ALCALL DISPRETKEY1: CMP BH,00HJZ KEY1_1CALL CLEAR KEY1_1: CALL LP1MOV AL,06HMOV [SI+4],ALMOV AL,01HMOV [DI+4],ALCALL DISPRETKEY2: CMP BH,00HJZ KEY2_1CALL CLEAR KEY2_1: CALL LP1MOV AL,5BHMOV [SI+4],ALMOV AL,02HMOV [DI+4],ALCALL DISPRETKEY3: CMP BH,00HJZ KEY3_1CALL CLEAR KEY3_1: CALL LP1MOV AL,4FHMOV [SI+4],ALMOV AL,03HMOV [DI+4],ALCALL DISPRETKEY4: CMP BH,00HJZ KEY4_1CALL CLEARKEY4_1:CALL LP1MOV AL,66HMOV [SI+4],ALMOV AL,04HMOV [DI+4],ALCALL DISPRETKEY5: CMP BH,00HJZ KEY5_1CALL CLEAR KEY5_1: CALL LP1MOV AL,6DHMOV [SI+4],ALMOV AL,05HMOV [DI+4],ALCALL DISPRETKEY6: CMP BH,00HJZ KEY6_1CALL CLEAR KEY6_1: CALL LP1MOV AL,7DHMOV [SI+4],ALMOV AL,06HMOV [DI+4],ALCALL DISPRETKEY7: CMP BH,00HJZ KEY7_1CALL CLEAR KEY7_1: CALL LP1MOV AL,07HMOV [SI+4],ALMOV AL,07HMOV [DI+4],ALCALL DISPRETKEY8: CMP BH,00HJZ KEY8_1CALL CLEAR KEY8_1: CALL LP1MOV AL,7FHMOV [SI+4],ALMOV AL,08HMOV [DI+4],ALCALL DISPRETKEY9: CMP BH,00HJZ KEY9_1CALL CLEARKEY9_1: CALL LP1MOV AL,6FHMOV [SI+4],ALMOV AL,09HMOV [DI+4],ALCALL DISPRETKEYMUL: CMP BH,00HJNZ KEYMUL_1MOV BX,0103HCALL MUL1 KEYMUL_1: MOV BX,0103HRETKEYEQUAL: MOV BH,01HCMP BL,00HJZ EQUALFCMP BL,03HJZ MULFSTTE: RETEQUALF: CALL EQUAL1JMP STTE MULF: CALL MULSUM1JMP STTEKEYCLEAR: CALL CLEAR2RETCLEAR: MOV SI,OFFSET V A2MOV DI,OFFSET V A3MOV CX,0006H CLEAR1: MOV AL,3FHMOV [SI],ALMOV AL,00HMOV [DI],ALINC SIINC DILOOP CLEAR1MOV BH,00HRETCLEARPLUS: MOV DI,OFFSET V A3PUSH CXMOV CX,0006H CLEARPLUS1: MOV AL,00HMOV [DI],ALINC DILOOP CLEARPLUS1POP CXMOV BH,00HRETCLEAR2: MOV SI,OFFSET V A2MOV DI,OFFSET V A3MOV CX,0006HCLEAR3: MOV AL,3FHMOV [SI],ALMOV AL,00HMOV [DI],ALINC SIINC DILOOP CLEAR3CLEAR4: MOV DI,OFFSET MULSUMMOV AL,01HMOV [DI],ALMOV AL,00HMOV [DI+1],ALMOV [DI+2],ALMOV [DI+3],ALMOV [DI+4],ALMOV [DI+5],ALMOV SI,OFFSET SUMMOV DI,OFFSET V A4MOV CX,0006HCLEAR5: MOV AL,00HMOV [SI],ALMOV [DI],ALINC SIINC DILOOP CLEAR5MOV BX,0000HRETCLEARV A4: PUSH CXMOV SI,OFFSET V A4MOV CX,0006HCLEARV A41: MOV AL,00HMOV [SI],ALINC SILOOP CLEARV A41POP CXRETMUL1: PUSH BX (相乘子程序) MOV SI,OFFSET V A3XOR CX,CXXOR AX,AXMOV BX,1000HMOV AL,[SI+4]CMP AL,00HJZ MULNEXT1MUL BXADD CX,AXXOR AX,AXMULNEXT1: MOV BX,0200HMOV AL,[SI+3]CMP AL,00HJZ MULNEXT2MUL BXADD CX,AXXOR AX,AXMULNEXT2: MOV BX,0040HMOV AL,[SI+2]CMP AL,00HJZ MULNEXT3MUL BXADD CX,AXXOR AX,AXMULNEXT3: MOV BX,0008HMOV AL,[SI+1]CMP AL,00HJZ MULNEXT4MUL BXADD CX,AXXOR AX,AXMULNEXT4: MOV AL,[SI]ADD CX,AXXOR AX,AXMOV SI,OFFSET MULSUM (开始运行相乘)MOV AL,00HCMP [SI],ALJNZ MUL1_1CMP [SI+1],ALJNZ MUL1_1CMP [SI+2],ALJNZ MUL1_1CMP [SI+3],ALJNZ MUL1_1CMP [SI+4],ALJNZ MUL1_1CMP [SI+5],ALJNZ MUL1_1PUSH CXMOV CX,0006HMOV SI,OFFSET V A3MOV DI,OFFSET MULSUMLPJ2: MOV AL,[SI]MOV [DI],ALINC SIINC DILOOP LPJ2POP CXJMP STTKMUL1_1: MOV SI,OFFSET MULSUMMOV DI,OFFSET V A4XOR AX,AXMOV BL,08HPUSH CXMOV CX,0005HMUL1_2: MOV AL,[DI]ADD AL,[SI]ADD AL,AHCBWDIV BLMOV [DI],AHMOV AH,ALINC SIINC DILOOP MUL1_2MOV [DI],AHPOP CXLOOP MUL1_1CALL CLEARPLUSPOP BXCALL LP3CALL CLEARV A4RETMULSUM1: CALL MUL1CALL CHANGEMULCALL CLEARV A4CALL DISPRETLP1: M OV SI,OFFSET V A2MOV DI,OFFSET VA3MOV CX,0004HLP2: M OV AL,[SI+3]MOV [SI+4],ALMOV AL,[DI+3]MOV [DI+4],ALDEC SIDEC DILOOP LP2RETLP3: MOV CX,0006HMOV SI,OFFSET V A4MOV DI,OFFSET MULSUMLP4: M OV AL,[SI]MOV [DI],ALINC SIINC DILOOP LP4RETCHANGEMUL: PUSH BXMOV SI,OFFSET V A2MOV DI,OFFSET MULSUMMOV BX,OFFSET TABLEMOV CX,0006H COMPMUL0: MOV AL,[DI]XLATMOV [SI],ALINC SIINC DILOOP COMPMUL0POP BXRETDISP: MOV SI,OFFSET V A1MOV DI,OFFSET V A2MOV DL,[DI+5]CMP DL,3FHJNZ DIR5MOV DL,[DI+4]CMP DL,3FHJNZ DIR4MOV DL,[DI+3]CMP DL,3FHJNZ DIR3MOV DL,[DI+2]CMP DL,3FHJNZ DIR2MOV DL,[DI+1]CMP DL,3FHJNZ DIR1JMP DIR0DIR5: MOV CX,0006HJMP DIRDIR4: MOV CX,0005HJMP DIRDIR3: MOV CX,0004HJMP DIRDIR2: MOV CX,0003HJMP DIRDIR1: MOV CX,0002HJMP DIRDIR0: MOV CX,0001HJMP DIRDIR: MOV DX,0600HMOV AL,[SI]OUT DX,ALMOV DX,0602HMOV AL,[DI]OUT DX,ALCALL DELAYINC SIINC DILOOP DIRRETDELAY: PUSH AXPUSH CXMOV CX,0005H DELAY1: MOV AX,00F0H DELAY2: DEC AXJNZ DELAY2LOOP DELAY1POP CXPOP AXRETSTTK: CALL DISPMOV AL,00HMOV DX,0600HOUT DX,ALMOV DX,0604HIN AL,DXAND AL,0F0HCMP AL,0F0HJNZ STTKJMP STTCODE ENDSEND START。
微机系统实验 实验报告

CALL DELAY
A1:
MOV AL,LA
;PA 口数据右移一位
ROR AL,1
MOV LA,AL
MOV DX,P8255_A
OUT DX,AL
MOV AL,LB
ROL AL,1
MOV LB,AL
MOV DX,P8255_B
;PB 口数据右移一位
OUT DX,AL CALL DELAY
五、实验源码
MY_STACK SEGMENT PARA 'STACK'
DB
100 DUP(?)
MY_STACK ENDS
;
MY_DATA SEGMENT PARA 'DATA' IO_9054base_address DB 4 DUP(0) IO_base_address DB 4 DUP(0)
;PCI 卡 9054 芯片 I/O 基地址暂存空间 ;PCI 卡 I/O 基地址暂存空间
MY_PROC
PROC FAR
ASSUME CS:MY_CODE, DS:MY_DATA, SS:MY_STACK
START:
.386 ;386 模式编译
MOV
AX,MY_DATA
MOV
DS,AX
MOV
ES,AXபைடு நூலகம்
MOV
AX,MY_STACK
MOV
SS,AX
CALL FINDPCI
;自动查找 PCI 卡资源及 IO 口基址
管显示。 4、在完成(1)基础上,增加通过读取开关控制流水灯的循环方向和循环方式。 5、在完成(2)基础上,增加通过读取开关控制交通红绿灯的亮灭时间。
三、实验原理 8255 是一个通用可编程并行接口电路。它具有 A、B、C 三个 8 位并行口。其中 C 口也可
微机系统实验报告

四、实验小结〔包括问题和解决方法、心得体会、意见与建议等〕
通过这次实验我对串行通信的根本知识,8251、8255的构造更加的了解了也加深对串行接口的控制端口、数据端口工作方式的理解。
五、指导教师评语
成绩
批阅人
爱群
日期
MOV AH,9H
INT 21H
LEA BX,BUF
MOV CX,LENS
SCAN:
MOV DX,2FDH ;通信线状态存放器
IN AL,DX ;此时要查看发送保持存放器是否有值
TEST AL,01H
JNZ PROCESS ;如果可以读取
TEST AL,20H ;假设有A5为1那么写入发送保存存放器
INC BYTE PTR [BX+7]
MOV AH, BYTE PTR[BX]
JMP LAST
NEXT: ADD BYTE PTR[BX+8],AH
ADD BYTE PTR[BX+7] ,30H
ADD BYTE PTR[BX+8] ,30H
RET CHANG
ENDP CODE
ENDS
END BEG
2、实验【2.3.4】从数据段NUM单元开场存有9个有符号数,并编写一个程序实现:找出最小值存放到数据段MIN单元,并将负数的个数以十进制的形式显示在屏幕上
.486
DATA SEGMENT USE16
SUM DB ?,?
MESG DB '25+9='
DB 0,0,'$'
N1 DB 9
N2 DB 25
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE , DS:DATA
微机实验报告

实验一汇编语言上机操作训练——比较字符串一、实验目的1、学习程序设计的基本办法和技能;2、纯熟掌握汇编语言设计、编写、调试和运行;二、实验内容和规定1、汇编语言程序上机操作办法编写一程序,比较两个字符串STRING1 和STRING2 所含字符与否相似,若相似刚在屏幕上显示‘MATCH’,否则,显示‘NOT MATCH’。
三、实验重要仪器设备和材料计算机一台四、程序略五、调试过程:1、执行程序表达两字符串相似2、u 命令反汇编:3、在程序执行以前的寄存器状况:内存状况:4、用E 命令修改数据区字符串及修改前后内存数据区的对比:5、用G 命令查看修改后的状况:修改后的字符串不相似了。
六、程序功效与调试过程中碰到的问题1、分析程序功效程序的功效是比较string1 与string2 所含字符与否相似,若相似则在屏幕上显示‘MATCH’,否则,显示‘NOT MATCH’。
由于string1 为‘Move the cursor backward’,string2 为’ Move the cursor backward’。
因此string1 与string2 相似,显示’MATCH’。
背面用重新修改了下这些字符,会显示“not Match”2、调试程序过程中碰到的问题对汇编认识停留在上课老师的文字体现,至于实际操作,能够说完全不懂,只能在实验室里对着实验书一步步做下去,没碰到什么问题。
但是回到宿舍中,连在哪输入都不懂得,可想而知对汇编的认知度。
好在在同窗们的协助下,还是能够顺利的完毕了实验。
只是做的时候对有些过程与指令不太明白,通过查阅有关资料后之后,也弄明白了个大概,但愿在后来的微机课程学习中多用心。
七、思考题1、将内存DATA1 单元开始的0~15 共16 个数传送到DATA2 单元开始的数据区中。
MOV AX,DATAMOV DS,AXMOV ES,AXLEA SI,DATA1LEA DI,DATA2MOV CX,16CLDREP MOVSB2、将程序中的指令JZ MATCH 改为JNZ MATCH,程序成果如何?为什么?JZ 为零标志为1 转移,而JNZ 为零标志为0 转移。
微机软件课程设计实验报告

实验一基本程序编程和程序调试一、实验目的1、掌握数码转换等基本程序设计的技巧和方法。
2、熟悉DEBUG命令。
3、学会和掌握用DEBUG调试程序的方法。
二、实验设备PC机一台,装有DOS基本系统三、实验内容及步骤用DEBUG建立、汇编和运行调试程序的操作。
DEBUG是DOS系统支持的用于汇编语言源程序调试的系统软件。
它共有19条命令完成相应的功能,命令及其格式可参阅附录一。
(一)DEBUG操作练习1)实验调试程序程序的功能是从3500H内存单元开始建立0-15共16个数据。
程序略。
2)实验步骤:(1)输入与修改①启动DOS,在DOS提示符下输入DEBUG后回车,屏幕立即显示DEBUG提示符“—”,表明已进入DEBUG状态,可以执行DEBUG的各种命令。
②用DEBUG中的汇编命令“A 地址”将程序建立在内存单元中。
在提示符“—”下键入:“A 2000 ↵”此时显示器上将会显示程序的段地址CS和偏移地址IP,则可以输入以上的程序了。
③用反汇编命令“U 地址”检查程序:在提示符“—”下,键入“U 2000↵”,将从2000内存单元开始的内容反汇编,屏幕上即显示:(2)显示和修改数据①用修改内存单元命令“E 地址”在指定内存单元中存入一个数。
如要在3500为首址的单元中存入14H和25H两个数据,可在提示符“—”下,键入:“E 3500↵”②用显示内存命令“D 地址”检查指定单元的内容,在提示符“—”下,键入“D3500↵”③用显示和修改命令“R ”或“R 寄存器名”显示寄存器或修改其内容,在提示符“—”下,键入“R↵”(3)程序运行程序的运行方式有单步运行、断点运行和连续运行几种方式。
①单步运行输入DEBUG跟踪命令“T”或“T=地址”或“T=地址指定次数”,可从指定地址处运行该单元中的一条指令,以后只要连续输入“T”命令就能连续执行一条一条指令。
如在提示符“—”下,键入“T=2000 ↵”②断点运行用运行命令“G=地址地址断点地址断点…”执行指定地址的程序,在提示符“—”下,键入“G=2000 2011 ↵”③连续运行输入DEBUG 命令“G=地址”,执行指定地址的程序。
微型计算机实验报告

目录实验一 A/D与D/A转换 (2)实验二数字滤波器 (5)实验三离散化方法研究 (8)实验四数字PID调节器算法的研究 (13)实验五串级控制算法的研究........................ 错误!未定义书签。
实验六解耦控制算法的研究........................ 错误!未定义书签。
实验七最少拍控制算法研究........................ 错误!未定义书签。
实验八具有纯滞后系统的大林控制 .................. 错误!未定义书签。
实验九线性离散系统的全状态反馈控制 .............. 错误!未定义书签。
实验十模糊控制系统.............................. 错误!未定义书签。
实验十一具有单神经元控制器的控制系统 ............ 错误!未定义书签。
实验十二二次型状态调节器........................ 错误!未定义书签。
实验十三单闭环直流调速系统...................... 错误!未定义书签。
实验十四步进电机转速控制系统 .................... 错误!未定义书签。
实验十五单闭环温度恒值控制系统 .................. 错误!未定义书签。
实验十六单容水箱液位定值控制系统 ................ 错误!未定义书签。
实验一A/D与D/A转换一、实验目的1.通过实验了解实验系统的结构与使用方法;2.通过实验了解模拟量通道中模数转换与数模转换的实现方法。
二、实验设备1.THBDC-1型控制理论·计算机控制技术实验平台2.THBXD数据采集卡一块(含37芯通信线、16芯排线和USB电缆线各1根)3.PC机1台(含软件“THBDC-1”)三、实验内容1.输入一定值的电压,测取模数转换的特性,并分析之;2.在上位机输入一十进制代码,完成通道的数模转换实验。
2023年微机实验报告完整版

《微机试验》汇报试验名称 KeilC旳使用与汇编语言上机操作指导教师刘小英专业班级中法1201 姓名肖洋学号 U 联络一、任务规定1.掌握KeilC环境旳使用1)字节拆分、合并:调试e421.asm程序,观测有关寄存器和单元旳内容。
2)数据块填充:调试fill.asm程序,观测有关寄存器和单元旳内容。
2. 编写两个十六位数旳加法程序。
有两个十六位无符号数,分别寄存在从20H和30H开始旳数据区中,低八位先存,高八位在后,和存于R3(高八位)和R4(低八位),进位位存于R2。
二、设计思绪1.字节拆分、合并程序:运用汇编语言中旳 XCHD 和 SWAP 两个语句来实现将八位二进制数拆分为两个四位二进制数并分别存储于不一样旳存储空间旳功能,BCD 码与 30H 相或(加上 30H)得到 ASCII 码。
将两个 ASCII 码和 0FH 相与(高四位清零)得到 BCD 码,运用 SWAP 语句将高位数放至高四位,将高位数和低位数相或可实现字节旳合并。
2.数据块填充程序:将 R0 用作计数器,DPTR 用作片外数据指针,A 作为原始数据来源,依次序在片外旳存储单元内容填充数据。
运用循环语句来减少程序长度,并控制填充单元个数为片外 100H 个。
(通过 R0 旳进位控制)3.两个十六位数加法程序:把第一种十六位无符号数旳地八位和高八位分别存于 20H 和21H 中,把第二个十六位无符号数旳地八位和高八位分别存于 30H 和 31H 中,对 20H 和30H 中旳两个低八位进行 ADD 加法操作,成果存于 R4 中;然后对 21H 和 31H 中旳两个高八位进行 ADDC 带进位旳加法操作,成果存于 R3 中.然后将累加器 A 清零,并和#00H 进行 ADDC 带进位旳加法操作,成果产生进位数并存于 R2 中,程序结束。
三、资源分派1. 字节拆分、合并程序:片内 30H 单位寄存原 BCD 码,31H 和 32H 寄存拆分后旳两个 ASCII 码,33H 寄存合并后旳 BCD 码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录Part1.程序设计目求Part2.程序设计要求Part3.系统整体设计思路Part4.程序框图设计Part5.硬件电路设计Part6.课程设计体会Part7.程序设计的参考文献Part8.程序设计代码附录(总共三题)Part1:程序设计的目的:1.巩固和掌握对“微机原理”课程内容的认识和理解,提高应用水平.2.掌握汇编语言程序的编制方法.3.熟悉键盘控制和七段码管及74LS138芯片的使用.Part2:程序设计要求:本课程设计内容包括两个方面A.硬件设计:显示器用6个八段数码段显示.键盘采用4*4矩阵形式.由8255控制B.软件编程(上机编程内容)题目一※显示器工作于查询方式.键盘工作于中断方式※16个按键定位的键值为:0~f,按任意键在显示器上现实对应的键值.lED显示器显示数值从右到左逐位显示题目二※定义键盘按键:10个数字键(0~9);6个功能键:+(加),-(减),*(乘),/(除),=(等于),CLEAR(清零)※实现五位八进制数加法运算.可连续做加法.直接按"=号结束,显示结果※实现五位八进制数乘法运算.可连续做乘法运算Part3:程序设计的整体设计思路:A.物理构想思路:1)微型计算机由微处理器,存储器,接口电路以及连接在这些部件上的总线组成.微处理器,存储器和所有I\O设备之间的信息交换都通过总线进行.总线包括地址总线,数据总线和控制总线,他们始于CPU或终于CPU,现代微机大部分都是这种以总线为中心的结构.2)微型计算机及外围设备组成微型计算机系统的硬件,外围设备必须通过接口电路才能与系统总线相连,因此构建一个基于8255A的简单微型计算机系统,就是通过编译程序和物理连接让单片机拥有简单的计算器运算功能,因此系统总线上挂上一定规模的存储器和接口电路,然后在把合适的外围设备连接到接口电路上.解决物理连线方面的构想思路.就轮到程序设置的构想思路:B.软件构想思路:1)首先.是建立一个蕴含所有段码的数据表(在程序中的体现是TABLE),作用是存储段码,为程序的相应调用提供对应的段码.避免在程序中实现调用显示功能的时候造成过多的赘余.因为这次实验套装的LED管是共阳极管.所以只有列出对应的16个(0~F)适用于共阳极管的段码,才能满足显示的要求2)其次.是建立选通信号的输出存储.也就是.在数据部分建立一个表格,里面能够告诉CPU 的输出端要输出低电平的时候对应的代码指令:为什么是输出低电平?因为本次选用的LED 管是共阳极管.所以要在CPU的输出端与显示器的输入端对应借口接入CPU输出的低电平.从而告诉是哪一个显示器被选中.对应要输出怎么样的段码(信息).方能准确进行数据的显示3)在DATA设置完以后.就是功能键的自定义设计.这部分将会在物理连线框图里面提出(Part5)4)进行主程序的编写思路部分,首先是对应4*4的键盘程序.在按下对应的键位以后.为了能在显示器中正确显示出对应的数值.必须进行扫描,首先是判断是否有按键.如果按得是数字键.那么就要在LED显示管上面对应的位数以及对应的数值进行显示.并且判断数字键之前是否已经按了运算的功能键.从而判断是否要进行运算.如果确认在数字键之前按了运算的功能键.则应该进行运算功能,并且将运算结果存储在内存单元里面.等待下一步的指令.并且重复检测.等到有在物理键上面检测到有等号.则将最终的结果释放在LED管子上进行显示5)在运算结束后要实行放键功能,并且自动将所有的存储器(这里指的是RAM)上面的数据复位.等待实行重新的运算Part4:程序框图的设计:硬件电路设置:Part6.课程设计体会:一个星期的微机课程设计,在这个星期之中通过不断找资料解决问题,回顾了上学期所学的内容,给了我们很好一个机会将所学内容综合应用实践,温故而知新,对未来的学习也有很大帮助.但在课程设计之中也还发现一些不足的地方,我发现我能通过设计找出不足,更好的学习.并且给将来的学习提供一个好的解决榜样.所以通过这次程序设计的学习.我觉得我并不仅仅只学习到如何的运用汇编程序按照要求解答问题.而更是学习到了要怎么去思考.怎么去解决问题的方法.并且希望能够将这个所得应用在日后的学习之中.我觉得这才是本次课程设计的核心内容参考文献:微型计算机系统原理--(教材)微型计算机系统程序设计指导书--(实验题目)微型计算机系统程序设计例题A--(实验例题)Part8:实验程序:※设计代码※part1:※显示器工作于查询方式,键盘工作于中断方式※16个按键定义的键值:0-F,安任意键在显示器上现实对应的键值,LED显示器现实数值从右到左逐位现实STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSDA TA SEGMENTV A1 DB 0DFH,0EFH,0F7H,0FBH,0FDH,0FEH ;A端口的6根控制线(控制6个LED显示屏) VB2 DB 3FH,3FH,3FH,3FH,3FH,3FHVB3 DB 00H,00H,00H,00H,00H,00HVB4 DB 00H,00H,00H,00H,00H,00HTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H;0~F的显示段码DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART:MOV AX,DATAMOV DS,AXMOV DX,0606HMOV AL,88HOUT DX,AL :8255初始化MOV BX,0000H :BX清零STT: :键盘测试MOV AL,00HMOV DX,0600HOUT DX,ALMOV DX,0604HIN AL,DXAND AL,0F0HCMP AL,0F0HJNZ KEYABCCALL DISP :调用显示程序JMP STTKEYABC:CALL TIME :延时去抖动MOV DX,0604HIN AL,DXAND AL,0F0HCMP AL,0F0HJNZ KEYJMP STTKEY: :键盘扫描识别MOV DX,0600HMOV AL,0FEHOUT DX,ALMOV DX,0604HIN AL,DXKEY_3:TEST AL,10HJNZ KEY_7CALL KEY3JMP STTKKEY_7:TEST AL,20HJNZ KEY_BCALL KEY7JMP STTKKEY_B:TEST AL,40HJNZ KEY_FCALL KEYBJMP STTKKEY_F:TEST AL,80HJNZ KEY_2CALL KEYFJMP STTKMOV DX,0600H MOV AL,0FDH OUT DX,AL MOV DX,0604H IN AL,DX TEST AL,10H JNZ KEY_6 CALL KEY2 JMP STTKKEY_6:TEST AL,20H JNZ KEY_A CALL KEY6 JMP STTKKEY_A:TEST AL,40H JNZ KEY_E CALL KEYA JMP STTKKEY_E:TEST AL,80H JNZ KEY_1 CALL KEYE JMP STTKKEY_1:MOV DX,0600H MOV AL,0FBH OUT DX,AL MOV DX,0604H IN AL,DX TEST AL,10H JNZ KEY_5 CALL KEY1 JMP STTKKEY_5:TEST AL,20H JNZ KEY_9 CALL KEY5KEY_9:TEST AL,40H JNZ KEY_D CALL KEY9 JMP STTKKEY_D:TEST AL,80H JNZ KEY_0 CALL KEYD JMP STTKKEY_0:MOV DX,0600H MOV AL,0F7H OUT DX,AL MOV DX,0604H IN AL,DX TEST AL,10H JNZ KEY_4 CALL KEY0 CALL STTKKEY_4:TEST AL,20H JNZ KEY_8 CALL KEY4 JMP STTKKEY_8:TEST AL,40H JNZ KEY_C CALL KEY8 JMP STTKKEY_C:TEST AL,80H JNZ KEY_G CALL KEYCKEY_G:JMP STTKKEY0:CALL LP1 MOV AL,3FH MOV [SI+5],AL MOV AL,00H MOV [DI+5],AL CALL DISP RETKEY1:CALL LP1 MOV AL,06H MOV [SI+5],AL MOV AL,01H MOV [DI+5],AL CALL DISP RETKEY2:CALL LP1 MOV AL,5BH MOV [SI+5],AL MOV AL,02H MOV [DI+5],AL CALL DISP RETKEY3:CALL LP1 MOV AL,4FH MOV [SI+5],AL MOV AL,03H MOV [DI+5],AL CALL DISP RETKEY4:CALL LP1 MOV AL,66H MOV [SI+5],AL MOV AL,04H MOV [DI+5],AL CALL DISPRETKEY5:CALL LP1 MOV AL,6DH MOV [SI+5],AL MOV AL,05H MOV [DI+5],AL CALL DISP RETKEY6:CALL LP1 MOV AL,7DH MOV [SI+5],AL MOV AL,06H MOV [DI+5],AL CALL DISP RETKEY7:CALL LP1 MOV AL,07H MOV [SI+5],AL MOV AL,07H MOV [DI+5],AL CALL DISP RETKEY8:CALL LP1 MOV AL,7FH MOV [SI+5],AL MOV AL,08H MOV [DI+5],AL CALL DISP RETKEY9:CALL LP1 MOV AL,6FH MOV [SI+5],AL MOV AL,09H MOV [DI+5],ALCALL DISP RETKEYA:CALL LP1 MOV AL,77H MOV [SI+5],AL MOV AL,0AH MOV [DI+5],AL CALL DISP RETKEYB:CALL LP1 MOV AL,7CH MOV [SI+5],AL MOV AL,0BH MOV [DI+5],AL CALL DISP RETKEYC:CALL LP1 MOV AL,39H MOV [SI+5],AL MOV AL,0CH MOV [DI+5],AL CALL DISP RETKEYD:CALL LP1 MOV AL,5EH MOV [SI+5],AL MOV AL,0DH MOV [DI+5],AL CALL DISP RETKEYE:CALL LP1 MOV AL,79H MOV [SI+5],AL MOV AL,0EHMOV [DI+5],ALCALL DISPRETKEYF:CALL LP1MOV AL,71HMOV [SI+5],ALMOV AL,0FHMOV [DI+5],ALCALL DISPRET;上面是键盘键位的设置以及对应子程序的编写LP1: (数据段以为保存子程序,前移6位) MOV SI,0FFSET VA2MOV DI,OFFSET V A3MOV CX,0005HLP2:MOV AL,[SI+4]MOV [SI+5],ALMOV AL,[DI+4]MOV [DI+5],ALDEC SIDEC DILOOP LP2RETDISP: (6位显示程序)MOV SI,OFFSET V A1MOV DI,OFFSET V A2MOV DL,[DI+5]CMP DL,3FHJNZ DIR5MOV DL,[DI+4]CMP DL,3FHJNZ DIR4MOV DL,[DI+3]CMP DL,3FHJNZ DIR3MOV DL,[DI+2]CMP DL,3FHJNZ DIR2MOV DL,[DI+1]CMP DL,3FHJNZ DIR1JMP DIR0DIR5:MOV CX,0006HJMP DIRDIR4:MOV CX,0005HJMP DIRDIR3:MOV CX,0004HJMP DIRDIR2:MOV CX,0003HJMP DIRDIR1:MOV CX,0002HJMP DIRDIR0:MOV CX,0001HDIR:MOV DX,0600HMOV AL,[SI]OUT DX,ALMOV DX,0602HMOV AL,[DI]OUT DX,ALCALL TIMEINC SIINC DILOOP DIRRETTIME: (延时程序) PUSH AXPUSH CXMOV CX,0005HTIME1:MOV AX,00F0HTIME2:DEC AXJNZ TIME2LOOP TIME1POP CXPOP AXRETSTTK: (按键测试程序)CALL DISPMOV AL,00HMOV DX,0600HOUT DX,ALMOV DX,0604HIN AL,DXAND AL,0F0HCMP AL,0F0HJNZ STTKJMP STTCODE ENDSEND STARTPart2:※显示器工作于查询方式,键盘工作于中断方式※定义键盘按键:10个数字键(0~9);6个功能键:+(加),-(减),*(乘),/(除),=(等于),CLEAR(清零)※实现五位八进制数加法运算.可连续做加法.直接按"=号结束,显示结果STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSDA TA SEGMENTV A1 DB 0DFH,0EFH,0F7H,0FBH,0FDH,0FEHV A2 DB 3FH,3FH,3FH,3FH,3FH,3FHV A3 DB 00H,00H,00H,00H,00H,00HV A4 DB 00H,00H,00H,00H,00H,00HSUM DB 00H,00H,00H,00H,00H,00HTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DA TAMOV DS,AXMOV DX,0606HMOV AL,88HOUT DX,ALMOV BX,0000HSTT: MOV AL,00HMOV DX,0600HOUT DX,ALMOV DX,0604HIN AL,DXAND AL,0F0HCMP AL,0F0HJNZ KEYABCCALL DISPJMP STTKEYABC:CALL DELAYMOV DX,0604HIN AL,DXAND AL,0F0HCMP AL,0F0HJNZ KEYJMP STTKEY: MOV DX,0600HMOV AL,0FEHOUT DX,ALMOV DX,0604HIN AL,DXKEY_0: TEST AL,10HJNZ KEY_1CALL KEY0JMP STTKKEY_1: TEST AL,20HJNZ KEY_4CALL KEY1JMP STTKKEY_4: TEST AL,40HJNZ KEY_7CALL KEY4JMP STTKKEY_7: TEST AL,80HJNZ KEY2CCALL KEY7JMP STTKKEY2C: MOV DX,0600HMOV AL,0FDHOUT DX,ALMOV DX,0604HIN AL,DXKEY_CLEAR:TEST AL,10HJNZ KEY_2CALL KEYCLEARJMP STTKKEY_2: TEST AL,20HJNZ KEY_5CALL KEY2JMP STTKKEY_5: TEST AL,40HJNZ KEY_8CALL KEY5JMP STTKKEY_8: TEST AL,80HJNZ KEY3CCALL KEY8JMP STTKKEY3C: MOV DX,0600HMOV AL,0FBHOUT DX,ALMOV DX,0604HIN AL,DXKEY_QUAL: TEST AL,10HJNZ KEY_3CALL KEYEQUALJMP STTKKEY_3: TEST AL,20HJNZ KEY_6CALL KEY3JMP STTKKEY_6: TEST AL,40HJNZ KEY_9CALL KEY6JMP STTKKEY_9: TEST AL,80HJNZ KEY4CCALL KEY9JMP STTKKEY4C: MOV DX,0600HMOV AL,0F7HOUT DX,ALMOV DX,0604HIN AL,DXKEY_PLUS: TEST AL,10HJNZ KEY_MINUSCALL KEYPLUSJMP STTKKEY_MINUS: TEST AL,20HJNZ KEY_MULJMP STTKKEY_MUL: TEST AL,40HJNZ KEY_DIVJMP STTKKEY_DIV: TEST AL,80HKEY_G: JMP STTK;结束按键扫描,下面是按键处理函数(与第一个程序不同的地方是功能键的设置问题)KEY0: CMP BH,00HJZ KEY0_1CALL CLEARKEY0_1: CALL LP1MOV AL,3FHMOV [SI+4],ALMOV AL,00HMOV [DI+4],ALCALL DISPRETKEY1: CMP BH,00HJZ KEY1_1CALL CLEAR KEY1_1: CALL LP1MOV AL,06HMOV [SI+4],ALMOV AL,01HMOV [DI+4],ALCALL DISPRETKEY2: CMP BH,00HJZ KEY2_1CALL CLEAR KEY2_1: CALL LP1MOV AL,5BHMOV [SI+4],ALMOV AL,02HMOV [DI+4],ALCALL DISPRETKEY3: CMP BH,00HJZ KEY3_1CALL CLEAR KEY3_1: CALL LP1MOV AL,4FHMOV [SI+4],ALMOV AL,03HMOV [DI+4],ALCALL DISPRETKEY4: CMP BH,00HJZ KEY4_1CALL CLEAR KEY4_1:CALL LP1MOV AL,66HMOV [SI+4],ALMOV AL,04HMOV [DI+4],ALRETKEY5: CMP BH,00HJZ KEY5_1CALL CLEAR KEY5_1: CALL LP1MOV AL,6DHMOV [SI+4],ALMOV AL,05HMOV [DI+4],ALCALL DISPRETKEY6: CMP BH,00HJZ KEY6_1CALL CLEAR KEY6_1: CALL LP1MOV AL,7DHMOV [SI+4],ALMOV AL,06HMOV [DI+4],ALCALL DISPRETKEY7: CMP BH,00HJZ KEY7_1CALL CLEAR KEY7_1: CALL LP1MOV AL,07HMOV [SI+4],ALMOV AL,07HMOV [DI+4],ALCALL DISPRETKEY8: CMP BH,00HJZ KEY8_1CALL CLEAR KEY8_1: CALL LP1MOV AL,7FHMOV [SI+4],ALMOV AL,08HMOV [DI+4],ALRETKEY9: CMP BH,00HJZ KEY9_1CALL CLEARKEY9_1: CALL LP1MOV AL,6FHMOV [SI+4],ALMOV AL,09HMOV [DI+4],ALCALL DISPRETKEYPLUS: CMP BH,00H ;设置加法的标志位以及程序的跳转判定JNZ KEYPLUS_1MOV BX,0101HCALL ADD1KEYPLUS_1: MOV BX,0101HRETKEYEQUAL: MOV BH,01H ;设置等号的标志位以及程序的跳转判定CMP BL,00HJZ EQUALFCMP BL,01HJZ ADDFCMP BL,02HSTTE: RETEQUALF: CALL EQUAL1JMP STTEADDF: CALL ADDSUMJMP STTEKEYCLEAR:CALL CLEAR2 ;按键CLEAR的功能调用RETCLEAR: MOV SI,OFFSET V A2 ;CLEAR系列的程序(作用是全部复位) MOV DI,OFFSET V A3MOV CX,0006HCLEAR1:MOV AL,3FHMOV [SI],ALMOV AL,00HMOV [DI],ALINC SIINC DILOOP CLEAR1MOV BH,00HRETCLEARPLUS: MOV DI,OFFSET V A3 ;加法专用的清零程序,实现连加的重要部分MOV CX,0006HCLEARPLUS1: MOV AL,00HMOV [DI],ALINC SIINC DILOOP CLEARPLUS1MOV BH,00HRETCLEAR2: MOV SI,OFFSET V A2MOV DI,OFFSET V A3MOV CX,0006HCLEAR3: MOV AL,3FHMOV [SI],ALMOV AL,00HMOV [DI],ALINC SIINC DILOOP CLEAR3CLEAR4: MOV SI,OFFSET SUMMOV CX,0006HCLEAR5: MOV AL,00HMOV [SI],ALINC SILOOP CLEAR5MOV BX,00HRETADD1: PUSH BX ;加法的子程序实现MOV SI,OFFSET V A3MOV DI,OFFSET SUMCLCXOR AH,AHMOV CX,0005HMOV BL,08HADD1_1: MOV AL,[DI]ADD AL,[SI]ADD AL,AHCBWDIV BLMOV [DI],AHMOV AH,ALINC SIINC DILOOP ADD1_1MOV [DI],AHCALL CLEARPLUSPOP BXRETEQUAL1: MOV SI,OFFSET V A3MOV DI,OFFSET SUMMOV CX,00006H EQUAL1_1: MOV AL,[SI]MOV [DI],ALINC SIINC DILOOP EQUAL1_1CALL CHANGECALL DISPRETADDSUM: CALL ADD1CALL CHANGECALL DISPRETLP1: MOV SI,OFFSET V A2MOV DI,OFFSET V A3MOV CX,0004HLP2: MOV AL,[SI+3]MOV [SI+4],ALMOV AL,[DI+3]MOV [DI+4],ALDEC SIDEC DILOOP LP2RETLP3: MOV CX,0006HMOV SI,OFFSET V A3MOV DI,OFFSET SUMLP4: MOV AL,[SI]MOV [DI],ALINC SIINC DILOOP LP4RETCHANGE: PUSH BX ;意思是转码,将SUM存储器里面的东西调到V A2中MOV SI,OFFSET V A2MOV DI,OFFSET SUMMOV BX,OFFSET TABLEMOV CX,0006HCOMP0: MOV AL,[DI]XLATMOV [SI],ALINC SIINC DILOOP COMP0POP BXRETDISP: MOV SI,OFFSET V A1MOV DI,OFFSET V A2MOV DL,[DI+5]CMP DL,3FHJNZ DIR5MOV DL,[DI+4]CMP DL,3FHJNZ DIR4MOV DL,[DI+3]CMP DL,3FHJNZ DIR3MOV DL,[DI+2]CMP DL,3FHJNZ DIR2MOV DL,[DI+1]CMP DL,3FHJNZ DIR1JMP DIR0DIR5: MOV CX,0006HJMP DIRDIR4: MOV CX,0005HJMP DIRDIR3: MOV CX,0004HJMP DIRDIR2: MOV CX,0003HJMP DIRDIR1: MOV CX,0002HJMP DIRDIR0: MOV CX,0001HJMP DIR DIR: MOV DX,0600HMOV AL,[SI]OUT DX,ALMOV DX,0602HMOV AL,[DI]OUT DX,ALCALL DELAYINC SIINC DILOOP DIRRET DELAY: PUSH AXPUSH CXMOV CX,0005H DELAY1: MOV AX,00F0H DELAY2: DEC AXJNZ DELAY2LOOP DELAY1POP CXPOP AXRETSTTK: CALL DISPMOV AL,00HMOV DX,0600HOUT DX,ALMOV DX,0604HIN AL,DXAND AL,0F0HCMP AL,0F0HJNZ STTKJMP STT CODE ENDSEND STARTPart3: ※定义键盘按键:10个数字键(0~9);6个功能键:+(加),-(减),*(乘),/(除),=(等于),CLEAR(清零)※实现五位八进制数乘法运算.可连续做乘法运算STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSDA TA SEGMENTV A1 DB 0DFH,0EFH,0F7H,0FBH,0FDH,0FEHV A2 DB 3FH,3FH,3FH,3FH,3FH,3FHV A3 DB 00H,00H,00H,00H,00H,00HV A4 DB 00H,00H,00H,00H,00H,00HV A5 DB 00H,00H,00H,00H,00H,00HSUM DB 00H,00H,00H,00H,00H,00HMULSUM DB 00H,00H,00H,00H,00H,00HTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DA TAMOV DS,AXMOV DX,0606HMOV AL,88HOUT DX,ALMOV BX,0000HSTT: MOV AL,00HMOV DX,0600HOUT DX,ALMOV DX,0604HIN AL,DXAND AL,0F0HCMP AL,0F0HJNZ KEYABCCALL DISPJMP STTKEYABC:CALL DELAYMOV DX,0604HIN AL,DXAND AL,0F0HCMP AL,0F0HJNZ KEY1CJMP STTKEY1C: MOV DX,0600HMOV AL,0FEHOUT DX,ALMOV DX,0604HIN AL,DXKEY_0: TEST AL,10HJNZ KEY_1CALL KEY0JMP STTKKEY_1: TEST AL,20HJNZ KEY_4CALL KEY1JMP STTKKEY_4: TEST AL,40HJNZ KEY_7CALL KEY4JMP STTKKEY_7: TEST AL,80HJNZ KEY2CCALL KEY7JMP STTKKEY2C: MOV DX,0600HMOV AL,0FDHOUT DX,ALMOV DX,0604HIN AL,DXKEY_C: TEST AL,10HJNZ KEY_2CALL KEYCLEARJMP STTKKEY_2: TEST AL,20HJNZ KEY_5CALL KEY2JMP STTKKEY_5: TEST AL,40HJNZ KEY_8CALL KEY5JMP STTKKEY_8: TEST AL,80HJNZ KEY3CCALL KEY8JMP STTKKEY3C: MOV DX,0600HMOV AL,0FBHOUT DX,ALMOV DX,0604HIN AL,DXKEY_E: TEST AL,10HJNZ KEY_3CALL KEYEQUALJMP STTKKEY_3: TEST AL,20HJNZ KEY_6CALL KEY3JMP STTKKEY_6: TEST AL,40HJNZ KEY_9CALL KEY6JMP STTKKEY_9: TEST AL,80HJNZ KEY4CCALL KEY9JMP STTKKEY4C: MOV DX,0600HMOV AL,0F7HOUT DX,ALMOV DX,0604HIN AL,DXKEY_P: TEST AL,10HJNZ KEY_MINUSJMP STTKKEY_MINUS:TEST AL,20HJNZ KEY_MULJMP STTKKEY_MUL: TEST AL,40HJNZ KEY_DIVCALL KEYMULJMP STTKKEY_DIV: TEST AL,80HKEY_G: JMP STTK;结束按键扫描,下面是按键处理函数(这里只有乘法功能的定义)KEY0: CMP BH,00HJZ KEY0_1CALL CLEAR KEY0_1: CALL LP1MOV AL,3FHMOV [SI+4],ALMOV AL,00HMOV [DI+4],ALCALL DISPRETKEY1: CMP BH,00HJZ KEY1_1CALL CLEAR KEY1_1: CALL LP1MOV AL,06HMOV [SI+4],ALMOV AL,01HMOV [DI+4],ALCALL DISPRETKEY2: CMP BH,00HJZ KEY2_1CALL CLEAR KEY2_1: CALL LP1MOV AL,5BHMOV [SI+4],ALMOV AL,02HMOV [DI+4],ALCALL DISPRETKEY3: CMP BH,00HJZ KEY3_1CALL CLEAR KEY3_1: CALL LP1MOV AL,4FHMOV [SI+4],ALMOV AL,03HMOV [DI+4],ALCALL DISPRETKEY4: CMP BH,00HJZ KEY4_1CALL CLEARKEY4_1:CALL LP1MOV AL,66HMOV [SI+4],ALMOV AL,04HMOV [DI+4],ALCALL DISPRETKEY5: CMP BH,00HJZ KEY5_1CALL CLEAR KEY5_1: CALL LP1MOV AL,6DHMOV [SI+4],ALMOV AL,05HMOV [DI+4],ALCALL DISPRETKEY6: CMP BH,00HJZ KEY6_1CALL CLEAR KEY6_1: CALL LP1MOV AL,7DHMOV [SI+4],ALMOV AL,06HMOV [DI+4],ALCALL DISPRETKEY7: CMP BH,00HJZ KEY7_1CALL CLEAR KEY7_1: CALL LP1MOV AL,07HMOV [SI+4],ALMOV AL,07HMOV [DI+4],ALCALL DISPRETKEY8: CMP BH,00HJZ KEY8_1CALL CLEAR KEY8_1: CALL LP1MOV AL,7FHMOV [SI+4],ALMOV AL,08HMOV [DI+4],ALCALL DISPRETKEY9: CMP BH,00HJZ KEY9_1CALL CLEARKEY9_1: CALL LP1MOV AL,6FHMOV [SI+4],ALMOV AL,09HMOV [DI+4],ALCALL DISPRETKEYMUL: CMP BH,00HJNZ KEYMUL_1MOV BX,0103HCALL MUL1 KEYMUL_1: MOV BX,0103HRETKEYEQUAL: MOV BH,01HCMP BL,00HJZ EQUALFCMP BL,03HJZ MULFSTTE: RETEQUALF: CALL EQUAL1JMP STTE MULF: CALL MULSUM1JMP STTEKEYCLEAR: CALL CLEAR2RETCLEAR: MOV SI,OFFSET V A2MOV DI,OFFSET V A3MOV CX,0006H CLEAR1: MOV AL,3FHMOV [SI],ALMOV AL,00HMOV [DI],ALINC SIINC DILOOP CLEAR1MOV BH,00HRETCLEARPLUS: MOV DI,OFFSET V A3PUSH CXMOV CX,0006H CLEARPLUS1: MOV AL,00HMOV [DI],ALINC DILOOP CLEARPLUS1POP CXMOV BH,00HRETCLEAR2: MOV SI,OFFSET V A2MOV DI,OFFSET V A3MOV CX,0006HCLEAR3: MOV AL,3FHMOV [SI],ALMOV AL,00HMOV [DI],ALINC SIINC DILOOP CLEAR3CLEAR4: MOV DI,OFFSET MULSUMMOV AL,01HMOV [DI],ALMOV AL,00HMOV [DI+1],ALMOV [DI+2],ALMOV [DI+3],ALMOV [DI+4],ALMOV [DI+5],ALMOV SI,OFFSET SUMMOV DI,OFFSET V A4MOV CX,0006HCLEAR5: MOV AL,00HMOV [SI],ALMOV [DI],ALINC SIINC DILOOP CLEAR5MOV BX,0000HRETCLEARV A4: PUSH CXMOV SI,OFFSET V A4MOV CX,0006HCLEARV A41: MOV AL,00HMOV [SI],ALINC SILOOP CLEARV A41POP CXRETMUL1: PUSH BX (相乘子程序) MOV SI,OFFSET V A3XOR CX,CXXOR AX,AXMOV BX,1000HMOV AL,[SI+4]CMP AL,00HJZ MULNEXT1MUL BXADD CX,AXXOR AX,AXMULNEXT1: MOV BX,0200HMOV AL,[SI+3]CMP AL,00HJZ MULNEXT2MUL BXADD CX,AXXOR AX,AXMULNEXT2: MOV BX,0040HMOV AL,[SI+2]CMP AL,00HJZ MULNEXT3MUL BXADD CX,AXXOR AX,AXMULNEXT3: MOV BX,0008HMOV AL,[SI+1]CMP AL,00HJZ MULNEXT4MUL BXADD CX,AXXOR AX,AXMULNEXT4: MOV AL,[SI]ADD CX,AXXOR AX,AXMOV SI,OFFSET MULSUM (开始运行相乘)MOV AL,00HCMP [SI],ALJNZ MUL1_1CMP [SI+1],ALJNZ MUL1_1CMP [SI+2],ALJNZ MUL1_1CMP [SI+3],ALJNZ MUL1_1CMP [SI+4],ALJNZ MUL1_1CMP [SI+5],ALJNZ MUL1_1PUSH CXMOV CX,0006HMOV SI,OFFSET V A3MOV DI,OFFSET MULSUMLPJ2: MOV AL,[SI]MOV [DI],ALINC SIINC DILOOP LPJ2POP CXJMP STTKMUL1_1: MOV SI,OFFSET MULSUMMOV DI,OFFSET V A4XOR AX,AXMOV BL,08HPUSH CXMOV CX,0005HMUL1_2: MOV AL,[DI]ADD AL,[SI]ADD AL,AHCBWDIV BLMOV [DI],AHMOV AH,ALINC SIINC DILOOP MUL1_2MOV [DI],AHPOP CXLOOP MUL1_1CALL CLEARPLUSPOP BXCALL LP3CALL CLEARV A4RETMULSUM1: CALL MUL1CALL CHANGEMULCALL CLEARV A4CALL DISPRETLP1: M OV SI,OFFSET V A2MOV DI,OFFSET VA3MOV CX,0004HLP2: M OV AL,[SI+3]MOV [SI+4],ALMOV AL,[DI+3]MOV [DI+4],ALDEC SIDEC DILOOP LP2RETLP3: MOV CX,0006HMOV SI,OFFSET V A4MOV DI,OFFSET MULSUMLP4: M OV AL,[SI]MOV [DI],ALINC SIINC DILOOP LP4RETCHANGEMUL: PUSH BXMOV SI,OFFSET V A2MOV DI,OFFSET MULSUMMOV BX,OFFSET TABLEMOV CX,0006H COMPMUL0: MOV AL,[DI]XLATMOV [SI],ALINC SIINC DILOOP COMPMUL0POP BXRETDISP: MOV SI,OFFSET V A1MOV DI,OFFSET V A2MOV DL,[DI+5]CMP DL,3FHJNZ DIR5MOV DL,[DI+4]CMP DL,3FHJNZ DIR4MOV DL,[DI+3]CMP DL,3FHJNZ DIR3MOV DL,[DI+2]CMP DL,3FHJNZ DIR2MOV DL,[DI+1]CMP DL,3FHJNZ DIR1JMP DIR0DIR5: MOV CX,0006HJMP DIRDIR4: MOV CX,0005HJMP DIRDIR3: MOV CX,0004HJMP DIRDIR2: MOV CX,0003HJMP DIRDIR1: MOV CX,0002HJMP DIRDIR0: MOV CX,0001HJMP DIRDIR: MOV DX,0600HMOV AL,[SI]OUT DX,ALMOV DX,0602HMOV AL,[DI]OUT DX,ALCALL DELAYINC SIINC DILOOP DIRRETDELAY: PUSH AXPUSH CXMOV CX,0005H DELAY1: MOV AX,00F0H DELAY2: DEC AXJNZ DELAY2LOOP DELAY1POP CXPOP AXRETSTTK: CALL DISPMOV AL,00HMOV DX,0600HOUT DX,ALMOV DX,0604HIN AL,DXAND AL,0F0HCMP AL,0F0HJNZ STTKJMP STTCODE ENDSEND START。