![汇编实验讲课微机原理实验课演示文稿课件_第1页](http://file4.renrendoc.com/view/1faaa7446389f467022ce021f42d67e5/1faaa7446389f467022ce021f42d67e51.gif)
![汇编实验讲课微机原理实验课演示文稿课件_第2页](http://file4.renrendoc.com/view/1faaa7446389f467022ce021f42d67e5/1faaa7446389f467022ce021f42d67e52.gif)
![汇编实验讲课微机原理实验课演示文稿课件_第3页](http://file4.renrendoc.com/view/1faaa7446389f467022ce021f42d67e5/1faaa7446389f467022ce021f42d67e53.gif)
![汇编实验讲课微机原理实验课演示文稿课件_第4页](http://file4.renrendoc.com/view/1faaa7446389f467022ce021f42d67e5/1faaa7446389f467022ce021f42d67e54.gif)
![汇编实验讲课微机原理实验课演示文稿课件_第5页](http://file4.renrendoc.com/view/1faaa7446389f467022ce021f42d67e5/1faaa7446389f467022ce021f42d67e55.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机原理实验课西北工业大学计算机学院实验教学中心1a微机原理实验课西北工业大学计算机学院实验教学中心1aMASM611使用简要说明
Microsoft宏汇编程序MASM611有建立汇编语言所需的全部工具,我们简要介绍其集成开发软件PWB。PWB是集汇编程序的编辑、编译、连接、调试、运行于一体的综合软件。运行PWB在计算机C:盘上具体使用方法结合实例介绍MASM611文件夹BINR文件夹运行程序PWB2aMASM611使用简要说明Microsoft软件实验部分
本部分共进行4次实验,实验内容如下:
1实验一BCD码的运算2实验三循环结构程序3实验四排序程序4实验五分支程序3a软件实验部分本部分共进行4次实验,实验内容如下:1实验一实验一BCD码的运算
一.实验目的1.熟悉在MASM611集成环境下建立、汇编、链接、调试和运行汇编语言程序的全过程。2.掌握汇编语言程序结构中数据段、堆栈段、代码段定义及内存分配方法。3.学会DEBUG调试程序主要命令的使用方法。4.掌握用组合BCD码表示数据的方法,并熟悉其加、减、乘、除运算。二.实验内容1.多位十进制数加法。2.两位十进制数乘法。三.实验要求1.多位十进制数加法:在内存中以DATA1和DATA2为首址,各分配5个字节单元,分别存入两个8位组合BCD码数据(低位在前),将两数相加,结果送回到DATA2处。2.两位十进制数乘法:将被乘数和乘数以组合BCD码形式分别存放于DATA1和DATA2定义的节单元中,经乘法运算,乘积存入DATA3定义的两个内存单元中。3.用DEBUG调试程序、查看运算结果,进行手工验证;并且用DEBUG修改数据,重新执行。4a实验一BCD码的运算一.实验目的4a关于BCD码、十六进制数的说明BCD码用4位二进制编码表示一个十进制数,又称二—十进制数。由于这4位二进制数的权值为8421,故也称BCD码为8421码。在计算机里,用一个字节的低4位表示一位十进制数——非组合BCD码;用一个字节表示两位十进制数——组合BCD码。非组合BCD码uuuu1001例:计算机里79d非组合BCD码:uuuu0111uuuu1001组合BCD码01111001例:计算机里79d组合BCD码:0111100116进制数0123456789ABCDEF二进制码0000000100100011010001010110011110001001101010111100110111101111BCD码000000010010001101000101011001111000100110进制数0123456789在计算机里,所有的运算都是按二进制进行的,运算结果是二进制数(即十六进制数)。为了把十六进制运算结果转换成十进制,汇编语言中引进了组合BCD码加法调整指令DAA和减法调整指令DAS。DAA加法的十进制调整指令该指令之前要执行ADD或ADC。调整方法:若AF为1,或AL中的低4位是十六进制的A~F,则AL内容加06H,AF置1;若CF为1,或AL中的高4位是十六进制的A~F,则AL内容加60H,CF置1。
AF——辅助进位标志CF——进位标志ALAL中的十六进制数调整为BCD格式5a关于BCD码、十六进制数的说明非组合BCD码uuuu1多位十进制数加法
.modelsmall.datadata1db11h,22h,33h,44h,00hdata2db99h,88h,77h,66h,00h.code.startupmovsi,offsetdata1;设指针movdi,offsetdata2 clc ;清进位 movcx,5 ;设加法次数lop: moval,[si] ;取第一加数 adcal,[di] ;取第二加数 daa ;十进制调整 mov[di],al;结果存入指定单元 incsi ;指针加1incdi looplop ;循环.exitend
流程图:开始SIData1首址DIData2首址清进位设加法次数十进制调整;部分和回送指向下单元数AL第一加数ALAL+第二加数CX-1=0?结束YN6a多位十进制数加法.modelsmall流两位十进制数乘法.modelsmall.586.data data1db34h data2db56h data3dw1dup(?).code.startupmovbl,data1;第一乘数转换成16进制数movbh,blandbh,0fhandbl,0f0hmovcL,4shrbl,cLmoval,10mulbladdal,bhmovzxcx,al;置加法次数计数器
movbl,data2; 第二乘数做BCD加法,加第一乘数次 movax,0 clclop:addal,bl daa xchgah,al adcal,0 daa xchgah,al looplop movdata3,ax ;积送乘积存储单元 nop nop nop.exitend7a两位十进制数乘法.modelsmallmov两位十进制数乘法流程图:开始BL第一乘数BH第一乘数分离出第一乘数的“个位”分离出第一乘数的“十位”第一乘数的“十位”移到“个位”后,再乘10合成得到16进制的第一乘数CX16进制的第一乘数BCD码转换成16进制数11AX0清进位BL第二乘数第二乘数做加法次数十进制调整AL与AH内容交换ALAL+0+CFALAL+BLAL与AH内容交换十进制调整CX-1=0?NY存储结果结束8a两位十进制数乘法流程图:开始BL第一乘数分离出
一、实验目的
掌握循环结构程序的设计、调试。二、实验内容1.多字节无符号数加法。2.设计一软件延时器,并在屏幕上显示软件延时倒计时过程。三、实验要求1.多字节无符号加法:在DATAS中存放10个双字节无符号数,用循环结构设计程序,通过程序运算,把这10个双字节无符号数相加,其和存入紧邻加数之后的四个单元中。2.软件延时器:做一延时约1秒的软件延时器,在屏幕上按9、8、…0顺序显示软件延时倒计时过程。
实验三循环结构程序9a
一、实验目的实验三循环结构程序9a有关问题的说明循环程序的三个组成部分:⑴循环初始状态设置。设置循环次数、为循环体正常工作建立初始状态等。⑵循环体。循环工作的主体,包含循环的工作部分和修改部分。循环的工作部分是为完成程序功能而设计的程序段;循环的修改部分是为保证每一次重复时,参加执行的信息能发生有规律的变化而建立的程序段。⑶循环控制部分。选择一个循环控制条件来控制循环的运行和结束。循环程序的结构:循环初始状态循环控制条件循环体YN循环初始状态循环体循环控制条件YNDO-WHILE结构DO-UNTIL结构10a有关问题的说明循环程序的三个组成部分:循环初始状态循环控制条子程序结构:procedurenamePROCAttribute
RET
procedurenameENDP
Attribute…NEAR调用程序和过程在同一个代码段中FAR调用程序和过程不在同一个代码段中系统功能调用:系统功能调用是DOS为方便汇编语言编写而提供的一组约80个功能调用的常用子程序,它分为设备管理、文件管理和目录管理等几类。DOS规定用软中断指令INT21H进入各功能调用子程序的总入口,再为每个功能调用规定一个功能号,以便进入相应各用子程序的入口。系统功能调用的使用方法:指定的寄存器入口参数AH调用功能的功能号INT21H11a子程序结构:…NEAR调用程序和过程在同一个代码段中EX1:从键盘输入单字符MOVAH,01H;1号功能调用INT21H将键盘输入字符的ASCII码送到AL。EX2:从键盘输入字符串
BUFDB10DUP(?)LEADX,BUFMOVAH,0AH;0A号功能调用INT21H将键盘输入的字符串写到RAM中去,击回车键表示字符串结束。字符数与予留空间的关系为:少补零多丢失。EX3:输出单字符MOVDL,’M’MOVAH,02H;2号功能调用INT21H将DL中字符从屏幕上显示出来。EX4:输出字符串
BUFDB‘Thankyou$’MOVDX,OFFSETBUFMOVAH,09H;9号功能调用INT21H将指定RAM缓冲区中的字符串从屏幕上显示出来。‘$’为字符串结束符。EX5:直接控制台输入/输出单字符MOVDL,0FFH;DL=0FFH时,MOVAH,06H;6号功能调用
INT21H;将键盘输入字符送到AL中。
MOVDL,’M’;DL≠0FFH时,MOVAH,06H;6号功能调用
INT21H;将DL中字符送到屏幕上显示。…………12aEX1:从键盘输入单字符EX4:输出字符串…………12a多字节无符号数加法
.MODELSMALL.586.DATADATASDW1111H,2222H,3333H,4444H,5555HDW6666H,7777H,8888H,9999H,0AAAAHRESULTDD1DUP(?).CODE.STARTUPMOVSI,OFFSETDATAs ;设指针
MOVCX,10 ;累加次数
MOVEAX,0 ;清累加器
CLC
;清进位LOP:MOVBX,[SI]
;取加数到BX
MOVZXEBX,BX ;将BX扩展成32位
ADCEAX,EBX ;带进位加
INCSI ;改指针
INCSI
LOOPLOP ;循环加
MOVRESULT,EAX ;存结果
.EXIT
END开始SIDATAS的首址CX累加次数EAX0清进位BXSI所指加数将BX扩展为32位EAXEAX+EBX+CFSI指向下一加数CX-1=0?NY存结果结束13a多字节无符号数加法.MODELSMALL开始SI软件延时器.modelsmall.datadatadb20h,20h,20h,20h,20h,39h,0dh,'$'.code.startup movcx,09h ;设循环次数lop: movah,09h ;显示功能调用 leadx,data int21h callnearptrdelay ;调用延时子程序 decdata+5 ;修改显示数字 looplop .exitDelayprocnearusescx;延时子程序 movbx,06ffh ;设第二时常数Delay1:movcx,0h loop$ ;自身循环CX次 decbx ;第二时常数减1 jnzdelay1 ;不为零循环 retDelayendpend开始CX循环次数字符串显示功能调用延时子程序调用显示数字修改CX-1=0?NY结束主程序流程:延时子程序流程:延时子程序定义BX第二时常数CX第一时常数CX-1=0?NYBX-1BX=0?NY子程序返回子程序结束关键词14a软件延时器.modelsmall开始CX循环次实验四
排序程序
一.实验目的
1.学习无符号数比较大小指令;2.掌握多重循环编程方法;3.掌握汇编语言编写排序程序的思路和方法。二.实验内容
1.单字节无符号数排序。2.去极值滤波。三.实验要求
1.单字节无符号数排序:DATANUM单元开始存放双字节无符号数,表示要排序数据的个数,DATAS单元开始存放要排序的数据,数据个数至少10个,程序运行之后,这些数据按照由小到大的顺序仍然存放于DATAS单元开始的位置。2.去极值滤波:某控制系统为了抗干扰,采用去极值滤波法处理采集数据,取连续6个A/D采样值(12位——双字节,低12位),要求去掉最大值和最小值,将余下4个数求平均值,用该平均值代表当前时刻系统状态的真值。试编一程序完成这个滤波过程。15a实验四排序程序一.实验目的15a单字节无符号数排序流程图:开始BL数据个数-1CXBL扩展数据指针SI置0累加器前数
前数与后数比较前数﹥后数前、后数交换数据指针SI指向下一数数据指针SI指向下一数YNBL-1CX-1=0?CX-1=0?NNYYZF=1?N结束Y16a单字节无符号数排序流程图:开始BL数据个数-
.modelsmall.586.datadatanumdb10datasdb21h,13h,4h,5h,7hdb6h,8h,20h,9h,11h.code.startupmovbl,datanumdecbllop0:movzxcx,blmovsi,0lop:moval,datas[si]cmpal,datas[si+1]jajhincsilooplopjmpnext
jh:xchgal,datas[si+1]movdatas[si],alincsilooplopnext:decbljzfinishjmplop0finish:nop.exitend17a.modelsmalljh:xchga去极值滤波开始调排序子程序对数据进行排序对排完序的数据掐头去尾求和求均值保存结果结束18a去极值滤波开始调排序子程序对排完序的数据求均值保存结果结束1.modelsmall.586.data datanumdb6 datas dw0123h,0abch,0234hdw0345h,0456h,0567h.code .startup callpx ;排序 movsi,offsetdatas+2;掐头去尾送指针 movcx,4 ;送累加次数 clc ;清进位 movax,0 ;取首数
qh: adcax,[si] ;累加 incsi incsi loopqh shrax,2;除4 mov[datas],ax;存结果到DATAS首位.exitpx procnearmovbl,datanum ;取字长decbllop0:movzxcx,bl ;送比较次数movsi,0lop: movax,datas[si] ;送前数 cmpax,datas[si+2] ;与后数比较jajh ;前大于后,转交换 incsi incsi ;指针加1looplop ;循环比较jmpnext ;一轮排序完jh:xchgax,datas[si+2] ;交换movdatas[si],axincsi incsilooplopnext:decbl ;修改比较次数jzfinish jmplop0finish:nop ;结束 ret pxendpend19a.modelsmallpx procne
实验五分支程序
一、实验目的掌握分支程序编程方法,复杂分支程序的查表法等。二、实验内容
1、学生课程成绩分段统计。2、键盘及屏幕显示功能调用。三、实验要求1、学生课程成绩分段统计:用单字节表示每个学生的学号,学生的课程成绩用两位十进制数表示(最低0分,最高99分),规定0F0H表示作弊,0F1H表示缺考,0FFH为一组学生成绩的结束符。学生成绩在内存的存放形式为“学号,成绩”,每个学生占两个字节,从内存SCORE为首址开始存放。要求学生人数不少于10个,试编程序,按0~9、10~19、20~29、……、80~89、90~99及作弊、缺考等12种情况把学生的课程成绩进行分段统计,将统计结果存入以COUNT为首址的12个单元中。2、试编一程序扫描键盘,当B键按下时,在屏幕上显示0~9循环计数;S键按下时停止计数;再按B键继续计数过程。E键按下时退出程序。3、用DEBUG调试程序预置数据和查看程序运行结果,以验证程序正确性。
20a
实验五分支程序
一、实验目的20a学生课程成绩分段统计开始设置学号、成绩指针取学号取成绩是结束标志?取十分位,并将十分值扩展为16位送DI,对DI所指统计区段统计值加1是作弊?是缺考?修改指针CX-1=0?CX统计上限作弊统计区段统计值加1缺考统计区段统计值加1结束YYYYNNNN21a学生课程成绩分段统计开始设置学号、成绩指针取学号取成绩是结束
.modelsmall.586.datascoredb1,10h,2,20h,3,30h,4,40h,5,50h,6,77h,7,70h db8,80h,9,90h,10h,08,11h,0f0h,12h,0f1h,0ffhcountdb12dup(?).code.startupmovcx,20 ;送统计上限movsi,0 ;SCORE统计指针statistic:moval,score[si] ;取学号cmpal,0ffh;判是否为结束jesta_end ;转统计结束movbl,score[si+1] ;取成绩cmpbl,0f0h ;是否作弊jefake ;是,转作弊处理cmpbl,0f1h ;是否缺考jemiss ;是,转缺考处理shrbl,4 ;取十分位movzxdi,bl;将十分值扩展为16位送DIinccount[di];相应区段统计值加1down:incsi;改指针incsiloopstatistic ;循环sta_end:nop ;结束.exitfake:movdi,10 ;作弊处理inccount[di] jmpdown miss:movdi,11 ;缺考处理inccount[di] jmpdown
end22a.modelsmall22a键盘及屏幕显示功能调用开始显示提示信息置处理指针为“停止”调延时、键盘扫描程序有键动?转处理指针处B键?S键?E键?转处理指针处结束置处理指针为“计数”置处理指针为“停止”NYYYYNNN处理指针为“计数”处理指针为“停止”计数显示23a键盘及屏幕显示功能调用开始显示提示信息置处理指针为“停止”调延时、键盘扫描程序子程序定义BX第二时常数CX第一时常数CX-1=0?NYBX-1BX=0?NY子程序返回监测键动有键动?做键动标志bx=1NY24a延时、键盘扫描程序子程序定义BX第二时常数CX.modelsmall.dataMess1db'pressbbutton---count',0dh,0ahmess2db'presssbutton---stop',0dh,0ahMess3db'pressebutton---exit',0dh,0ah,'$'countdb20h,20h,20h,20h,20h,30h,0dh,'$'.code.startup movah,09h ;显示提示信息 movdx,offsetmess1 int21h movsi,stop ;设处理指针scan:callnearptrdelay;调延时、键扫程序 orbx,bx ;判有无键动 jnzscan1 ;有键动,转键处理 jmpsi ;无键动,转当前处理程序scan1:cmpal,'b‘;键处理程序 jeb_proc cmpal,'s' jes_proc cmpal,'e' jee_proc calldelay jmpsib_proc:movsi,count_ ;B键处理 jmpscans_proc:movsi,stop ;S键处理 jmpscane_proc:nop ;E键处理 nop.exitcount_:inccount+5 ;修改显示数字 moval,3ah ;比较超限 cmpal,count+5 jadown ;若不超限,调显示 movcount+5,30h ;超限,设启始值down:movah,09h ;显示功能调用 leadx,count int21h jmpscanstop:jmpscan nopDelayprocnearusescx ;延时子程序 movbx,380h ;设第二时常数delay1:movcx,0h loop$ ;自身循环CX次 movdl,0ffh ;监测键动 movah,06h int21h jnzkey_ret;若有键动,延时终止,转键处理 decbx ;第二时常数减1 jnzdelay1 ;不为零循环 jmpdelay_retkey_ret:movbx,1 ;做键动标志delay_ret:retDelay endpend25a.modelsmallcount_:inccount硬件实验部分本部分共进行3次实验,实验内容如下:1实验六
并行接口技术实验
2实验七8254定时/计数器实验3实验九A/D转换实验
(下面根据实验台实物介绍实验台)26a硬件实验部分本部分共进行3次实验,实验内容如下:26a特别说明:为了方便实验,实验台设计时已将实验用相关器件的地址线、数据总线及除片选(CS)外的控制线连接到位,并在每一个实验电路附近予留有若干信号连线插孔。实验时只要将相应插孔用单股导线对应相连即可组成完整的实验电路。在给出的实验电路图中,线路所带小圆圈即表示连线插孔。硬件实验注意事项:1.在实验台断电条件下,才能用单股导线连接电路;2.线路连接完成、检查确认没有错误后,再开通实验台电源;3.用单股导线连接电路时,要将单股导线线头整直,并确认线头没有断裂;4.实验完成后,关断实验台电源,再一根一根垂直拔掉连接导线,并把连接导线整好放入线盒。27a特别说明:为了方便实验,实验台设计时已将实验用相关器件的地址实验六
并行接口技术实验
一.实验目的1.掌握8255A并行接口的基本使用方法。2.理解数码管扫描显示原理,学习数码管扫描显示方法。二.实验内容
1.用8255A作为并行接口,从8255A的一个端口输入开关量到CPU或内存,再将这一数据通过数据总线和8255A的另一个端口扫描输出到数码管。设8255A的A口为输入方式,接逻辑电平开关;8255A的B口为输出方式,通过MC1413驱动器接数码管的位选端;数码管的字划端通过74HC573与数据总线相连;逻辑电平开关SK1~SK6按1~6编号。试编一程序,用一位数码管指示出逻辑电平开关为“0”状态的开关编号,即当1号逻辑电平开关为“0”时,所选数码管显示“1”,2号逻辑电平开关为“0”时,数码管显示“2”,…,6号逻辑电平开关为“0”时,数码管显示“6”。所有逻辑开关的初始状态为“1”。2.设8255A的B口为输出方式,通过MC1413驱动器接数码管的位选端;数码管的字划端通过74HC573与数据总线相连。试编一动态扫描程序,让6个数码管“同时”点亮,显示“1、2、3、4、5、6”。三.实验电路及设计1.实验电路图28a实验六并行接口技术实验一.实验目的28a29a29a30a30a31a31a2.实验连线(1)逻辑电平开关输出孔K1~K6对应连接到8255A的PA0~PA5;(2)8255A的PB0~PB5对应连接到数码管的位选端JM1~JM6;(3)数据总线D0、D1、D2、D3、D4、D5、D6、D7对应连接到数码管的字划端a、b、c、d、e、f、g、dp;(4)8255A的片选端CS8255连到译码控制单元的300-303H;(5)74HC573的使能端CS573连到译码控制单元的310H。3.8255A的端口地址PA口:300H,PB口:301H,PC口:302H,控制寄存器:303H。4.数码管编码表“0”-3FH“1”-06H“2”-5BH“3”-4FH“4”-66H“5”-6DH“6”-7DH“7”-07H“8”-7FH“9”-6FH“A”-77H“B”-7CH“C”-39H“D”-3EH“E”-79H“F”-71H
32a2.实验连线32a有关问题的说明数码管(共阴):ABCDEFGDPABCDEFGDP共阴地K数字DPGFEDCBA字型码0001111113FH10000011006H2010110115BH……K不闭合,数码管就点不亮33a有关问题的说明数码管(共阴):ABCDEFGDPABCDEF多个数码管扫描显示:34a多个数码管扫描显示:34a多个数码管扫描显示:限流电阻锁存器JM3、JM2、JM1谁为‘1’,谁连接的数码管就显示锁存器当前锁存的值所谓扫描显示是:对N个数码管:1.给锁存器送第1个数码管显示内容,而后第1个数码管公共端接低,延时2.给锁存器送第2个数码管显示内容,而后第2个数码管公共端接低,延时…N.给锁存器送第N个数码管显示内容,而后第N个数码管公共端接低,延时第N步后,再从1开始,周而复始。那么,JM3、JM2、JM1是互斥的了!连接数据总线D7~D0驱动器35a多个数码管扫描显示:限流电阻锁存器JM3、JM2、JM1谁为实验6.174HC573锁存器A口
K6K5K4K3K2K1开关ABCDEFGDP限流电阻DbusD7…D08255MC1413驱动器B口COMDbusD7…D0CS573CS8255A口36a实验6.174HC573锁存器A口K6K5K4开始初始化8255点亮一位数码管读键盘有E键?读开关量,并取反位扫描,确定‘开关’号取对应‘开关’号的字型码输出对应的数字结束YN37a开始初始化8255点亮一位数码管读键盘有E键?读开关量,并取;CS8255-------300_303h; CS573--------310h ;k1...k6------PA0...PA5; JM1...JM6------PB0...PB5;D0...D7--------A.B....DP.modelsmall.586p8255equ0300h ;片选地址p_ctlequ90h ;8255控制字s_l_aequ310h ;573锁存地址.datatabledb3fh,06h,5bh,4fh,66h;0,1,2,3,4字型db6dh,7dh,07h,7fh,6fh;5,6,7,8,9.code.startupmovdx,p8255+3 ;8255初始化moval,p_ctloutdx,al
movdx,p8255+1;点亮数码管SM1moval,01h
outdx,al
lop:movah,06h;键入“e”结束执行 movdl,0ffh int21h
cmpal,'e' jescan_end
movdx,p8255 ;读开关 inal,dx notal movzxax,al bsfbx,ax;从ax低位起扫描,将第一个;为1的位号存BX xchgal,bl movbx,offsettable;读字型码 xlat;查表,[BX+AL]送AL movdx,s_l_a ;输出对应的数字 outdx,al jmplop ;循环扫描scan_end:.exitend38a;CS8255-------3实验6.2限流电阻DbusD7…D08255MC1413驱动器B口COMDbusD7…D0CS573CS825574HC573锁存器COMCOMCOMCOMCOMABCDEFGDP39a实验6.2限流电阻Dbus8255MC1413驱动器B口C开始初始化8255查表取显示数字字型码显示字型码送锁存器(输出)取对应数码管字位、并输出CL+1(下一扫描位置)扫描位数≥6?调延时CL初始扫描位置ALCL(显示数字)CL初始扫描位置读键盘有键动?结束NYYN延时程序流程见前40a开始初始化8255查表取显示数字字型码显示字型码送锁存器(输;CS8255-------300_303h; CS573--------310h ; JM1...JM6------PB0...PB5;D0...D7--------A.B....DP;.modelsmallp8255equ300h ;片选地址 p_ctlequ10010000b;8255控制字 s_l_aequ310h;573锁存地址 .data tabledb3FH,06H,5BH,4FH,66H;0,1,2,3,4 db6DH,7DH,07H,7FH,6FH;5,6,7,8,9.code.startupmovdx,p8255+3 ;发控制字moval,p_ctl outdx,al movcl,1;设扫描位置lop: moval,cl ;取显示数字 movbx,offsettable;读字型码 xlat movdx,s_l_a ;输出字型码 outdx,al
moval,80h rolal,cl;左循环移位 movdx,p8255+1 outdx,al;送B口控制的数码管位 inccl cmpcl,6 jbedown ;若显示位置大于等于6,;返回启始位置1 movcl,1down:calldelay movah,06 ;判有键动,跳出循环 movdl,0ffh int21h jnzscan_end jmplop ;循环扫描scan_end:nop .exit
41a;CS8255-------delay procnearusescx ;延时子程序 movbx,02hdelay1: movcx,0h loop$ decbx jnzdelay1 retdelay endp
end42adelay procnearusescx ;延时子程实验七8254定时/计数器实验
一.实验目的
1.掌握8254定时/计数器的基本使用方法。2.了解8254定时/计数器利用级连扩大计数范围的方法。3.了解多I/O芯片协同工作的原理和方法。二.实验内容
1.将8254定时器0设置为方式2(分频),定时器1设置为方式3(方波),定时器0的CLK0端接1M或2M时钟,定时器0的输出脉冲作为定时器1的时钟输入。将定时器1的输出脉冲接在一个LED灯上或风鸣器上。编程使8254工作,观察灯的状态或风鸣器声响。2.用8254做秒信号源,用8255A控制交通灯的红绿变化,完成一交通灯控制系统,使每10秒切换一次通行方向。三.实验电路及设计
1.实验电路图
43a实验七8254定时/计数器实验一.实验目的43a44a44a45a45a46a46a47a47a48a48a2.“实验内容1”实验连线(1)8254的GATE0、GATE1接高电平;(2)8254T0的CLK0接1M或2M时钟孔;(3)8254T1的CLK1接T0的OUT0;(4)8254的片选端CS8254连到译码控制单元的304-307H;(5)8254T1的OUT1接LED灯或风鸣器的输入端L1或BJ孔。3.“实验内容2”实验连线以下连线假设8255A的A口为输入方式、B口为输出方式,8255A的PA1连接8254T1的OUT1,8255A的B口控制交通灯的八只LED灯。(1)连线同“实验内容1”的(1)~(4);(2)8254T1的OUT1接8255A的PA1孔;(3)8255A的PB7~PB0对应连接到dp、g、f、e、d、c、b、a,它们对应交通灯的Wr、Er、Wg、Eg、Nr、Sr、Ng、Sg灯;(4)交通灯八只LED发光管的公共控制端JTD孔接高电平;(5)8255A的片选端CS8255连到译码控制单元的300-303H。
49a2.“实验内容1”实验连线49a4.8254和8255A的端口地址8254的端口地址:定时器0分频系数寄存器304H,定时器1分频系数寄存器305H,控制寄存器307H。8255A的端口地址:PA口:300H,PB口:301H,PC口:302H,控制寄存器:303H。
50a4.8254和8255A的端口地址50a实验7.1开始初始化T0初始化T1装T0低字节计数初值结束装T0高字节计数初值装T1低字节计数初值装T1高字节计数初值51a实验7.1开始初始化T0初始化T1装T0低字节计数初值结束;cs8253----304_307h;clk0---1M;out0-----CLK1;out1----BJ或DL1;gate0---K1,令k1="1";gate1---K2,令k2="1".MODELSMALLCS8253EQU304HT0_CTLEQU00110100B;对T0两次读写,先低后;高。T0为方式2(分频)T1_CTLEQU01110110B;对T1两次读写,先低;后高。T1为方式3(方波).DATAT0_DATADB0FFH,040HT1_DATADB0FFH,0.CODE.STARTUP MOVDX,CS8253+3;初始化T0 MOVAL,T0_CTL OUTDX,AL MOVDX,CS8253;给T0低字节装计数初值 MOVAL,T0_DATA OUTDX,AL MOVAL,T0_DATA+1;给T0高字节装计数初值 OUTDX,AL MOVDX,CS8253+3;初始化T1 MOVAL,T1_CTL OUTDX,AL MOVDX,CS8253+1 MOVAL,T1_DATA;给T1低字节装计数初值 OUTDX,AL MOVAL,T1_DATA+1;给T1高字节装计数初值 OUTDX,AL .EXIT END52a;cs8253----304_307h.CODE52a实验7.2开始8254T0初始化给8254T0装初值8254T1初始化给8254T1装初值8255初始化为A口入、B口出8255B口输出方向初值读8255PA1、测试8255PA1PA1=0?读8255PA1、测试8255PA1PA1=1?控制换向8255B口输出方向值检查键盘有键盘动?结束YYYNNN53a实验7.2开始8254T0初始化给8254T0装初值;cs8254----304_307h;clk0---1M;out0----clk1;out1----8255的PA1;gate0---k1,令k1="1";gate1---k2,令k2="1";JTD------k3,令k3="1";cs8255---300_303h;8255(PB7...PB0)----(dp.G.F.E.D.C.B.A).MODELSMALL T8254EQU304H T0_CTLEQU00110100B T1_CTLEQU01110110B p8255equ300h ;片选地址 p_ctlequ10010000B;8255控制字 .DATA T0_DATADB0FFH,040H T1_DATADB0FFH,0 dir_dataDB00111100B.CODE .STARTUP MOVDX,T8254+3 ;8254T0初始化 MOVAL,T0_CTL OUTDX,AL MOVDX,T8254;给8254T0装初值 MOVAL,T0_DATA OUTDX,AL MOVAL,T0_DATA+1 OUTDX,AL MOVDX,T8254+3;8254T1初始化 MOVAL,T1_CTL OUTDX,AL MOVDX,T8254+1;给8254T1装初值 MOVAL,T1_DATA OUTDX,AL MOVAL,T1_DATA+1 OUTDX,AL54a;cs8254----304_307h.CODE54amovdx,p8255+3;8255为A口入,B口出moval,p_ctl outdx,al movdx,p8255+1;8255B口输出方向初值 moval,dir_data outdx,albit_test0: ;扫描上升沿 movdx,p8255 inal,dx testal,2;测试8255PA1,等待PA1=0 jzbit_test1;PA1=0转 jmpbit_test0;PA1=1再测bit_test1: movdx,p8255 inal,dx testal,2;测试8255PA1,等待PA1=1 jnzdir_ctl;有上升沿转 jmpbit_test1;上升沿没到再测dir_ctl:moval,dir_data;方向控制 notal;换向 movdir_data,al movdx,p8255+1;8255B口输出方向值 outdx,al movah,0bh;检查键盘 int21h oral,al;有键盘输入转 jnzdir_end jmpbit_test0dir_end: .EXIT END55amovdx,p8255+3;8255为A口入,B口实验九A/D转换实验
一.实验目的学习模/数转换器使用方法,理解模/数转换原理。二.实验内容
1.给A/D转换器输入一可调节的电压信号,假设该输入信号为一水塔的水位高度信号,请结合应用8255A接口芯片,编程完成以下功能:当水位低于PL时开报警、并打开水泵(点亮一指示灯),水位在PL~PH之间时关闭报警,水位高于PH时开报警、并关闭水泵(指示灯熄灭)。设PH=0B4H(约3.5V),PL=66H(约2.0V)。2.用A/D转换器对电压信号V4连续采集4次,求出均值,放入指定单元;并把采集均值转换为电压,通过8255在数码管上显示。三.实验电路及设计
1.实验电路图56a实验九A/D转换实验一.实验目的56a57a57a58a58a59a59a60a60a61a61a2.“实验内容1”实验连线以下连线假设8255A的A口为输出方式,8255A的PA6控制一LED灯、8255A的PA7控制报警风鸣器。(1)J18、J19短路块接到I/O端;(2)A/D转换单元的AD_S连接译码控制单元的AD_S(318_31FH);(3)A/D转换单元的AD_OE连接译码控制单元的AD_OE(318_31FH);(4)A/D转换器的IN0输入端连接到直流电压单元的V4孔。直流电压单元的旋钮WA顺时针旋转V4、V3、V2、V1输出增大,逆时针旋转减小;(5)8255A的片选端CS8255连到译码控制单元的300-303H;(6)8255A的PA6连接到逻辑电平指示单元的L3孔;(7)8255A的PA7连接到逻辑电平指示单元的BJ孔。3.“实验内容2”实验连线以下连线假设8255A的A口、B口均为输出方式,8255A的A口连接数码管的字划端,8255A的B口连接数码管的位选端。(1)连线同“实验内容1”的(1)~(5);(2)8255A的PA7~PA0对应连接到数码管的字划端DP、G、F、E、D、C、B、A(3)8255A的PB2~PB0对应连接到数码管的位选端JM3~JM1。4.ADC0809和8255A的端口地址ADC0809的端口地址:通道选择及启动转换:318_31FH,读结果:318_31FH。8255A的端口地址:PA口:300H,PB口:301H,PC口:302H,控制寄存器:303H。
62a2.“实验内容1”实验连线62a实验9.1开始初始化8255读键盘有E键?设置采集次数、存储指针调采集程序采集数据求和、并求均值采集均值﹤PL?采集均值﹤PH?结束YNYYNN开泵、开报警开泵、关报警关泵、开报警调采集程序:子程定义启动A/D等待转换完成读转换结果保存转换结果子程结束63a实验9.1开始初始化8255读键盘有E键?设置采集次数、存;CS8255---------300_303H;8255的PA6------L3;8255的PA7------BJ;AD_S-----------译码控制单元的AD_S(318_31FH);AD_OE----------译码控制单元的AD_OE(318_31FH);IN0-----------直流电压单元的V4;PL=66h;PH=0B4h.modelsmall .586 p8255equ300h ;8255片选地址 p_ctlequ80h;8255控制字 AD_Sequ318h;A/D片选地址 AD_OEEQU318HPHequ0B4HPLequ66H BJLEDKEQU11000000B BJGLEDKEQU01000000B BJKLEDGEQU10000000B .data VADDB5dup(?) .code .startup movdx,p8255+3 ;发控制字moval,p_ctloutdx,alstart:movah,06h ;判结束 movdl,0ffh int21h cmpal,'e‘ jescan_endmovdi,offsetVAD movcx,4cv: callad_cv;调采集程序 loopcv movdi,offsetVAD movcx,4 MOVAX,0 clcqzhzh:MOVBL,[DI] MOVZXBX,BLADCAX,BX incdi loopqzhzhMOVCL,2 SHRAX,CL MOV[DI+1],AL cmpAL,PL JBLK cmpAL,PH JBLEDK JMPHG jmpstart64a;CS8255---------300_303Hstart:LK:movdx,p8255 moval,BJLEDK outdx,al jmpstartLEDK: movdx,p8255 moval,BJGLEDK outdx,al jmpstartHG:movdx,p8255 moval,BJKLEDG outdx,al jmpstartscan_end:nop .exitad_cvprocnearusescx movdx,AD_S outdx,AL movcx,05000h loop$ inAL,dx mov[di],AL incdi retad_cv endp end65aLK:movdx,p8255ad_cvproc微机原理实验课西北工业大学计算机学院实验教学中心66a微机原理实验课西北工业大学计算机学院实验教学中心1aMASM611使用简要说明
Microsoft宏汇编程序MASM611有建立汇编语言所需的全部工具,我们简要介绍其集成开发软件PWB。PWB是集汇编程序的编辑、编译、连接、调试、运行于一体的综合软件。运行PWB在计算机C:盘上具体使用方法结合实例介绍MASM611文件夹BINR文件夹运行程序PWB67aMASM611使用简要说明Microsoft软件实验部分
本部分共进行4次实验,实验内容如下:
1实验一BCD码的运算2实验三循环结构程序3实验四排序程序4实验五分支程序68a软件实验部分本部分共进行4次实验,实验内容如下:1实验一实验一BCD码的运算
一.实验目的1.熟悉在MASM611集成环境下建立、汇编、链接、调试和运行汇编语言程序的全过程。2.掌握汇编语言程序结构中数据段、堆栈段、代码段定义及内存分配方法。3.学会DEBUG调试程序主要命令的使用方法。4.掌握用组合BCD码表示数据的方法,并熟悉其加、减、乘、除运算。二.实验内容1.多位十进制数加法。2.两位十进制数乘法。三.实验要求1.多位十进制数加法:在内存中以DATA1和DATA2为首址,各分配5个字节单元,分别存入两个8位组合BCD码数据(低位在前),将两数相加,结果送回到DATA2处。2.两位十进制数乘法:将被乘数和乘数以组合BCD码形式分别存放于DATA1和DATA2定义的节单元中,经乘法运算,乘积存入DATA3定义的两个内存单元中。3.用DEBUG调试程序、查看运算结果,进行手工验证;并且用DEBUG修改数据,重新执行。69a实验一BCD码的运算一.实验目的4a关于BCD码、十六进制数的说明BCD码用4位二进制编码表示一个十进制数,又称二—十进制数。由于这4位二进制数的权值为8421,故也称BCD码为8421码。在计算机里,用一个字节的低4位表示一位十进制数——非组合BCD码;用一个字节表示两位十进制数——组合BCD码。非组合BCD码uuuu1001例:计算机里79d非组合BCD码:uuuu0111uuuu1001组合BCD码01111001例:计算机里79d组合BCD码:0111100116进制数0123456789ABCDEF二进制码0000000100100011010001010110011110001001101010111100110111101111BCD码000000010010001101000101011001111000100110进制数0123456789在计算机里,所有的运算都是按二进制进行的,运算结果是二进制数(即十六进制数)。为了把十六进制运算结果转换成十进制,汇编语言中引进了组合BCD码加法调整指令DAA和减法调整指令DAS。DAA加法的十进制调整指令该指令之前要执行ADD或ADC。调整方法:若AF为1,或AL中的低4位是十六进制的A~F,则AL内容加06H,AF置1;若CF为1,或AL中的高4位是十六进制的A~F,则AL内容加60H,CF置1。
AF——辅助进位标志CF——进位标志ALAL中的十六进制数调整为BCD格式70a关于BCD码、十六进制数的说明非组合BCD码uuuu1多位十进制数加法
.modelsmall.datadata1db11h,22h,33h,44h,00hdata2db99h,88h,77h,66h,00h.code.startupmovsi,offsetdata1;设指针movdi,offsetdata2 clc ;清进位 movcx,5 ;设加法次数lop: moval,[si] ;取第一加数 adcal,[di] ;取第二加数 daa ;十进制调整 mov[di],al;结果存入指定单元 incsi ;指针加1incdi looplop ;循环.exitend
流程图:开始SIData1首址DIData2首址清进位设加法次数十进制调整;部分和回送指向下单元数AL第一加数ALAL+第二加数CX-1=0?结束YN71a多位十进制数加法.modelsmall流两位十进制数乘法.modelsmall.586.data data1db34h data2db56h data3dw1dup(?).code.startupmovbl,data1;第一乘数转换成16进制数movbh,blandbh,0fhandbl,0f0hmovcL,4shrbl,cLmoval,10mulbladdal,bhmovzxcx,al;置加法次数计数器
movbl,data2; 第二乘数做BCD加法,加第一乘数次 movax,0 clclop:addal,bl daa xchgah,al adcal,0 daa xchgah,al looplop movdata3,ax ;积送乘积存储单元 nop nop nop.exitend72a两位十进制数乘法.modelsmallmov两位十进制数乘法流程图:开始BL第一乘数BH第一乘数分离出第一乘数的“个位”分离出第一乘数的“十位”第一乘数的“十位”移到“个位”后,再乘10合成得到16进制的第一乘数CX16进制的第一乘数BCD码转换成16进制数11AX0清进位BL第二乘数第二乘数做加法次数十进制调整AL与AH内容交换ALAL+0+CF
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国智慧公园行业发展现状、市场前景、投资方向分析报告(智研咨询发布)
- 《时尚北京》杂志2023年第8期
- 第5课《黄河颂》【知识精研】统编版语文七年级下册
- Chapter 1 Buying snacks period 6【知识精研】二年级英语下学期(新思维小学英语)
- 《施工平面布置图》课件
- (高清版)JJF(皖) 204-2025 气体、粉尘、烟尘采样仪综合校准装置校准规范
- 《烧结过程及机理》课件
- 2025至2031年中国圆球形状搅齿造粒机行业投资前景及策略咨询研究报告
- 2025至2031年中国ID水控机行业投资前景及策略咨询研究报告
- 2025至2030年中国铜铁插脚数据监测研究报告
- 有限公司事业合伙人管理办法
- 演示文稿国库集中支付总流程图
- 空调维保服务项目质量保障措施
- 火力发电厂水、汽试验方法(标准规程汇编)
- 伤寒论类方整理
- 八年级地理下期教学计划(星球地图版)
- GB/T 19675.2-2005管法兰用金属冲齿板柔性石墨复合垫片技术条件
- 蓝色科技风半导体产业PPT模板
- 院感手卫生培训课件
- 铸牢中华民族共同体意识学习PPT
- 多重耐药鲍曼不动杆菌治疗课件
评论
0/150
提交评论