广工微机课程设计修改有注释四位16进制加法运算三位16进制乘法运算.docx
- 文档编号:4778182
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:35
- 大小:126.33KB
广工微机课程设计修改有注释四位16进制加法运算三位16进制乘法运算.docx
《广工微机课程设计修改有注释四位16进制加法运算三位16进制乘法运算.docx》由会员分享,可在线阅读,更多相关《广工微机课程设计修改有注释四位16进制加法运算三位16进制乘法运算.docx(35页珍藏版)》请在冰豆网上搜索。
广工微机课程设计修改有注释四位16进制加法运算三位16进制乘法运算
编号:
23
课程名称:
微机原理及应用
题目名称:
微机原理及应用课程设计
学生学院:
自动化学院
专业班级:
电气
(2)
学号:
3111001243
学生姓名:
刘
指导教师:
李传芳
2013年10月16
广东工业大学课程设计任务书
题目名称
计算器
(2)
学生学院
自动化学院
专业班级
电气
(2)
姓名
刘
学号
31110012
一、课程设计的内容
1.在显示器上显示任意四位十六进制数
2.将8个键按实验室要求定义键值,按任意键在显示器上显示对应键值,要求显示值能够左移。
3.实现:
A)定义键盘按键,13个为数字键0、1、2、3、4、5、6、7、9、A、B、D、E个功能键:
加号+,乘号×,等号=;
B)可进行四位16进制加法运算;
C)可进行三位16进制乘法运算。
二、课程设计的要求与数据
(1)巩固和加深对《微机原理》课程内容的认识和理解,提高应用水平。
(2)掌握汇编语言程序的编制方法。
(3)熟悉键盘控制和七段数码管的使用
三、课程设计应完成的工作
完成线路的接线,编写三个程序并输入电脑中,把程序加载到W86学习机当中,运行程序验证结果。
四、课程设计进程安排
序号
设计各阶段内容
地点
起止日期
1
了解键盘的工作原理,编写显示程序
微机实验室
10月14日
2
定义键盘数字和显示数字
微机实验室
10月15日
3
设计十六进制减法和十进制乘法的计算器
微机实验室
10月16日
五、应收集的资料及主要参考文献
1许立锌等编.微型计算机原理及应用.北京:
机械工业出版社,2003
2.许立梓等编《微型计算机原理及应用》
--习题解答、实验指导及课程设计.
北京:
机械工业出版社,2003
发出任务书日期:
2013年10月14日指导教师签名:
计划完成日期:
2013年10月16日基层教学单位责任人签章:
主管院长签章:
程序设计流程图及源程序
题目一:
在数码管上显示E、F、D、1、2、3六个数字
流程图:
源程序:
STACKSEGMENTSTACK
DW64DUP(?
)
STACKENDS
DATASEGMENT
VA1DB0EH,0FH,0DH,01H,02H,03H
VA2DB07CH,0BCH,0DCH,0ECH,0F4H,0F8H
VA3DB0FCH,060H,0DAH,0F2H,066H,0B6H,0BEH,0E0H,
DB0FEH,0E6H,0EEH,03EH,09CH,07AH,09EH,08EH
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVDX,0606H
MOVAL,80H
OUTDX,AL;8255A初始化
A1:
MOVSI,OFFSETVA1
MOVDI,OFFSETVA2
MOVCX,0006H
A2:
MOVDX,0600H
MOVAL,[DI]
OUTDX,AL
MOVDX,0604H
MOVBX,OFFSETVA3
MOVAL,[SI]
XLATVA3;查表得出对应数字的七段数码管段码
OUTDX,AL
CALLTIME
INCSI
INCDI
LOOPA2
JMPA1
TIME:
PUSHCX;延时程序
MOVCX,0010H
TIME1:
MOVAX,009EH
TIME2:
DECAX
JNZTIME2
LOOPTIME1
POPCX
RET
CODEENDS
ENDSTART
题目二:
将试验箱下两行8个键按下表定义键值,按任意键在显示器上显示对应键值,要求显示值能左移。
3
2
F
D
B
C
9
7
程序框图:
源程序:
STACKSEGMENTSTACK
DW64DUP(?
)
STACKENDS
DATASEGMENT
VA1DB07CH,0BCH,0DCH,0ECH,0F4H,0F8H
VA2DB0FCH,0FCH,0FCH,0FCH,0FCH,0FCH
VA3DB00H,00H,00H,00H,00H,00H
VA4DB00H,00H,00H,00H,00H,00H
TABLE0DB0FCH,060H,0DAH,0F2H,066H,0B6H,0BEH,0E0H,
DB0FEH,0E6H,0EEH,03EH,09CH,07AH,09EH,08EH
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVDX,0606H
MOVAL,82H
OUTDX,AL;8255A初始化
MOVBX,0000H
;---------键盘测试------------
STT:
MOVAL,00H
MOVDX,0600H
OUTDX,AL
NEXT:
MOVDX,0602H
INAL,DX
ANDAL,0F0H
CMPAL,0F0H
JNAKEYABC
CALLDISP
JMPSTT
KEYABC:
CALLTIME
MOVDX,0602H
INAL,DX
ANDAL,0F0H
CMPAL,0F0H
JNZKEY
JMPSTT
;----------键盘扫描程序--------
KEY:
MOVDX,0600H
MOVAL,0F8H
OUTDX,AL;键盘扫描第一列
MOVDX,0602H
INAL,DX;8255芯片B口输入数据
TESTAL,080H;键盘扫描第一列,第三行(PB07)
JNZKEY_3;按键B没被按下,跳到KEY_3检测按键3是否被按下
CALLKEYB;检测到按键B被按下,调用按键B处理子程序
JMPSTTK;放键测试,等待按键者松手,再进行下一步
KEY_3:
TESTAL,040H;键盘扫描第一列,第二行(PB06)
JNZKEY_C;按键3没被按下,跳到KEY_C检测按键C是否被按下
CALLKEY3;检测到按键3被按下,调用按键3处理子程序
JMPSTTK;放键测试,等待按键者松手,再进行下一步
;-----------------------------------
KEY_C:
MOVDX,0600H
MOVAL,0F4H
OUTDX,AL;键盘扫描第二列
MOVDX,0602H
INAL,DX;8255芯片B口输入数据
TESTAL,080H;键盘扫描第二列,第三行(PB07)
JNZKEY_2;按键C没被按下,跳到KEY_2检测按键2是否被按下
CALLKEYC;检测到按键C被按下,调用按键C处理子程序
JMPSTTK;放键测试,等待按键者松手,再进行下一步
KEY_2:
TESTAL,040H;键盘扫描第二列,第四行(PB06)
JNZKEY_9;按键2没被按下,跳到KEY_9检测按键9是否被按下
CALLKEY2;检测到按键2被按下,调用按键2处理子程序
JMPSTTK;放键测试,等待按键者松手,再进行下一步
;-----------------------------------
KEY_9:
MOVDX,0600H
MOVAL,0ECH
OUTDX,AL;键盘扫描第三列
MOVDX,0602H
INAL,DX;8255芯片B口输入数据
TESTAL,080H;键盘扫描第三列,第三行(PB07)
JNZKEY_F;按键9没被按下,跳到KEY_F检测按键F是否被按下
CALLKEY9;检测到按键9被按下,调用按键9处理子程序
JMPSTTK;放键测试,等待按键者松手,再进行下一步
KEY_F:
TESTAL,040H;键盘扫描第三列,第四行(PB06)
JNZKEY_7;按键F没被按下,跳到KEY_7检测按键7是否被按下
CALLKEYF;检测到按键F被按下,调用按键F处理子程序
JMPSTTK;放键测试,等待按键者松手,再进行下一步
;-----------------------------------
KEY_7:
MOVDX,0600H
MOVAL,0DCH
OUTDX,AL;键盘扫描第四列
MOVDX,0602H
INAL,DX;8255芯片B口输入数据
TESTAL,080H;键盘扫描第四列,第三行(PB07)
JNZKEY_D;按键7没被按下,跳到KEY_F检测按键F是否被按下
CALLKEY7;检测到按键7被按下,调用按键7处理子程序
JMPSTTK;放键测试,等待按键者松手,再进行下一步
KEY_D:
TESTAL,040H;键盘扫描第四列,第四行(PB06)
JNZKEY_01;没有按键被按下,跳到KEY_01
CALLKEYD;检测到按键D被按下,调用按键D处理子程序
JMPSTTK;放键测试,等待按键者松手,再进行下一步
KEY_01:
JMPSTTK
;--------------按键3处理子程序-----------
KEY3:
CALLLP1;字节前移
MOVAL,03H
MOV[DI+5],AL
PUSHBX;保护BX的值不被改变
MOVBX,OFFSETTABLE0
XLATTABLE0;查表得出要显示数字的七段数码管段码
MOV[SI+5],AL
CALLDISP
POPBX;调用显示程序
RET;返回
;--------------按键2处理子程序-----------
KEY2:
CALLLP1;字节前移
MOVAL,02H
MOV[DI+5],AL
PUSHBX;保护BX的值不被改变
MOVBX,OFFSETTABLE0
XLATTABLE0;查表得出要显示数字的七段数码管段码
MOV[SI+5],AL
CALLDISP
POPBX;调用显示程序
RET;返回
;--------------按键7处理子程序-----------
KEY7:
CALLLP1;字节前移
MOVAL,07H
MOV[DI+5],AL
PUSHBX;保护BX的值不被改变
MOVBX,OFFSETTABLE0
XLATTABLE0;查表得出要显示数字的七段数码管段码
MOV[SI+5],AL
CALLDISP
POPBX;调用显示程序
RET;返回
;--------------按键9处理子程序-----------
KEY9:
CALLLP1;字节前移
MOVAL,09H
MOV[DI+5],AL
PUSHBX;保护BX的值不被改变
MOVBX,OFFSETTABLE0
XLATTABLE0;查表得出要显示数字的七段数码管段码
MOV[SI+5],AL
CALLDISP
POPBX;调用显示程序
RET;返回
;--------------按键B处理子程序-----------
KEYB:
CALLLP1;字节前移
MOVAL,0BH
MOV[DI+5],AL
PUSHBX;保护BX的值不被改变
MOVBX,OFFSETTABLE0
XLATTABLE0;查表得出要显示数字的七段数码管段码
MOV[SI+5],AL
CALLDISP
POPBX;调用显示程序
RET;返回
;--------------按键C处理子程序-----------
KEYC:
CALLLP1;字节前移
MOVAL,0CH
MOV[DI+5],AL
PUSHBX;保护BX的值不被改变
MOVBX,OFFSETTABLE0
XLATTABLE0;查表得出要显示数字的七段数码管段码
MOV[SI+5],AL
CALLDISP
POPBX;调用显示程序
RET;返回
;--------------按键F处理子程序-----------
KEYF:
CALLLP1;字节前移
MOVAL,0FH
MOV[DI+5],AL
PUSHBX;保护BX的值不被改变
MOVBX,OFFSETTABLE0
XLATTABLE0;查表得出要显示数字的七段数码管段码
MOV[SI+5],AL
CALLDISP
POPBX;调用显示程序
RET;返回
;--------------按键D处理子程序-----------
KEYD:
CALLLP1;字节前移
MOVAL,0DH
MOV[DI+5],AL
PUSHBX;保护BX的值不被改变
MOVBX,OFFSETTABLE0
XLATTABLE0;查表得出要显示数字的七段数码管段码
MOV[SI+5],AL
CALLDISP
POPBX;调用显示程序
RET;返回
;-----------------显示程序-------------------
DISP:
MOVSI,OFFSETVA1
MOVDI,OFFSETVA2
MOVDL,[DI+5]
CMPDL,0FCH
JNZDIR5
MOVDL,[DI+4]
CMPDL,OFCH
JNZDIR4
MOVDL,[DI+3]
CMPDL,OFCH
JNZDIR3
MOVDL,[DI+2]
CMPDL,OFCH
JNZDIR2
MOVDL,[DI+1]
CMPDL,OFCH
JNZDIR1
JNZDIR0
DIR5:
MOVCX,0006H
JMPDIR
DIR4:
MOVCX,0005H
JMPDIR
DIR3:
MOVCX,0004H
JMPDIR
DIR2:
MOVCX,0003H
JMPDIR
DIR1:
MOVCX,0002H
JMPDIR
DIR0:
MOVCX,0001H
DIR:
MOVAL,[SI]
MOVDX,0602H
OUTDX,AL
MOVAL,[DI]
MOVDX,0604H
OUTDX,AL
CALLTIME
INCSI
INCDI
LOOPDIR
RET
;-----------数据移位保存子程序-------------
LP1:
MOVCX,0005H
MOVSI,OFFSETVAR2
MOVDI,OFFSETVAR3
LP2:
MOVAL,[SI+4]
MOV[SI+5],AL
MOVAL,[DI+4]
MOV[DI+5],AL
DECSI
DECDI
LOOPLP2
RET
;-------------放键测试程序---------------
STTK:
CALLDISP
MOVAL,00H
MOVDX,0600H
OUTDX,AL
MOVDX,0602H
INAL,DX
ANDAL,0C0H
CMPAL,0C0H
JNZSTTK
JMPSTT
;---------------延时子程序------------------
TIME:
PUSHCX
MOVCX,0010H
TIME1:
MOVAX,009EH
TIME2:
DECAX
JNZTIME2
LOOPTIME1
POPCX
RET
CODEENDS
ENDSTART
题目三:
设置按键值,以实现如下功能:
A)定义键盘按键,13个为数字键0~E,3个功能键:
乘号X,加号+,等号=;
B)可进行四位16进制加法运算;
C)可进行三位16进制乘法运算。
流程框图:
源程序:
STACKSEGMENTSTACK
DW64DUP(?
)
STACKENDS
DATASEGMENT
VA1DB07CH,0BCH,0DCH,0ECH,0F4H,0F8H
VA2DB0FCH,0FCH,0FCH,0FCH,0FCH,0FCH
VA3DB00H,00H,00H,00H,00H,00H
VA4DB00H,00H,00H,00H,00H,00H
TABLE0DB0FCH,060H,0DAH,0F2H,066H,0B6H,0BEH,0E0H,
DB0FEH,0E6H,0EEH,03EH,09CH,07AH,09EH,08EH
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVDX,0606H
MOVAL,82H
OUTDX,AL;8255A初始化
MOVBX,0000H
;---------键盘测试------------
STT:
MOVAL,00H
MOVDX,0600H
OUTDX,AL
NEXT:
MOVDX,0602H
INAL,DX
ANDAL,0F0H
CMPAL,0F0H
JNAKEYABC
CALLDISP
JMPSTT
KEYABC:
CALLTIME;延时去抖动
MOVDX,0602H
INAL,DX
ANDAL,0F0H
CMPAL,0F0H
JNZKEY
JMPSTT
;----------键盘第一列扫描程序--------
KEY:
MOVDX,0600H
MOVAL,0F8H
OUTDX,AL;键盘扫描第一列
MOVDX,0602H
INAL,DX;8255芯片B口输入数据
TESTAL,080H;键盘扫描第一列,第四行(PB07)
JNZKEY_JIA;按键A没按下,跳到KEY_JIA检测按键+是否被按下
CALLKEYA;检测到按键A被按下,调用按键A处理子程序
JMPSTTK;放键测试,等待按键者松手,再进行下一步
KEY_JIA:
TESTAL,040H;键盘扫描第一列,第三行(PB06)
JNZKEY_4;按键+没被按下,跳到KEY_4检测按键4是否被按下
CALLKEYJIA;检测到按键+被按下,调用按键+处理子程序
JMPSTTK;放键测试,等待按键者松手,再进行下一步
KEY_4:
TESTAL,020H;键盘扫描第一列,第二行(PB05)
JNZKEY_0;按键4没被按下,跳到KEY_0检测按键0是否被按下
CALLKEY4;检测到按键4被按下,调用按键4处理子程序
JMPSTTK;放键测试,等待按键者松手,再进行下一步
KEY_0:
TESTAL,010H;键盘扫描第一列,第一行(PB04)
JNZKEY_B;按键0没被按下,跳到KEY_B检测按键B是否被按下
CALLKEY0;检测到按键0被按下,调用按键0处理子程序
JMPSTTK;放键测试,等待按键者松手,再进行下一步
;----------键盘第二列扫描程序--------
KEY_B:
MOVDX,0600H
MOVAL,0F4H
OUTDX,AL;键盘扫描第二列
MOVDX,0602H
INAL,DX;8255芯片B口输入数据
TESTAL,080H;键盘扫描第二列,第四行(PB07)
JNZKEY_CHENG;按键B没被按下,跳到KEY_CHENG检测按键*是否被按下
CALLKEYB;检测到按键B被按下,调用按键B处理子程序
JMPSTTK;放键测试,等待按键者松手,再进行下一步
KEY_CHENG:
TESTAL,040H;键盘扫描第二列,第三行(PB06)
JNZKEY_5;按键*没被按下,跳到KEY_5检测按键5是否被按下
CALLKEYCHENG;检测到按键*被按下,调用按键*处理子程序
JMPSTTK;放键测试,等待按键者松手,再进行下一步
KEY_5:
TESTAL,020H;键盘扫描第二列,第二行(PB05)
JNZKEY_1;按键5没被按下,跳到KEY_1检测按键1是否被按下
CALLKEY5;检测到按键5被按下,调用按键5处理子程序
JMPSTTK;放键测试,等待按键者松手,再进行下一步
KEY_1:
TESTAL,010H;键盘扫描第二列,第一行(PB04)
JNZKEY_D;按键1没被按下,跳到KEY_D检测按键D是否被按下
CALLKEY1;检测到按键1被按下,调用按键1处理子程序
JMPSTTK;放键测试,等待按键者松手,再进行下一步
;----------键盘第三列扫描程序--------
KEY_D:
MOVDX,0600H
MOVAL,0ECH
OUTDX,AL;键盘扫描第三列
MOVDX,0602H
INAL,DX;8255芯片B口输入数据
TESTAL,080H;键盘扫描第三列,第四行(PB07)
JNZKEY_DENG;按键D没被按下,跳到KEY_DENG检测按键=是否被按下
CALLKEYD;检测到按键D被按下,调用按键D处理子程序
JMPSTTK;放键测试,等待按键者松手,再进行下一步
KEY_DENG:
TESTAL,040H;键盘扫描第三列,第三行(PB06)
JNZKEY_6;按键=没被按下,跳到KEY_6检测按键6是否被按下
CALLKEYDENG;检测到按键=被按下,调用按键=处理子程序
JMPSTTK;放键测试,等待按键者松手,再进行下一步
KEY_6:
TESTAL,020H;键盘扫描第三列,第二行(PB05)
JNZKEY_2;按键6没被按下,跳到KEY_2检测按键2是否被按下
CALLKEY6;检测到按键6被按下,调用按
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 课程设计 修改 注释 16 加法 运算 三位 乘法