8086汇编语言程序设计微机实验报告_第1页
8086汇编语言程序设计微机实验报告_第2页
8086汇编语言程序设计微机实验报告_第3页
8086汇编语言程序设计微机实验报告_第4页
8086汇编语言程序设计微机实验报告_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微 机 实 验 报 告微机试验报告第一局部:8086汇编语言程序设计一、试验目的80868086汇编语言程序的编写格式,DEBUG调试工具。二、试验题目DOS〔要求字符串从键盘上输入〕1、流程图-1---2-微 机 实 验 报 告2、试验程序及注释DATASEGMENTBUFSIZEDB20;数据段ACTCHARDB?;定义字符串CHARTEXTDB20DUP(?);给输入字符安排内存DB”$”CNTDB0;给计数器安排内存STRING1 DB”PLEASEINPUTTHESTRING:”,”$”STRING2 DB0AH,0DH,”INPUTTHEWORDYOUWANTTOCHECK:”,”$”STRING3 DB0AH,0DH,”THENUMBEROFTHEWORDIS:”,”$”DATAENDS ;数据段完毕COSEGSEGMENT ;代码段START:MOVAX,DATAMOVDS,AXMOVDX,OFFSETSTRING1;显示提示语:请输入字符串MOVAH,09HSTRING1INT21HMOVDX,OFFSETBUFSIZEBUFSIZEMOVAH,0AH;并送显INT21HMOVDX,OFFSETSTRING2;显示提示语:想查询的字符是MOVAH,09HSTRING2INT21HMOVAH,01HAL中并送显INT21HMOVBX,OFFSETCHARTEXTBXMOVCL,ACTCHARCX=字符串长度XORCH,CHLP1:CMPAL,[BX]AL比较JZ LP2LP2INCBX;指针指向字符串下一个字符DECCX;循环次数减一JNZLP1LP1JMPFINIFINILP2:INCCNT;计数器增一INCBX;指针指向字符串下一个字符DECCX;循环次数减一JNZLP1LP1FINI:MOVDX,OFFSETSTRING3;显示提示语:所查询的字符个数:MOVAH,09HINT21HMOVAL,CNTALAAMBCD码微 机 实 验 报 告ADDAH,30H BCDASCⅡ码MOVDL,AH ;高位送显MOVAH,02HINT21HMOVAL,CNT ALAAMADDAL,30H BCDASCⅡ码MOVDL,AL ;低位送显MOVAH,02HINT21HMOVAH,4CH ;完毕INT21HCOSEGENDS ;代码段完毕ENDSTART ;程序完毕3、运行结果PLEASEINPUTTHESTRING(先输入字符串):ASDFAAD↙INPUTTHEWORDYOUWANTTOCHECK(输入待查找字符A↙THENUMBEROFTHEWORDIS(数量为):3↙PLEASEINPUTTHESTRING(先输入字符串):ASDFAAD↙INPUTTHEWORDYOUWANTTOCHECK(输入待查找字符):9↙THENUMBEROFTHEWORDIS(数量为):0↙PLEASEINPUTTHESTRING(先输入字符串):ASDFAAD↙INPUTTHEWORDYOUWANTTOCHECK(输入待查找字符S↙THENUMBEROFTHEWORDIS(数量为):1↙4、程序改进1循环次数的改进原来的程序:MOVCX,1919次。改进后的程序:MOVCL,ACTCHARXORCH,CHCX=字符串长度,这样可以提高运行速度2LP1: CMPAL,[BX] ;将字符与字符串逐个比较JZ LP2 LP2INCBX ;指针指向字符串下一个字符DECCX ;循环次数减一CMPCX,0000H ;假设还有未比较的字符微 机 实 验 报 告JNZLP1 LP1JMPFINI ;假设全部比较完毕,跳转FINILP2: INCCNT ;计数器增一INCBX ;指针指向字符串下一个字符DECCX ;循环次数减一CMPCX,0000H ;假设还有未比较的字符JNZLP1 LP1改进缘由:DEC为自减一,假设减为0,它会自动影响其标志位ZF,所以不用把CX00HCX是否为零。〔CMPCX,0000〕LP1:CMPAL,[BX]AL比较JZ LP2LP2INCBX;指针指向字符串下一个字符DECCX;循环次数减一JNZLP1LP1JMPFINIFINILP2:INCCNT;计数器增一INCBX;指针指向字符串下一个字符DECCX;循环次数减一JNZLP1LP1〔二〕BCD16进制数显示出来。1流程图初始化初始化键入字符推断是否在09之间转化为十进制数将整数局部和余数局部转化为ASIIC码,并送显返回DOS2、试验程序及注释CODESEGMENTASSUMECS:CODESTART:CALLDECIBIN ;调用十进制转二进制子程序CALLCRLF ;调用添加回、换行符子程序CALLBINIHER ;调用二进制转十六进制并显示子程序CALLCRLF ;调用添加回、换行符子程序微 机 实 验 报 告MOVAH,4CHINT21HDECIBINPROCMOVBX,0;BX清零MOVCL,2BCD码NEW: MOVAH,1 ;DOS调用,键入字符并回显INT21HSUBAL,30H 09之间JLNEW1 NEW1CMPAL,9JGNEW1CBWXCHGAX,BXMOVCX,10MULCXXCHGAX,BXADDBX,AXPOPCXDECCLJNCNEWRETNEW1: PUSHCXMOVAH,3INT10HMOVAH,2DECDLINT10HPOPCXJMPNEWDECIBIN ENDPBINIHER PROCMOVCH,4RORATE:MOVCL,4ROLBX,CLMOVAL,BLANDAL,0FHADDAL,30HJLNEXTADDAL,7HNEXT: MOVDL,ALMOVAH,2INT21HDECCH

;左>右则转移;将一个字节转化为字;交换两个存放器之间的内容10CXAXAX;返回到原来调用指令的下一条指令;NEW10-9数字,光标才会移动;记录转换后的十六进制位数;利用CL当计数器,记录存放器数位移动次数16BXBLal;高四位清零;AL3AH转移ASCIIDL;DOS调用,显示字符;CH1微 机 实 验 报 告JNZRORATERETBINIHERENDPCRLFPROC ;实现换行功能MOVDL,0DHMOVAH,2INT21HMOVDL,0AHMOVAH,2INT21HRETCRLFENDPCODEENDSENDSTART3、运行结果输入数字 12↙此时屏幕显示 000C4、程序改进序,例如字母等等。改进后的程序:在推断是否是0-9后,参与跳转程序方法一:SUBAL,30H ;比较键入字符是否在0到9之间JLEXIT ;小于零,即不在范围内,就跳到EXITCMPAL,9DJGEXITEXIT: PROCNEAR ;返回DOSMOVAH,4CHINT21HEXIT1ENDP方法二:SUBAL,30H ;比较键入字符是否在0到9之间JLNEW1 NEW1CMPAL,9JGNEW1 ;左>右则转移NEW1: PUSHCX MOVAH,3 数字,光标才会移动INT10HMOVAH,2DECDLINT10HPOPCXJMPNEW一、试验目的

微 机 实 验 报 告其次局部:微机接口试验原理。二、试验题目〔一〕串行接口试验题目1、试验内容1ESC键〔27〕推DOS〔8250设成自收自发方式〕2、试验目的了解串行通讯的根本原理,把握串行接口芯片8250的工作原理和编程方法。3、流程图-7-微 机 实 验 报 告试验连线连线见下图,8250芯片插在40芯的通用插座上。CS 接2B8H-2BFH。试验程序及注释NAME8250DATASEGMENT ;定义数据段DIVIDDW0CH 9600波特率的除数DATAENDS ;数据段完毕STACK1SEGMENTPARASTACK ;定义栈DB100DUP(?) STACK1ENDSCODESEGMENT ;代码段ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACK1SUB1PROCFAR ;标准程序头START:PUSHDS ;8250初始化MOVAX,0 ;8位数据位,一个停顿位PUSHAXMOVAL,80H MOVDX,2BBHOUTDX,ALMOVAX,DIVID ;取除数MOVDX,2B8HOUTDX,AL ;写入除数低字节MOVAL,AHMOVDX,2B9HOUTDX,AL ;写入除数高字节MOVAL,0AHMOVDX,2BBH ;写入线路把握存放器OUTDX,ALMOVAL,13HMOVDX,2BCH MODEM把握存放器OUTDX,ALMOVAL,0MOVDX,2B9H ;写入中断允许存放器-8-微 机 实 验 报 告OUTDX,ALWAIT_FOR:MOVDX,2BDH ;读线路允许存放器INAL,DXTESTAL,1EH ;出错否JNZERRORTESTAL,1 ;接收数据就绪否JNZRECEIVE ;转接收TESTAL,20H ;发送器空否JZWAIT_FOR ;返回等待MOVAH,1INT16HJZWAIT_FORMOVAH,0INT16HMOVDX,2B8HOUTDX,ALJMPWAIT_FORRECEIVE:MOVDX,2B8HINAL,DXANDAL,7FHCMPAL,1BHJNZCHARMOVAX,4C00HINT21HCHAR: ADDAL,1PUSHAXMOVAH,14INT10HPOPAXCMPAL,0DHJNZWAIT_FORMOVAL,0AHMOVAH,14INT10HJMPWAIT_FORERROR: MOVDX,2B8HINAL,DXMOVAL,”?”MOVAH,1INT10HJMPWAIT_FORSUB1ENDPCODEENDSENDSTART

;读键盘;无按键返回等待;读按键;发送;返回等待;读承受数据7位数据ESC否DOS;加一送显;备查;显示承受字符;是否回车符;不是返回等待;是回车则加换行;出错则去除;显示’?’-9-微 机 实 验 报 告运行结果输入5 屏幕显示6输入A 屏幕显示B按下Esc键 返回将来汇编界面遇到问题及解决方法16,由于有:发送波特率=2MHZ÷除数存放器值÷1613〔M9600÷16=113〔0DH0。〔二〕并行接口试验题目题目一:编程实现从键盘上输入一个数字0-DOS。1、试验目的了解并行通讯的根本原理,把握并行接口芯片8255的工作原理和编程方法。2、七段数码管的字形代码表显示字形gefdcba段码001111113fh1000011006h210110115bh310011114fh4110011066h511011016dh611111017dh7000011107h811111117fh911011116fh3、试验连线S1接+5V,S0、dp接地,CS288H~28FH。-10-微 机 实 验 报 告4、流程图5、试验程序及注释DATASEGMENT ;数据段ENTERDB0AH,0DH,”$”MSG0 DB0AH,0DH,”PLEASEINPUTANUMBER(0--9):”,”$”DATAENDSSTACKSEGMENTPARASTACK ;栈区设置S1 DB40DUP(0) ;开拓一块栈区STACKENDSCODESEGMENT ;代码段ASSUMEDS:DATA,CS:CODESTART:MOVAX,DATA ;标准程序头MOVDS,AXMOVDX,028BHMOVAL,80HOUTDX,ALINPUT:MOVDX,OFFSETMSG0 ;显示提示语:请输入一个数字MOVAH,09H ;从键盘输入数字-11---12-微 机 实 验 报 告INT21HMOVAH,01H ;将数字送显INT21HCMPAL,30H 30H〔0〕作比较JCFINISH AL0〔ASCII48〕FINISHCMPAL,39H 39H〔9〕作比较JAFINISH 57〕FINISHCMPAL,30HJZZEROCMPAL,31HJZONECMPAL,32HJZTWOCMPAL,33HJZTHREECMPAL,34HJZFOURCMPAL,35HJZFIVECMPAL,36HJZSIXCMPAL,37HJZSEVENCMPAL,38HJZEIGHTJMPNINEZERO:MOVDX,0288HMOVAL,3FHOUTDX,ALJMPINPUTONE: MOVDX,0288HMOVAL,06HOUTDX,ALJMPINPUTTWO: MOVDX,0288HMOVAL,5BHOUTDX,ALJMPINPUTTHREE:MOVDX,0288HMOVAL,4FHOUTDX,ALJMPINPUT

AL0作比较ZEROAL1作比较ONEAL2作比较TWOAL3作比较THREEAL4作比较FOURAL5作比较FIVEAL6作比较SIXAL7作比较SEVENAL8作比较EIGHTNINE;存入输出口地址0的字型代码0,七段数码管显示INPUT;存入输出口地址1的字型代码1,七段数码管显示INPUT;存入输出口地址2的字型代码2,七段数码管显示INPUT;存入输出口地址3的字型代码3,七段数码管显示INPUT微 机 实 验 报 告FOUR:MOVDX,0288H;存入输出口地址MOVAL,66H4的字型代码OUTDX,AL4,七段数码管显示JMPINPUTINPUTFIVE:MOVDX,0288H;存入输出口地址MOVAL,6DH5的字型代码OUTDX,AL5,七段数码管显示JMPINPUTINPUTSIX:MOVDX,0288H;存入输出口地址MOVAL,7DH6的字型代码OUTDX,AL6,七段数码管显示JMPINPUTINPUTSEVEN:MOVDX,0288H ;存入输出口地址MOVAL,07H 7的字型代码OUTDX,AL 7,七段数码管显示JMPINPUT INPUTEIGHT:MOVDX,0288H ;存入输出口地址MOVAL,7FH 8的字型代码OUTDX,AL 8,七段数码管显示JMPINPUT INPUTNINE: MOVDX,0288H ;存入输出口地址MOVAL,6FH 9的字型代码OUTDX,AL 9,七段数码管显示JMPINPUT INPUTFINISH:MOVAH,4CH ;完毕INT21HCODEENDS ;代码段完毕ENDSTART ;程序完毕6、程序改进原来的程序:CMPAL,39H ;将AL和9作比较JZNINE NINE改进缘由:程序可以再简化改进后的程序:JMPNINE ;以上都不是跳转到NINE题目二:DOS。试验提示:十字路口交通灯的变化规律要求:30秒左右;30秒左右;1重复,到按下任意键完毕。微 机 实 验 报 告1、试验目的8255并行口的使用2、试验连线3、流程图参考流程图:-14---15-微 机 实 验 报 告开头开头8255C口输入,A口输出设置循环次数,置CL=5C口给PC01从A口输出,把握PA0灯亮灭延迟按上述方法分别给C口的PC1——PC71,是A8个灯挨次亮灭推断CL=0?返回DOS4、试验程序及注释;初始化程序STACK SEGMENTSTACK ;STACK段,定位类型无DW100DUP(0) STACK ENDS ;STACK段完毕DATA SEGMENT ;定义数据段DATA ENDS ;数据段完毕〔此程序可以不需定义数据段〕CODE SEGMENT ;定义代码段ASSUMECS:CODE,DS:DATASTART: MOVAL,10000000B 0,A口、B口、C口输出MOVDX,28BH ;送把握存放器的口地址OUTDX,AL ;送把握字MOVAL,10000100B ;C口输出,PC7=PC2=1,两红灯亮MOVDX,28AHOUTDX,ALMOVCX,1 ;循环次数=1CALLDELAY DELAY过程AGAIN:MOVAL,00100100B 东西路口红灯亮OUTDX,ALMOVCX,10 ;循环次数=10,长延迟CALLDELAY DELAY过程ANDAL,00001111B 微 机 实 验 报 告灭,东西路口红灯亮OUTDX,AL3次,东西路口红灯亮MOVBX,3 ;置黄灯闪的次数=3LP1: MOVAL,01000100B ;C口输出,PC6=1,PC2=1,南北路口黄灯亮,东西路口红灯亮OUTDX,ALMOVCX,1CALLDELAY DELAY过程ANDAL,10111111B ;C口输出,PC6=0,PC2=1,南北路口黄灯灭,东西路口红灯亮OUTDX,ALMOVCX,1CALLDELAY DELAY过程,延迟DECBXJNZLP1;南北路口红灯亮,东西路口绿灯亮MOVAL,10000001B ;C口输出,PC7=1,PC0=1,南北路口红灯亮,东西路口绿灯亮OUTDX,ALMOVCX,10 DELAY过程,长延迟CALLDELAYANDAL,11110000B ;C口输出,PC7=1,PC0=0,南北路口红灯亮,东西路口绿灯灭OUTDX,AL,东西路口黄灯闪3次LP2:MOVBX,3MOVAL,10000010B;置黄灯闪的次数=3,;C口输出,PC7=1,PC1=1,南北路口红灯亮,东西路口黄灯亮OUTDX,ALMOVCX,1DELAY过程,延迟CALLDELAYANDAL,11111101B;C口输出,PC7=1,PC1=0,南北路口红灯亮,东西路口黄灯灭OUT DX,ALMOV CX,1CALL DELAY DELAY过程,延迟DEC BXJNZ LP2微 机 实 验 报 告;检查键盘状态,有按键完毕,无按键循环执行MOV AH,0BH ;检查键盘状态〔不等待〕INT 21HCMP AL,00H ;比较,无按键循环JE AGAIN;返回DOCQUIT:MOVAL,00000000BMOVDX,28AHOUTDX,AL;C口输出,南北路口、东西路口全部灯全灭DEL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论