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

合集下载

微型计算机实验一实验报告

微型计算机实验一实验报告

微型计算机实验一实验报告一、实验目的本次微型计算机实验的主要目的是让我们熟悉微型计算机的硬件组成,了解计算机各部件之间的连接和工作原理,并掌握基本的计算机组装和调试技能。

通过实际操作,提高我们对计算机系统的认识和动手能力,为今后的学习和工作打下坚实的基础。

二、实验设备与工具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 口也可

微机系统实验报告

微机系统实验报告
END BEG
四、实验小结〔包括问题和解决方法、心得体会、意见与建议等〕
通过这次实验我对串行通信的根本知识,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年微机实验报告完整版

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 码。

微机系统实验报告

微机系统实验报告

微机系统实验报告一、实验目的本次微机系统实验的主要目的是通过实际操作和研究,深入了解微机系统的组成、工作原理以及相关的硬件和软件技术,提高我们对计算机系统的理解和应用能力。

二、实验设备与环境本次实验所使用的设备包括一台配备有英特尔酷睿 i5 处理器、8GB 内存、512GB 固态硬盘的微机,以及相关的实验仪器和软件,如逻辑分析仪、示波器、编译软件等。

实验环境为 Windows 10 操作系统。

三、实验内容与步骤(一)微机系统硬件组成的认识首先,我们对微机系统的硬件组成进行了详细的观察和学习。

打开计算机主机箱,我们可以看到主板、CPU、内存、硬盘、显卡、声卡等主要硬件组件。

通过观察它们的外观、接口和标识,了解了它们的功能和作用。

(二)CPU 性能测试使用专门的 CPU 性能测试软件,对微机的 CPU 进行了性能测试。

在测试过程中,我们记录了 CPU 的主频、核心数、线程数等参数,并观察了其在不同负载下的性能表现,如处理单线程任务和多线程任务时的速度和效率。

(三)内存性能测试通过内存测试软件,对微机的内存进行了读写速度、延迟等性能指标的测试。

同时,还研究了不同内存容量和频率对系统性能的影响。

(四)硬盘性能测试利用硬盘性能测试工具,对微机的固态硬盘进行了顺序读写、随机读写等性能测试。

分析了硬盘的读写速度、访问时间等参数,评估了其对系统整体性能的贡献。

(五)显卡性能测试使用显卡性能测试软件,对微机的显卡进行了图形处理能力的测试。

包括 3D 渲染、游戏性能等方面的测试,了解了显卡在不同应用场景下的表现。

(六)系统稳定性测试为了确保微机系统在长时间运行中的稳定性,我们进行了长时间的压力测试。

通过运行大型软件、多任务处理等方式,观察系统是否出现死机、蓝屏等故障。

四、实验结果与分析(一)CPU 性能测试结果经过测试,我们发现微机所配备的英特尔酷睿 i5 处理器在处理单线程任务时表现出色,其主频较高,能够快速完成单个任务。

微型计算机应用系统的课程设计报告

微型计算机应用系统的课程设计报告

课程设计课程名称微机原理课程设计与实践题目名称微型计算机应用系统的设计2012年 3 月 15日实验的任务书计算器(1)(一)目的(1)巩固和加深对《微机原理及应用》课程内容的认识和理解,提高应用水平。

(2)掌握汇编语言程序的编程方法。

(3)熟悉键盘控制和七段数码管的使用。

(二)设计要求及设计程序课程设计内容上机编程来译码。

1.1第一个程序的流程图1.2源程序STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSDATA SEGMENTTAB1 DB 05H,09H,0FH,0CH ;设置四位查询位TAB2 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;设置0~F的十六位数码管段码DB 7FH,6FH,77H,7CH,39H,5EH,79H,71HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AL,80H ;8255A初始化OUT 63H,ALL1: MOV DL,0F7HMOV SI,OFFSET TAB1MOV CX,0004HL2: MOV AL,DL ;位码送给ALOUT 61H,ALMOV AL,[SI]MOV BX,OFFSET TAB2 ;查表取出数码管的段码XLAT TAB2OUT 60H,AL ;查表的段码送A口显示INC SIROL DL,01H ;下个要显示的数码管位码 CALL TIMELOOP L2JMP L1TIME: PUSH AX ;延时程序PUSH CXMOV CX,0002HTIME1: MOV AX,0300HTIME2: DEC AXJNZ TIME2LOOP TIME1POP CXPOP AXRETCODE ENDSEND START二、2.1将8个键按实验室要求定义键值,按任意键在显示器上显示对应键值,2.2 流程图2.3源程序:STACK SEGMENT STACKDW 64 DUP (?)STACK ENDSDATA SEGMENTVAR1 DB 0BFH,0DFH,0EFH,0F7HVAR2 DB 3FH,3FH,3FH,3FH,3FHVAR3 DB 00H,00H,00H,00H,00HTABL DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB 7FH,6FH,77H,7CH,39H,5EH,79H,71HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AL,89HOUT 63H,AL ;8255A初始化STT: MOV AL,00H ;键盘测试OUT 61H,ALNEXT: IN AL,62HAND AL,82HCMP AL,82HJNZ KEYABCCALL DISP ;调用显示程序 JMP STT;--------------------------------------------------------------------- KEYABC: CALL TIME ;延时,去抖动IN AL,62HAND AL,82HCMP AL,82HJNZ KEY_7JMP STTKEY_7: MOV AL,0F7H ;键盘扫描识别OUT 61H,ALIN AL,62HTEST AL,02HJNZ KEY_ACALL KEY7JMP STTKKEY_A: TEST AL,80HJNZ KEY_1CALL KEYAJMP STTKKEY_1: MOV AL,0EFHOUT 61H,ALIN AL,62HTEST AL,02HJNZ KEY_FCALL KEY1JMP STTKKEY_F: TEST AL,80HJNZ KEY_BCALL KEYFJMP STTKKEY_B: MOV AL,0DFHOUT 61H,ALIN AL,62HTEST AL,02HJNZ KEY_6CALL KEYBJMP STTKKEY_6: TEST AL,80HJNZ KEY_ECALL KEY6JMP STTKKEY_E: MOV AL,0BFHOUT 61H,ALIN AL,62HTEST AL,02HJNZ KEY_9CALL KEYEJMP STTKKEY_9: TEST AL,80HJNZ KEY_01CALL KEY9KEY_01: JMP STTK;---------------------------------------------------------------------;按键7处理子程序KEY7: CALL LP1 ;低4位字节前移MOV AL,07HMOV [DI+4],ALLEA BX,TABL ;查表取出要显示数字的数码管段码XLAT TABLMOV [SI+4],ALCALL DISP ;显示RET ;返回;--------------------------------------------------------------------- KEYA: CALL LP1 ;按键A处理子程序MOV AL,0AHMOV [DI+4],ALLEA BX,TABLXLAT TABLMOV [SI+4],ALCALL DISPRET;--------------------------------------------------------------------- KEY1: CALL LP1 ;按键1处理子程序MOV AL,01HMOV [DI+4],ALLEA BX,TABLXLAT TABLMOV [SI+4],ALCALL DISPRET;--------------------------------------------------------------------- KEYF: CALL LP1 ;按键F处理子程序MOV AL,0FHMOV [DI+4],ALLEA BX,TABLXLAT TABLMOV [SI+4],ALCALL DISPRET;--------------------------------------------------------------------- KEYB: CALL LP1 ;按键B处理子程序MOV AL,0BHMOV [DI+4],ALLEA BX,TABLXLAT TABLMOV [SI+4],ALCALL DISPRET;--------------------------------------------------------------------- KEY6: CALL LP1 ;按键6处理子程序MOV AL,06HMOV [DI+4],ALLEA BX,TABLXLAT TABLMOV [SI+4],ALCALL DISPRET;--------------------------------------------------------------------- KEYE: CALL LP1 ;按键E处理子程序MOV AL,0EHMOV [DI+4],ALLEA BX,TABLXLAT TABLMOV [SI+4],ALCALL DISPRET;--------------------------------------------------------------------- KEY9: CALL LP1 ;按键9处理子程序MOV AL,09HMOV [DI+4],ALLEA BX,TABLXLAT TABLMOV [SI+4],ALCALL DISPRET;--------------------------------------------------------------------- LP1: MOV CX,0004H ;数据移位保存子程序(前移四位)MOV SI,OFFSET VAR2MOV DI,OFFSET VAR3LP2: MOV AL,[SI+3]MOV [SI+4],ALMOV AL,[DI+3]MOV [DI+4],ALDEC SIDEC DILOOP LP2RET;--------------------------------------------------------------------- DISP: MOV SI,OFFSET VAR1 ;显示子程序MOV DI,OFFSET VAR2MOV CX,0004HDIR: MOV AL,[SI]OUT 61H,ALMOV AL,[DI]OUT 60H,ALCALL TIMEINC SIINC DILOOP DIRRET;--------------------------------------------------------------------- TIME: PUSH AX ;延时程序PUSH CXMOV CX,0002HTIME1: MOV AX,0300HTIME2: DEC AXJNZ TIME2LOOP TIME1POP CXPOP AXRET;--------------------------------------------------------------------- STTK: CALL DISP ;放键测试程序MOV AL,00HOUT 61H,ALIN AL,62HAND AL,82HCMP AL,82HJNZ STTKJMP STTCODE ENDSEND START三计算器程序3.1要求:1.在显示器上显示任意四位十六进制数2.将8个键按实验室要求定义键值,按任意键在显示器上显示对应键值,要求显示值能够左移。

微机原理软件实验报告

微机原理软件实验报告

实验名称:汇编语言程序设计实验日期:2023年3月10日实验地点:计算机实验室实验者:张三一、实验目的1. 熟悉汇编语言的基本语法和指令系统。

2. 掌握汇编语言程序设计的基本方法。

3. 通过实验,加深对微机原理的理解。

二、实验内容本次实验主要涉及以下内容:1. 数据传送指令的应用2. 算术运算指令的应用3. 控制转移指令的应用4. 子程序设计三、实验步骤1. 编写一个简单的程序,实现以下功能:(1)将数据0x1234存入寄存器AX;(2)将数据0x5678存入寄存器BX;(3)计算AX和BX的乘积,并将结果存入寄存器DX;(4)将乘积的高16位和低16位分别存入寄存器CX和AX。

2. 编写一个程序,实现以下功能:(1)将数据0x1A2B3C4D存入内存单元[0x1000];(2)从内存单元[0x1000]开始,读取连续4个字节的数据;3. 编写一个程序,实现以下功能:(1)定义一个子程序,实现两个整数的加法运算;(2)在主程序中调用该子程序,实现两个整数的加法运算。

四、实验结果与分析1. 数据传送指令的应用(1)将数据0x1234存入寄存器AX;MOV AX, 0x1234(2)将数据0x5678存入寄存器BX;MOV BX, 0x5678(3)计算AX和BX的乘积,并将结果存入寄存器DX;MUL BX(4)将乘积的高16位和低16位分别存入寄存器CX和AX; MOV CX, DXMOV AX, DX2. 算术运算指令的应用(1)将数据0x1A2B3C4D存入内存单元[0x1000];MOV [0x1000], 0x1A2B3C4D(2)从内存单元[0x1000]开始,读取连续4个字节的数据; MOV AX, [0x1000]MOV BX, [0x1000+2]MOV CX, [0x1000+4]MOV DX, [0x1000+6]MOV AH, 0x0EINT 0x103. 控制转移指令的应用(1)定义一个子程序,实现两个整数的加法运算;ADD procedure:ADD AX, BXRET(2)在主程序中调用该子程序,实现两个整数的加法运算;MOV AX, 0x1MOV BX, 0x2CALL ADDMOV CX, AX五、实验心得通过本次实验,我深刻理解了汇编语言的基本语法和指令系统,掌握了汇编语言程序设计的基本方法。

微程序实验报告

微程序实验报告

一、实验目的1. 理解微程序设计的基本原理和方法。

2. 掌握微程序控制器的设计方法。

3. 提高对计算机组成原理和汇编语言的理解。

二、实验环境1. 操作系统:Windows 102. 开发工具:Keil uVision53. 实验平台:STM32F103C8T6三、实验内容1. 微程序控制器的设计2. 微程序指令集的设计3. 微程序的编译与仿真四、实验步骤1. 微程序控制器的设计(1)确定微程序控制器的基本结构,包括控制单元、指令寄存器、地址计数器、微指令寄存器等。

(2)设计控制单元,实现微指令译码和操作控制功能。

(3)编写微指令序列,实现所需的功能。

2. 微程序指令集的设计(1)根据实验需求,设计微程序指令集,包括指令格式、操作码和操作数。

(2)编写微指令编码表,实现指令集的编码。

3. 微程序的编译与仿真(1)编写微程序代码,实现微程序的功能。

(2)将微程序代码编译成机器代码。

(3)在仿真软件中加载编译后的机器代码,进行仿真实验。

五、实验结果与分析1. 微程序控制器设计结果根据实验需求,设计了一个具有8级微程序的控制器。

控制器包括控制单元、指令寄存器、地址计数器、微指令寄存器等模块。

控制单元根据微指令译码和操作控制信号,实现对微程序的操作。

2. 微程序指令集设计结果根据实验需求,设计了以下微程序指令集:- 立即数加载指令:将立即数加载到指定寄存器。

- 寄存器加载指令:将寄存器内容加载到指定寄存器。

- 立即数存储指令:将立即数存储到指定内存地址。

- 寄存器存储指令:将寄存器内容存储到指定内存地址。

- 立即数加法指令:将立即数与寄存器内容相加,结果存储到寄存器。

- 寄存器加法指令:将寄存器内容与另一个寄存器内容相加,结果存储到寄存器。

- 立即数减法指令:将立即数与寄存器内容相减,结果存储到寄存器。

- 寄存器减法指令:将寄存器内容与另一个寄存器内容相减,结果存储到寄存器。

3. 微程序编译与仿真结果在仿真软件中加载编译后的机器代码,进行仿真实验。

微机实验报告

微机实验报告

微机实验报告实验四:子程序设计一.实验目的1、学习子程序的定义和调用方法。

2、掌握子程序、子程序嵌套的结构。

3、掌握子程序的程序设计、编制及调试方法。

二.实验内容程序采用菜单式选择,可接收用户输入的命令(1~5),各命令如下:按1键完成字符串小写字母变大写字母用户输入一由英文大小写字母或数字0~9组成的字符串(以回车结束),程序逐个检查字符串中各字符,将原串中小写字母变成大写字母,其它字符不变,并在屏幕上显示。

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

按2键完成找最大值(二选一)1、接收用户输入的可显示字符串(以回车结束),程序将其中ASCII码值最大的字符显示出来。

2、接收用户输入若干无符号8位数(以空格或逗号为分隔符,以回车结束),程序将其中最大的数显示出来。

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

按3键完成排序(二选一)1、接收用户输入的可显示字符串,以回车结束。

程序按ASCII码值大小由大到小排序并输出显示。

2、接收用户输入若干个有符号8位数(以空格逗号为分隔符,以回车结束)。

程序将其中最大的数显示出来。

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

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

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

按5键,结束程序运行,返回系统提示符。

三.程序与流程图主程序的简略流程子程序一的简略流程图子程序二的简略流程图子程序三的简略流程图子程序4,显示时间流程图四、源程序代码DATA SEGMENTORG 9999HMENU DB 0DH,0AH,'Programed by Deng Tengfei Class Electronic Material Grade 09',0DH,0AH, ;菜单DB 'Please input 1~5 to choose service',0DH,0AH,DB '1: Convert a small letter to a big letter' ,0DH,0AH,DB '2: Seek the bigest number',0DH,0AH,DB '3: Put the character string in order' ,0DH,0AH,DB '4: Set time and check time',0DH,0AH,DB '5: End the program$'MEG0 DB ' Please choose function$' ;提示信息MEG0~MEG8MEG1 DB 'You have choose the function 1.',0DH,0AH,'Please input the character string you want to convert:$'MEG2 DB 'You have choose the function 2.',0DH,0AH,'Please input the character string:$'MEG3 DB 'You have choose the function 3.',0DH,0AH,'Please input the character string you want to sort$'MEG4 DB 'You have choose the function 4.',0DH,0AH,'Please input the time you want to set in format like:xx:xx:xx$'MEG5 DB 'The program is end$'MEG6 DB 'Sorry.you have chosen a undefined function .Please input a correct function number$' MEG7 DB 'Fail to set time$'MEG8 DB 'Press any key to do again or press the ESC key to return to the main menu$ 'FLAG DB -1 ;冒泡排序中使用的标志DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAMAIN PROC NEAR ;主程序MOV AX,DATAMOV DS,AXCIN: LEA DX,MENU ;输出提示信息MOV AH,09HINT 21HCALL ENT ;输出回车换行LEA DX,MEG0MOV AH,09HINT 21HCALL ENTMOV AH,01HINT 21HCMP AL,30H ;判断功能号JLE EORCMP AL,31HJE F1CMP AL,32HJE F2CMP AL,33HJE F3CMP AL,34HJE F4CMP AL,35HJE F5EOR: CALL ENTLEA DX,MEG6 ;输出出错信息MOV AH,09HINT 21HJMP CINF1: CALL ENT ;功能1LEA DX,MEG1MOV AH,09HINT 21HCALL ENTCALL FUN1 ;调用子程序1MOV AH,01HINT 21HCMP AL,1BHJNE F1JMP CINF2: CALL ENT ;功能2LEA DX,MEG2MOV AH,09HINT 21HCALL ENTCALL FUN2 ;调用子程序2MOV AH,01HINT 21HCMP AL,1BHJNE F2JMP CINF3: CALL ENT ;功能3LEA DX,MEG3MOV AH,09HINT 21HCALL ENTCALL FUN3 ;调用子程序3MOV AH,01HINT 21HCMP AL,1BHJNE F3JMP CINF4: CALL ENT ;功能4LEA DX,MEG4MOV AH,09HINT 21HCALL ENTCALL FUN4 ;调用子程序4MOV AH,01HINT 21HCMP AL,1BHJNE F4JMP CINF5: MOV AH,4CH ;功能5,终止程序INT 21HFUN1 PROC NEAR ;子程序1PUSH AXPUSH CXPUSH DXPUSH SIMOV AH,0AH ;字符串输入INT 21HCALL ENTMOV SI,DXINC SIMOV CL,[SI] ;设定循环次数MOV CH,0JIK: INC SIMOV AL,[SI]CMP AL,0DH ;判断字符ASCII码JE KLCMP AL,61HJB JKCMP AL,7AHJA JKSUB AL,20H ;小写转大写JK: MOV DL,AL ;输出字符MOV AH,02HINT 21HLOOP JIKCALL ENTLEA DX,MEG8MOV AH,09HINT 21HKL: POP SIPOP DXPOP CXPOP AXRETFUN1 ENDPFUN2 PROC NEAR ;子程序2PUSH AXPUSH CXPUSH DXPUSH SIMOV AH,0AHINT 21HCALL ENTMOV SI,DXINC SIMOV CL,[SI]MOV CH,0INC SIMOV AL,[SI]FH: INC SI ;循环比较CMP AL,[SI]JA FGMOV AL,[SI]FG: LOOP FHMOV DL,ALMOV AH,02HINT 21HCALL ENTLEA DX,MEG8MOV AH,09HINT 21HPOP SIPOP DXPOP CXPOP AXRETFUN2 ENDPFUN3 PROC NEAR ;子程序3 PUSH AXPUSH BXPUSH CXPUSH DXPUSH SIPUSH DIMOV AH,0AHINT 21HCALL ENTMOV SI,DXINC SIMOV BL,[SI]MOV BH,0INC SIMOV DI,SILP1: CMP FLAG,0 ;根据标志判断JE LP3DEC BX ;检查循环次数CMP BX,0JE LP3MOV CX,BXMOV SI,DIMOV FLAG,0LP2: MOV AL,[SI] ;前后比较CMP AL,[SI+1]JLE NEXTXCHG AL,[SI+1]MOV [SI],ALMOV FLAG,0FFHNEXT:INC SILOOP LP2 ;内循环继续JMP LP1 ;退出内循环LP3: DEC DI ;重新设定循环次数MOV CL,[DI]MOV CH,0LP4: INC DI ;循环输出字符MOV DL,[DI]MOV AH,02HINT 21HLOOP LP4CALL ENTLEA DX,MEG8MOV AH,09HINT 21HPOP DIPOP SIPOP DXPOP CXPOP BXPOP AXRETFUN3 ENDPFUN4 PROC NEAR ;子程序4PUSH AXPUSH BXPUSH CXPUSH DXCALL CROT ;调用子程序CROTMOV CH,AL ;装入入口参数MOV AH,01HINT 21HCALL CROTMOV CL,ALMOV AH,01HINT 21HCALL CROTMOV DH,ALMOV DL,0CALL ENTMOV AH,2DH ;调DOS中断置时间INT 21HCMP AL,0FFHJE FALPRT: PUSH DX ;输出时间MOV AL,CHMOV AH,0MOV BL,0AHDIV BLADD AL,30HADD AH,30HMOV DL,ALMOV DH,AHMOV AH,02HINT 21HMOV DL,DHINT 21HMOV DL,3AHINT 21HMOV AL,CLMOV AH,0DIV BLADD AL,30HADD AH,30HMOV DL,ALMOV DH,AHMOV AH,02HINT 21HMOV DL,DHINT 21HMOV DL,3AHINT 21HPOP DXMOV AL,DHMOV AH,0DIV BLADD AL,30HADD AH,30HMOV DL,ALMOV DH,AHMOV AH,02HINT 21HMOV DL,DHINT 21HMOV AH,2CH ;调DOS中断取时间INT 21HMOV AL,0AH ;写入OCW3OUT 20H,ALNOP ;延时NOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPIN AL,20H ;读取IRRAND AL,02HJNE MKCALL COV ;调子程序COVJMP PRTFAL: LEA DX,MEG7MOV AH,09HINT 21HMK: CALL ENTMOV AH,01HINT 21HLEA DX,MEG8MOV AH,09HINT 21HPOP DXPOP CXPOP BXPOP AXRETFUN4 ENDPCROT PROC NEAR ;子程序CROT,完成ASCII码转换成两位十进制数PUSH BXPUSH CXPUSH DXMOV BL,0 ;初始化BL和BHMOV BH,0AHMOV DX,02H ;设循环次数GET: MOV AH,01HINT 21HSUB AL,30HCMP AL,0JB FALCMP AL,09HJA FALXCHG AL,BLMUL BHADD AL,BLXCHG AL,BLDEC DXCMP DX,0JNE GETMOV AL,BLPOP DXPOP CXPOP BXRETCROT ENDPCOV PROC ;格式控制,使光标回到上个制表位PUSH AXPUSH CXPUSH DXMOV CX,08HMOV AH,02HMOV DL,08HREC: INT 21HLOOP RECPOP DXPOP CXPOP AXRETCOV ENDPENT PROC ;格式控制,输出回车换行MOV DL,0DHMOV AH,02HINT 21HMOV DL,0AHMOV AH,02HINT 21HRETENT ENDPMAIN ENDPCODE ENDSEND MAI五、程序调试及运行结果:主菜单1、功能一(小写字母转大写字母):2、功能二(找出ASCII码最大的字符):3、功能三(按ASCII码把字符从大到小排列):4、功能四(显示跳动的时间):5、功能五(退出程序):6、错误的输入:六、实验心得子程序可以作为一个相对独立的部分单独设计,但要注意在进入子程序和退出子程序时保护现场和恢复现场。

微机原理程序设计练习实验报告

微机原理程序设计练习实验报告

程序设计练习实验报告一、实验目的1.熟练掌握汇编语言程序设计的方法及上机步骤。

2.掌握算术运算中,十进制数调整指令的应用。

3.掌握子程序的设计方法。

4.掌握DOS功能的调用方法。

二、实验仪器586微机 1台三、实验内容有一个首地址为A的N字数组,请编程序使该数组中的数按从大到小的次序排列。

编程要求及提示:[1] 参加排序的数据及个数由学生自己定义。

[2] 要将排序前的数组和排序后的数组在屏幕上显示出来。

[3] 实验步骤同内容一。

四、实验源程序N=20STACK SEGMENT STACK'STACK'DW 100H DUP(?)TOP LABEL WORDSTACK ENDSDATA SEGMENTDATABUF DW NDB N DUP(?)ORIGINAL DB 13,10,13,10,':$'ORDERED DB 13,10,13,10,':$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START:MOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,STACKMOV SS,AXLEA SP,TOP;随机数据MOV CX,DATABUFLEA SI,DATABUF+2MOV BL,18MOV AL,13L:MOV [SI],ALADD AL,BLLOOP LLEA DX,ORIGINALMOV AH,9INT 21HCALL DISPAL;下面给数据排序程序MOV CX,DATABUFDEC CXLEA SI,DATABUF+2ADD SI,CX ;SI指向数据区末地址L1:PUSH CXPUSH SIL2:MOV AL,[SI]CMP AL,[SI-1]JBE NOXCHGXCHG AL,[SI-1]MOV [SI],ALDEC SILOOP L2POP SIPOP CXLOOP L1LEA DX,ORDEREDMOV AH,9INT 21HCALL DISPAL EXITPROC:MOV AH,4CH ;结束程序 MOV AH,1INT 21HDISPAL PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DILEA DI,DATABUF+2MOV CX,20DISPAL2:MOV AL,[DI]SHR AL,1SHR AL,1SHR AL,1SHR AL,1CALL CHANG;----------------------------------MOV AH,2MOV DL,ALINT 21HMOV AL,[DI]AND AL,0FHCALL CHANG;-------------------------------------MOV AH,2MOV DL,ALINT 21HMOV AH,2MOV DL,20HINT 21H ;为了让结果看得清楚,让显示的数用空格空开INC DILOOP DISPAL2POP DIPOP DXPOP CXPOP BXPOP AXRETDISPAL ENDP CHANG PROC NEAR CMP AL,10JNGE CHANG1 ADD AL,7 CHANG1:ADD AL,30HRETCHANG ENDP CODE ENDSEND START实验结果五、问题讨论1.在以十进制数形式参加运算的程序设计中,应注意那些问题。

微型计算机技术实验报告

微型计算机技术实验报告

微型计算机技术实验报告实验名称:微型计算机技术实验实验日期:2024年X月X日实验目的:1.了解微型计算机的基本组成和工作原理;2.掌握微型计算机的硬件连接与配置方法;3.学习使用微型计算机进行简单程序编写和调试。

实验器材:1.微型计算机主机2.显示器3.键盘4.鼠标5.电源线6.数据线实验原理:实验步骤:1.将微型计算机主机连接到电源,并将显示器、键盘和鼠标连接到主机;2.打开电源,观察显示器上是否出现相关信息,确认主机正常启动;3.通过键盘和鼠标输入相关指令,进入操作系统界面;5.打开编译器,将源文件编译成可执行文件;6.执行可执行文件,观察程序运行的结果。

实验结果和分析:通过以上步骤,我们成功启动并运行了微型计算机。

首先,我们了解到微型计算机的基本组成和工作原理。

微型计算机由主机、显示器、键盘和鼠标组成,主机通过电源供电,显示器用于显示图像和文字,键盘和鼠标用于输入操作指令。

微型计算机的工作原理是通过CPU读取内存中的指令,然后进行解码和执行,最后将结果存储回内存或发送到外设。

关键词:微型计算机,CPU,内存,外设,编写,调试实验结论:通过本次实验,我们了解了微型计算机的基本组成和工作原理,并学习了使用微型计算机进行简单程序编写和调试的方法。

通过实践操作,我们对微型计算机的使用有了更加深入的了解。

这对于我们深入学习计算机原理和继续进行更复杂的计算机实验具有重要意义。

译文如下:Experiment Date: Xth Month, 2024Objective:Equipment:2. Monitor3. Keyboard4. Mouse5. Power cord6. Data cablePrinciple:Procedure:2. Turn on the power and observe whether relevant information appears on the monitor to confirm that the host starts up normally.4. Use a text editor to write a simple program and save itin source file format.6. Execute the executable file and observe the result of the program execution.Results and Analysis:Conclusion:。

微型计算机实验一实验报告

微型计算机实验一实验报告

微型计算机实验一实验报告实验一:微型计算机的基本操作及应用探究一、实验目的1.了解微型计算机的基本组成和工作原理;2.学习使用微型计算机进行基本操作;3.探究微型计算机在实际应用中的作用。

二、实验器材和仪器1.微型计算机实验箱;2.微型计算机主机;3.显示器;4.键盘。

三、实验内容1.将微型计算机主机与显示器、键盘连接;2.打开微型计算机并进行基本操作;3.使用微型计算机进行基本应用。

四、实验步骤1.将微型计算机主机与显示器、键盘连接,确保连接稳固;2.打开微型计算机主机,等待系统启动完毕;3.使用键盘进行基本操作,包括输入字符、回车等;4.运行预装的基本应用软件,并进行相应操作。

五、实验结果和分析在本次实验中,通过连接主机与显示器、键盘,我们成功打开了微型计算机并进行了基本操作。

使用键盘输入字符并通过回车键确认后,我们可以在显示器上看到相应的结果。

这表明微型计算机能够正确地接收和处理我们输入的指令,并将结果显示出来。

通过运行预装的基本应用软件,我们还可以进行更加复杂的操作,如文字处理、图形绘制等。

本次实验中,我们还了解到微型计算机的基本组成和工作原理。

微型计算机由主机、显示器、键盘组成。

在主机中,CPU是主要的控制中心,负责接收和处理指令;内存存储了计算机运行时所需的数据和程序;硬盘则保存了大容量的数据。

显示器负责将计算机处理的结果显示出来,键盘则用于输入指令和数据。

微型计算机的应用领域十分广泛。

它可以用于文字处理、数据处理、图形绘制等多个方面。

在今天的社会中,无论是企事业单位还是个人用户,几乎都需要使用微型计算机进行日常工作和生活。

微型计算机的快速计算和大容量存储能力,使得数据处理和信息管理变得更加便捷和高效。

六、实验总结通过本次实验,我们学习了微型计算机的基本操作和应用,并了解了微型计算机的基本组成和工作原理。

微型计算机在今天的社会中扮演着重要的角色,其广泛的应用范围使得人们的工作和生活更加便捷和高效。

微机实验报告

微机实验报告

目录一、开发环境二、设计目的和意义三、设计思想、原理四、系统设计原理框图五、程序流程图六、程序源代码七、测试结果八、心得体会九、参考文献一、开发环境Pc机一台、WindowsXP系统、微机实验箱.二、设计目的和意义1、掌握 A/D 转换与单片机的接口方法。

2、了解 A/D 芯片 ADC0809 转换性能及编程。

3、通过实验了解单片机如何进行数据采集。

4、了解数码管动态显示的原理。

5、了解用总线方式控制数码管显示三、设计要求、原理利用实验板上的 ADC0809 做 A/D 转换器,实验板上的电位器提供模拟量输入,编制程序,将模拟量转换成二进制数字量,用 8255 的 PA 口输出到数码管的各个段位进行显示,然后检测输出的电压变化。

A/D 转换器大致有三类:一是双积分 A/D 转换器,优点是精度高,抗干扰性好;价格便宜,但速度慢;二是逐次逼近 A/D 转换器,精度,速度,价格适中;三是并行 A/D 转换器,速度快,价格也昂贵。

实验用的 ADC0809 属第二类,是八位 A/D 转换器。

每采集一次一般需100us。

本程序是用延时查询方式读入 A/D 转换结果,也可以用中断方式读入结果,在中断方式下,A/D 转换结束后会自动产生 EOC 信号,将其与 CPU 的外部中断相接,还可以试试编程用中断方式读回 A/D 结果.本实验仪提供了 6 位 8 段码 LED 显示电路,只要按地址输出相应数据,就可以实现对显示器的控制。

本实验仪中 8 位段码输出地址为 0X004H,位码输出地址为 0X002H。

此处 X 是由 KEY/LED CS 决定,参见地址译码。

例如,将 KEY/LED CS 接到 CS0 上,则段码地址为 08004H,位码地址为 08002H。

七段数码管的字型代码表如下表:显示字形01234567 g f e d c0 1 1 1 10 0 0 0 11 0 1 1 01 0 0 1 11 1 0 0 11 1 0 1 11 1 1 1 10 0 0 0 1b a 段码1 1 3fh1 0 06h1 1 5bh1 1 4fh1 0 66h0 1 6dh0 1 7dh1 1 07h8 1 1 1 1 1 1 1 7fh9 1 1 0 1 1 1 1 6fhA 1 1 1 0 1 1 1 77h b 1 1 1 1 1 0 0 7ch C 0 1 1 1 0 0 1 39h d 1 0 1 1 1 1 0 5ehE 1 1 1 1 0 0 1 79hF 1 1 1 0 0 0 1 71h四、系统设计原理框图1.相关知识由于微机只能处理数字化的信息,而在实际应用中被控对象常常是连续变换的物理量,因此,微机用于测控系统时需要有能吧模拟信号转换成数字信号的接口,以便于能对被控制对象进行处理和控制。

微机原理程序设计综合练习 实验报告

微机原理程序设计综合练习   实验报告

程序设计综合练习实验报告13020xx002xx一、实验目的xxxx1.增强和提高汇编语言程序设计的能力,掌握模块化程序设计的方法.2.熟练掌握DOS常用功能的调用方法.二、实验仪器586微机一台三、实验内容编写如下程序,并在机器上调试成功。

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

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

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

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

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

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

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

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

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

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

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

四、实验程序及流程1.源程序STACK SEGMENT STACKDB 256 DUP(?)TOP LABEL WORDSTACK ENDSDATA SEGMENTTABLE DW G1,G2,G3,G4STRING1 DB'1.Change small into capital;', 0DH, 0AH, '$'STRING2 DB'2.Find the maximum of string;',0DH,0AH,'$'STRING3 DB'3.Sort for datas;',0DH,0AH,'$'STRING4 DB'4.EXIT;',0DH,0AH,'$'IN_STR DB'Input the string;',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 string : ', 0DH, 0AH, '$'OUT_NUM DB 'Sorted numbers : ', 0DH, 0AH, '$'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 (?)DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA, SS:STACK START: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, '4'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 SORTNUM MOV AH, 8INT 21HCMP AL, 1BHJZ MAINJMP G3G4: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 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, 9 LEA 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 AH, 2MOV 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 AL, 3MOV 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 ; 输入数据组字符串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 ; 数据组排序MOV AH, 2MOV BH, 0 ; 页号MOV DL, 5 ; 列号MOV DH, 9 ; 行号INT 10H ; 提示信息光标位置设置MOV AH, 9LEA DX, HINTSTRINT 21H ; 输出提示信息RETSORTNUM ENDPMPSORT PROC FAR ; 数据组排序;下面给数据排序程序MOV CX,NUMBUFCBWDEC CXLEA SI,NUMBUFADD SI,CX;SI指向数据区末地址L1:PUSH CXPUSH SIL2:MOV AL,[SI]CMP AL,[SI-1]JBE NOXCHGXCHG AL,[SI-1]MOV [SI],ALNOXCHG:DEC SILOOP L2POP SIPOP CXLOOP L1CALL DISPALEXITPROC:MOV AH,4CH ;结束程序MOV AH,1INT 21HDISPAL PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DILEA DI,NUMBUFMOV CX,20DISPAL2:MOV AL,[DI] SHR AL,1SHR AL,1SHR AL,1SHR AL,1CALL CHANG;----------------------------------MOV AH,2MOV DL,ALINT 21HMOV AL,[DI]AND AL,0FHCALL CHANG;-------------------------------------MOV AH,2MOV DL,ALINT 21HMOV AH,2MOV DL,20HINT 21H ;为了让结果看得清楚,让显示的数用空格空开INC DILOOP DISPAL2POP DIPOP DXPOP CXPOP BXPOP AXRETDISPAL ENDPCHANG PROC NEARCMP AL,10JNGE CHANG1ADD AL,7CHANG1:ADD AL,30HRETCHANG ENDPRETMPSORT ENDPCODE ENDSEND START2.流程图五、实验结果菜单界面各子程序返回程序。

微机循环程序设计实验报告

微机循环程序设计实验报告

微机循环程序设计实验报告微机循环程序设计实验报告引言在当今数字化时代,计算机技术的发展已经成为各个领域的核心。

作为计算机科学的基础,循环程序设计在软件开发中扮演着重要的角色。

本实验旨在通过微机循环程序设计,探索程序的优化和性能提升。

实验目的1. 了解循环程序设计的基本概念和原理。

2. 熟悉微机循环程序设计的编写方法和技巧。

3. 掌握循环程序的性能优化和调试方法。

4. 分析循环程序设计在实际应用中的价值和局限性。

实验过程1. 实验环境搭建在开始实验前,我们需要搭建一个合适的实验环境。

选择一款适合的集成开发环境(IDE),并安装相应的编译器。

在本实验中,我们选择了Visual Studio作为开发环境,C语言作为编程语言。

2. 编写简单的循环程序在掌握基本的编程语法后,我们开始编写简单的循环程序。

通过使用for循环,我们可以实现对某个任务的重复执行。

这样的程序通常用于处理大量数据或者进行复杂的计算。

通过编写简单的循环程序,我们可以更好地理解循环程序设计的基本原理。

3. 优化循环程序性能在编写循环程序的过程中,我们需要考虑程序的性能。

通过合理地选择循环结构和优化算法,我们可以提高程序的执行效率。

例如,我们可以使用并行化技术来加速程序的运行,或者使用循环展开来减少循环的次数。

通过不断地优化,我们可以使程序更加高效。

4. 调试循环程序循环程序设计中常常会出现一些错误,例如死循环、数组越界等。

为了找出并解决这些错误,我们需要使用调试工具。

通过逐步执行程序,并观察变量的值和程序的执行流程,我们可以找到错误的原因并进行修复。

实验结果与分析通过实验,我们成功编写了多个循环程序,并对其进行了性能优化和调试。

在程序执行过程中,我们发现了一些问题,例如循环次数过多导致程序执行时间过长,或者循环条件设置不当导致程序无法正常结束。

通过分析这些问题,我们可以得出以下结论:1. 循环程序设计是一种高效的编程方法,可以大大提高程序的执行效率。

微程序设计实验报告

微程序设计实验报告

《计算机组成原理》实验报告学院:计算机学院专业:班级学号:学生姓名:实验日期:2010.12.14指导老师:\成绩评定:五邑大学信息学院计算机组成原理实验室实验五微程序设计实验一、实验目的:深入掌握微程序控制器的工作原理,学会设计简单的微程序。

二、预习要求:1.复习微程序控制器工作原理;2.复习计算机微程序的有关知识。

三、实验设备:EL-JY-II型计算机组成原理实验系统一台,连接线若干。

四、微程序的设计:1.微指令格式设计微指令编码格式的主要原则是使微指令字短、能表示可并行操作的微命令多、微程序编写方便。

微指令的最基本成份是控制场,其次是下地址场。

控制场反映了可以同时执行的微操作,下地址场指明下一条要执行的微指令在控存的地址。

微指令的编码格式通常指控制场的编码格式,以下几种编码格式较普遍。

1)最短编码格式这是最简单的垂直编码格式,其特点是每条微指令只定义一个微操作命令。

采用此格式的微指令字短、容易编写、规整直观,但微程序长度长,访问控存取微指令次数增多从而使指令执行速度慢。

2)全水平编码格式这种格式又称直接编码法,其特点是控制场每一位直接表示一种微操作命令。

若控制场长n位,则至多可表示n个不同的微操作命令。

采用此格式的微指令字长,但可实现多个允许的微操作并行执行,微程序长度短,指令执行速度快。

3)分段编码格式是将控制场分成几段。

若某段长i位,则经译码,该段可表示2i个互斥的即不能同时有效的微操作命令。

采用这种格式的微指令长度较短,而可表示的微操作命令较多,但需译码器。

2.微程序顺序控制方式的设计微程序顺序控制方式指在一条指令对应的微程序执行过程中,下一条微指令地址的确定方法,又叫后继地址生成方式。

下面是常见的两种。

1)计数增量方式这种方式的特点是微程序控制部件中的微地址中的微地址产生线路主要是微地址计数器MPC。

MPC 的初值由微程序首址形成线路根据指令操作码编码形成。

在微程序执行过程中该计数器增量计数,产生下一条微指令地址。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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。

相关文档
最新文档