南邮 微机原理(微型计算机与接口技术)第3章习题解答

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

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

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

资源描述

第3章习题解答3.5(1)方法1MOVAX,WORDPTRFIRSTMOVBX,WORDPTRSECONDMOVWORDPTRFIRST,BXMOVWORDPTRSECOND,AX注意:PTR用于临时修改属性,常用方法是在存储器操作数之前使用。例如:WORPTRFIRSTWORDPTR[BX]BYTEPTR[SI+BX]方法2:使用交换指令MOVAL,FIRSTXCHGAL,SECONDMOVFIRST,ALMOVAL,FIRST+1XCHGAL,SECOND+1MOVFIRST+1,AL注意:XCHG指令的两个操作数只能同为寄存器,或者寄存器和内存操作数,而不能同为内存操作数。(2)PUSHWORDPTRFIRST;堆栈只能16位操作PUSHWORDPTRSECONDPOPWORDPTRFIRSTPOPWORDPTRSECOND3.6先将10进制数转换成16进制数TABLEDW009EH,0102H,0166H,01CAH9EH00H02H01H66H01HCAH01HTABLE+0TABLE+1TABLE+2TABLE+3=6601HAXTABLE+4TABLE+5TABLE+6TABLE+73.7MOVEDX,0MOVEAX,1193182MOVEBX,433DIVEBXMOVXX,AX注意:使用双字除法,被除数默认在EDX和EAX中(EDX为高位),除数在另一个32位寄存器或存储器中,经除法操作后的商在EAX中,余数在EDX中。本题结果为2756,没有超过65536,所以EAX的高16位=0,而AX中的商即为正确结果。如果使用字除法,先将被除数转换成16进制数,然后放到DX和AX中,则商在AX中,余数在DX中。3.8SHLAH,4;左移4位ANDAL,0FH;屏蔽高4位ORAH,AL;完成拼装AHALAH拼装前拼装后CFCFD7D0ALBLRCRBL,1RCLAL,1每一位需连续执行两条移位指令,共需执行8次这样的两条指令。D7D03.9程序:MOVCL,8;移位次数=8L1:RCLAL,1;含进位的循环左移一位RCRBL,1;含进位的循环右移一位DECCL;移位次数有无达到8次JNZL1;有无达到8次,没有转L1MOVAL,BL;将结果传送到AL3.10第1小题的框图置源数据区指针置正数缓冲区指针置负数缓冲区指针置数据长度从源缓冲区取一个数=0吗?传送到正数缓冲区正数缓冲区指针加1传送到负数缓冲区负数缓冲区指针加1源数据区指针加1数据长度减1数据长度=0?停机YNYN是正数吗?YN程序:(1)DATASEGMENTBUFDB50DUP(?);原始数据PLUSDB50DUP(?);存放正数MINUSDB50DUP(?);存放负数DATAENDS程序:LEABX,BUF;数据指针LEASI,PLUS;正数指针LEADI,MINUS;负数指针MOVCX,50;数据长度=50S1:CMPBYTEPTR[BX],0;与0比较JZCOM;=0准备取下一个数判断JLM1;为负数转到M1处理MOVAL,[BX];取数MOV[SI],AL;将正数存入PLUS缓冲区INCSI;修改正数缓冲区地址指针JMPCOM;转到长度计数部分M1:MOVAL,[BX];取数MOV[DI],AL;将负数存入MINUS缓冲区INCDI;修改负数缓冲区地址指针COM:INCBX;修改源数据地址指针LOOPS1;数据长度减1,并判断HLT;结束(2)LEABX,BUFLEADI,NOT0MOVCX,50S1:MOVAL,[BX]ORAL,AL;建立标志JZZEROMOV[DI],ALINCDIZERO:INCBXLOOPS1HLT(3)LEABX,BUFMOVCX,50S1:MOVAL,[BX]ORAL,ALJNSP1;是正数直接转移NEGAL;是负数求其绝对值MOV[BX],ALP1:INCBX;修改地址LOOPS1HLT(4)MOVEAX,DWORDPTRBUFCMPEAX,0;与0比较JGEE1;大于等于0直接转E1NEGEAX;负数求补MOVDWORDPTRBUF,EAXE1:HLT或者写成:CMPDWORDPTRBUF,0JGEE1NEGDWORDPTRBUFE1:HLT3.13程序题目要求为:::源数据区(长度1K)目的数据区(长度1K)12345H12346H23456H23457H12744H23855H因为1K=1024=400H所以源缓冲区最后一个单元地址为:12345H+400H-1=12744H同理,目的缓冲区最后一个单元地址为:23456H+400H-1=23855H增量传送方向解:先将物理地址写成逻辑地址源逻辑地址为1000H:2345H目的逻辑地址为2000H:3456HMOVAX,1000H;设置DS段寄存器MOVDS,AXMOVAX,2000H;设置ES段寄存器MOVES,AXMOVSI,2345H;设置源偏移地址MOVDI,3456H;设置目的偏移地址MOVCX,1024;设置长度值CLD;设置地址为增量方向REPMOVSB;重复传送指令

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

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

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

×
保存成功