微机实验思考题

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验一数据传送1、子程序Move中为什么比较SI、DI?源数据块与目标范围有可能部分重叠,需要考虑从第一个字节开始复制(顺序复制),还是从最后一个字节开始复制(倒序复制)。第一章源数据块与目标范围有可能部分重叠,需要考虑从第一个字节开始复制(顺序复制),还是从最后一个字节开始复制(倒序复制)。2、编写一个程序,将DS段中的数据传送到实验仪B4区的61C256中。说明:B4区的61C256在I/O设备区,使用IOR、IOW读写。实验二数制转换实验1.实验内容1中将一个五位十进制数转换为二进制数(十六位)时,这个十进制数最小可为多少,最大可为多少?为什么?最大65535(FFFF),最小为0.存储器只能存16位,即FFFF。2.将一个十六位二进制数转换为ASCII码十进制数时,如何确定Di的值?01223344D10D10D10D10DNDi:表示十进制数0~9将十六位二进制数转换为五位ASCII码表示的十进制数,就是求D1~D4,并将它们转换为ASCII码。该位除以10取商,加30H。即加30H为对应的ASCII码。3.在十六进制转换为ASCII码时,存转换结果后,为什么要把DX向右移四次?取出存入四位十六进制数的下一位。腾出空间。4.自编ASCII码转换十六进制、二进制转换BCD码的程序,并调试运行。ASCII码转换十六进制SSTACKSEGMENTSTACKDW64DUP(?)SSTACKENDSCODESEGMENTASSUMECS:CODESTART:MOVCX,0004HMOVDI,3500HMOVDX,[DI]A1:MOVAX,DXANDAX,00FFHCMPAL,40HJBA2SUBAL,07HA2:SUBAL,30HMOV[DI+0DH],ALDECDIPUSHCXMOVCL,08HSHRDX,CLPOPCXLOOPA1MOVAX,4C00HINT21HCODEENDS实验三运算类编程实验1.求累加和程序设计,在偏移地址为1000H开始依顺序填入16个字(16个16位数),利用程序求和,存放在偏移地址2000H;2.多字节加法程序设计,参考原程序,编写个两个64位数的减法程序,结果保存到具体内存单元,调试并记录。实验四分支程序设计实验1、将源数据首址改为3100H,目的数据地址改为310A,再加以验证(注意单步调试);2、将源数据首址改为310AH,目的数据地址改为3100,再加以验证(注意单步调试)。实验六排序程序设计实验1、注意两个循环是如何循环的,如果想减少判断次数,比如说几次交换后就不再有数据交换了,如何修改程序来减少程序执行时间;2、编一程序把3000H-3009H中内容按从大到小排列;如果是有符号数怎么改写程序。思考题2.编一程序把3000H-3009H的内容从大到小排列SSTACKSEGMENTSTACKDW64DUP(?)SSTACKENDSCODESEGMENTASSUMECS:CODESTART:MOVCX,000AHMOVSI,300AHMOVBL,0FFHA1:CMPBL,0FFHJNZA4MOVBL,00HDECCXJZA4PUSHSIPUSHCXA2:DECSIMOVAL,[SI]DECSICMPAL,[SI]JBA3XCHGAL,[SI]MOV[SI+01H],ALMOVBL,0FFHA3:INCSILOOPA2POPCXPOPSIJMPA1A4:MOVAX,4C00HINT21H;程序终止CODEENDSENDSTART思考题3.若是有符号数,该怎么处理(需要增加比较数字正负的环节)SSTACKSEGMENTSTACKDW64DUP(?)SSTACKENDSCODESEGMENTASSUMECS:CODESTART:MOVCX,000AHMOVSI,300AHMOVBL,0FFHA1:CMPBL,0FFHJNZA7MOVBL,00HDECCXJZA7PUSHSIPUSHCXA2:DECSIMOVAL,[SI]DECSIMOVAH,80HCMPAL,AHJBA3CMP[SI],AHJBA5CMPAL,[SI]JBA6JMPA5A3:CMP[SI],AHJBA4JMPA6A4:CMPAL,[SI]JBA5JMPA6A5:XCHGAL,[SI]MOV[SI+01H],ALMOVBL,0FFHA6:INCSILOOPA2POPCXPOPSIJMPA1A7:MOVAX,4C00HINT21H;程序终止CODEENDSENDSTARTENDSTART硬件一静态存储器扩展实验(接线只有一种)5.改变实验程序,按非规则字写存储器,观察实验结果。规则字是低位地址为奇数,否者是非规则字,非规则字读取需要两个周期,而规则字只需要一个周期在计算机中,一个字占两个字节。一个字在存储器中按字节存储,若高地址为偶数,低地址为奇数,则为规则字。相反,若高地址为奇数,低地址为偶数,则为非规则字。6.改变实验程序,按字节方式写存储器,观察实验现象。字节(Byte)是计算机信息技术用于计量存储容量和传输容量的一种计量单位,一个字节等于8位二进制数,在UTF-8编码中,一个英文字符等于一个字节7.将实验程序改为死循环程序,分别按规则字与非规则字的方式写存储器。5.改变实验程序,按非规则字写存储器,观察实验结果。SSTACKSEGMENTSTACKDW32DUP(?)SSTACKENDSCODESEGMENTSTARTPROCFAR;远过程名ASSUMECS:CODE;分配代码段csMOVAX,8000H;存储器扩展空间MOVDS,AX;数据段ds地址系统总线XA1XA15A0A14......XD0XD7D0D7......MWR#WRMRD#RDMY0CSSRAM单元XD8XD15D8D15......BLE#BLE#BHE#BHE#AA0:MOVSI,0001H;首地址8000:0001si是偏移地址,01非规则字MOVCX,0010H;cx计数寄存器10h十六进制=16十进制MOVAX,0000H;ax是累加器从0开始AA1:MOV[SI],AXINCAX;+1INCSI;+1INCSI;+1一个字si要+2LOOPAA1;cx不等于0则循环MOVAX,4C00HINT21H;程序终止STARTENDPCODEENDSENDSTART6.改变实验程序,按字节方式写存储器,观察实验现象。SSTACKSEGMENTSTACKDW32DUP(?)SSTACKENDSCODESEGMENTSTARTPROCFARASSUMECS:CODEMOVAX,8000H;存储器扩展空间段地址MOVDS,AXAA0:MOVSI,0000H;数据首地址cx计数16MOVCX,0010HMOVAX,0000HAA1:MOV[SI],AXINCAXINCSI;SI只加1一个字节LOOPAA1MOVAX,4C00HINT21H;程序终止STARTENDPCODEENDSENDSTART7.将实验程序改为死循环程序,分别按规则字与非规则字的方式写存储器。(1)规则字方式SSTACKSEGMENTSTACKDW32DUP(?)SSTACKENDSCODESEGMENTSTARTPROCFARASSUMECS:CODEMOVAX,8000H;存储器扩展空间段地址MOVDS,AXAA0:MOVSI,0000H;数据首地址(偶地址开始)MOVCX,0010HMOVAX,0000HAA1:MOV[SI],AXINCAXINCSIINCSILOOPAA1MOVAX,4C00HJMPAA0;跳转到AA0开始执行INT21H;程序终止STARTENDPCODEENDSENDSTART(2)非规则字方式SSTACKSEGMENTSTACKDW32DUP(?)SSTACKENDSCODESEGMENTSTARTPROCFARASSUMECS:CODEMOVAX,8000H;存储器扩展空间段地址MOVDS,AXAA0:MOVSI,0001H;数据首地址(奇地址开始)MOVCX,0010HMOVAX,0000HAA1:MOV[SI],AXINCAXINCSIINCSILOOPAA1MOVAX,4C00HJMPAA0;跳转到AA0开始执行INT21H;程序终止STARTENDPCODEENDSENDSTART硬件二8259中断控制实验1.在中断中完成BCD码转换为二进制数。将四个二位十进制数的BCD码存放于3500H起始的内存单元中,将转换的二进制数存入3510H起始的内存单元中,每次中断完成一个二位十进制数的BCD码转换。实验步骤:将四个二位十进制数的BCD码存入3500H~3507H中,即:先键入E3500,然后输入0102030405060708.运行程序,按一次单次脉冲开关KK1+,查看3510内容,应为0ch。再按一次单次脉冲开关KK1+,查看3511内容,应为22。继续发中断,依次查看3512,3513内容。在中断中完成BCD码转换为二进制数。.MODELTINYIO8259_0EQU0260H;EUQ等值赋值语句0260H????端口地址?IO8259_1EQU0261H.DATABUFFERDB8DUP(?)ReDisplayFlagDB0.STACK100.CODESTART:MOVAX,@DATAMOVDS,AX;ds整数段寄存器es附加段寄存器MOVES,AXPUSHDSCALLWriIntverCLI;中断标志置0cpu禁止响应可屏蔽中断INTRPOPDS;ds出栈后面为初始化8259;icw1初始化主片8259;icw指初始化命令字iow指方式设置命令字MOVDX,IO8259_0;0260H送入dxMOVAL,13H;13=00010011送入alOUTDX,AL;ICW1执行00010011即;写入偶地址标志位为1边沿触发单级使用需设置icw4MOVDX,IO8259_1;0261送入dxMOVAL,08H;08=00001000icw2写入奇地址尾三位指000即ir0;引入的中断引脚信号,终端类型码00001000查表8.1中断类信号为08H,中断源系统时钟OUTDX,AL;ICW2执行设置MOVAL,09H;09=00001001;写入1奇地址,000标志位1全嵌套方式00非缓冲方式18086配置OUTDX,AL;ICW4执行设置MOVAL,0;OCW1IMR各位置清0???OUTDX,AL;执行操作(p270页)??MOVSI,3500H;si源変址寄存器MOVDI,3510H;目的変址寄存器STI;中断标志置1允许cpu响应可屏蔽中断AA1:NOP;无操作JMPAA1WriIntverPROCNEAR;近过程名PUSHES;es入栈MOVAX,0;ax置0MOVES,AX;es置0MOVDI,20H;di目的変址寄存器??????????20H?????????LEAAX,MIR7;装入mir7的有效/偏移地址STOSW;将累加器al/ax中的一个字(w)送入附加断中以di为目的指针的串中,且;且di+-1或2MOVAX,CS;cs代码段寄存器????STOSWPOPES;当前sp栈顶出栈一个字送入目的操作数es,且sp+2RET;对于call调用的返回指令WriIntverENDP;本段短程序结束MIR7:STI;数制变换程序XORAX,AX;异或ax=0MOVAL,[SI];偏移地址si送入al即al=siADDAL,AL;al+al即al*2MOVBL,AL;al送入bl=2alADDAL,AL;al=4alADDAL,AL;al=8alADDAL,BL;al=8al+2al=10alINCSI;si+1ADDAL,[SI];al=10al+si+1=11si+1(11*1+1/11*3+1/11*5+1/11*7+1)MOV[DI],AL;al送入目的変址寄存器INCSI;si再加1(即总共加2)(1/3/5/70INCDI;di+1=al+1=10al+1MOVAL,20H;??????

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功