ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:26.31KB ,
资源ID:4033506      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-4033506.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微机原理接口四习题附标准答案Word文件下载.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

微机原理接口四习题附标准答案Word文件下载.docx

1、 A1 DD 2 DUP(7,1,?) A2 DB 10 DUP(0,4,3 DUP(2),5)09HARA1(0006H)00H11H?ARA2(000AH)460FFHARA3(0010H)ARA4(0016H)05H$9AHVAR2(0024H)56H41H(A)42H(B)题 4-7 图 CNT EQU 20H A3 DW 100 DUP(? DSEG ENDS请分别用分析运算符SEG、OFFSET、LENGTH、SIZE、TYPE求出A1、A2、A3的段基址、偏移量、类型及它们的LENGTH、SIZE。(SEG A1)=0300H,(OFFSET A1)=2000H,(TYPE A1

2、)=4,(LENGTH A1)=2,(SIZE A1)=24=8;(SEG A2)=0300H,(OFFSET A2)=2018H,(TYPE A2)=1,(LENGTH A2)=10,(SIZE A2)=101=60;(SEG A3)=0300H,(OFFSET A3)=2054H,(TYPE A3)=2,(LENGTH A3)=100,(SIZE A3)=1002=2006 已知符号定义语句如下: ALPHA EQU 100 BETA EQU 25 GAMMA EQU 2分别求下列各表达式的值。(1)ALPHA*4 GT BETA = 100*4 GT 25 = 0FFFFH(2)ALPH

3、A MOD GAMMABETA = 100 MOD 225 = 25(3)(BETA / 3)LE 5 =(25 / 3)LE 5 = 0(4)ALPHA AND BETA = 100 AND 25 = 64H & 19H = 0(5)GAMMA XOR(BETA EQ 25)= 2(25 EQ 25) = 0FFFDH7 已知数据段定义如下:DSEGSEGMENT ORG 6 ARA1 DD 110009HARA2 DW2 DUP(?),64CONT1EQU$-ARA2COUT2 EQU ARA2 -ARA1ARA3 DB CONT1 DUP(0FFH)ARA4 DB2 DUP(?, CON

4、T2 DUP(5), $ )ORG $+2VAR2 DW 569AH DB ABDSEGENDS用示意图说明该数据段的存贮单元分配情况。有关存储单元的内容如右图所示。8 下列程序是否有错?如有错,请改正。该程序完成什么功能?。DATA SEGMENT INBUF DW 100 DUP(? OUTBUF DW 100 DUP(? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA MAIN PROC FAR MOV AX,DATA MOV DS,AX INIT: MOV SI,OFFSET INBUF LEA DI,OUTBUF MOV CX,100 RE

5、P MOVSB MAIN ENDP CODE ENDS END MAIN改正之后的源程序清单如下(下划波浪线的语句是原来没有的或有错之处): DATA SEGMENT INBUF DW 100 DUP(? OUTBUF DW 100DUP(?DATA, ES:DATA ;原ASSUME语句未说明ESPUSH DS ; 补充的三条指令为主程序返回提供正确的地址XOR AX,AXPUSH AXMOV ES,AX ; MOVS指令以ES:DI为目的串指针,故应对ES赋值 LEA DI,OUTBUFCLD ; 从首址开始传送,应使DF=0 REP MOVSW ; 应传送的是100个字而非字节RET ;

6、 程序结束,返回DOS该程序完成的功能是:将INBUF表内的10个字数据复制到以OUTPUT开始的连续的内存单元中。9 读下面程序,在其中的空处添上适当内容。该程序完成了什么功能?程序运行后,变量RS的值是多少? BUF DB -13,24,5,-62,77,20,-7,145,0 CNT DB $ -BUF RS DB 0STACK SEGMENT PARA STACKSTACK DB 256 DUP(? STACK ENDS ASSUME DS:DATA,SS:STACK,CS:CODE START PROC FARPUSH DS MOV AX,0 PUSH AX LEA BX,BUF M

7、OV CH,0 MOV CL, LP: MOV AL,BX TEST AL,80H JE CONT INC RS CONT:INC BXLOOP LP RET START ENDP END START程序空处可填CNT,字节变量RS的最后结果是04H。该程序实现的功能是:统计数据段中以BUF为首址的带符号字节数据表中负数的个数,CNT为表中所有数据的个数,即表的长度。需要注意的是:十进制数据“145”在以二进制带符号字节数据形式存放时相当于“111”。10 编写一个完整的源程序,将数据35、-27、-13、6、-47、52、9、-3中的正数放入以BUFFER为首址的数据缓冲区中。一种可能的程序

8、如下实现: BLOCK DB 35,27,13,6,47,52,9,3 COUNT EQU $BLOCK BUFFER DB COUNT DUP(? STACK SEGMENT PARA STACKSTACK DW 40 DUP(?DATA,ES:STACK BEGIN: MOV AX,DATA MOV ES,AX ;需用STOS串操作指令 MOV CX,COUNT LEA SI,BLOCK ;源数据区指针 LEA DI,BUFFER ;正数存放区指针 CLD ;自动增量 AGAIN: LODSB ;取源数据,并修改SI TEST AL,80H ;取符号位,不影响AL JS GO ;符号位=1

9、,是负数,不存 STOSB ;存正数并修改DI GO: LOOP AGAIN MOV AH,4CH ;退出循环,返回DOS INT 21H END BEGIN11 已知有一个长100个字的数据块,存放在以3DA0H:1000H开始的存储区域内。试编写一个完整的汇编语言程序,将该数据块复制到以3DA0H:1008H开始的存储区内。DATA SEGMENT AT 3DA0H ORG 1000H BLOCKDW 104 DUP(? SSEG SEGMENTPARA STACKSSEG DB 100 DUP(? SSEG ENDSCODE,SS:SSEG,DS: PUSH DS MOV AX,SEG

10、BLOCK MOV ES,AX MOV CX,200 ;重复次数 LEA SI,BLOCK ADD SI,199 ;SI=10C7H MOV DI,SIADD DI,8 ;DI=10CFH STD ;自动减量 REP MOVSB简析:由题意可知,源数据区(占用地址3DA0:1000H3DA0:10C7H,共200个字节)与目标数据区(占用地址3DA0:1008H3DA0:10CFH,共200个字节)是重叠的。若从首址开始增量传送(DF=0),将破坏1008H以后的源数据,所以必须从末址向首址减量传送(DF=1)。数据段初始化时,有以下几点需注意:段基址规定为3DA0H,故应在段定义伪指令SEG

11、MENT后加上AT语句;源数据区首址的偏移量规定为1000H,故应使用ORG语句指明;对源、目标数据区进行定义时,应注意目标数据区首址的偏移量是1008H。如果定义为:ORG 1000H SOUR DW 100 DUP(?) ;源数据区 DEST DW 100 DUP(?目标数据区则目标数据区首址的偏移量实际上是10C8H,不合题意。可将它们统一定义为足够长度(至少104字或208字节)的变量,如参考程序所示。指针初始化时,可以将SI、DI分别置为10C7H、10CFH,且CX=200,即进行字节的传送,使用MOVSB;亦可将SI、DI分别置为10C6H、10CEH,且CX=100,即进行字的

12、传送,相应使用MOVSW。12 从内存单元BUF开始的缓冲区中有7个8位无符号数,依次为13H、0D8H、92H、2AH、66H、0E0H、3FH。编程找出它们的中间值并放入RES单元,且将结果以“(RES)=?”的格式显示在屏幕上。 BUF DB 13H,0D8H,92H,2AH,66H,0E0H,3FH RES DB ? ;中间数的存放单元 STR DB (RES)=STR1 DB ?,?,$ ;结果字符串 SSEG SEGMENT PARA STACKSSEG MAIN PROC FAR ;主程序 XOR AX,AX有STOS指令,需用ES MOV CX,6 ;外循环次数,比6次 AGN

13、: MOV SI,OFFSET BUF MOV DI,SI INC DI ;SI、DI指向相邻2数 MOV DX,6 ;内循环次数,比6次 AGN1: MOV AL,SI CMP AL,DI ;两个无符号数相比较 JB UNCH ;小于则转,不互换 EXCH: XCHG AL, DI ;前1单元较大,则互换 MOV SI ,AL ;大数放在后面 UNCH: INC SI ;修改指针,指向下一个数 INC DI DEC DX JNZ AGN1 ;未处理完,继续内循环 LOOP AGN ;外循环 DONE: MOV AL,SI3 ;排序完成,取中间数 MOV RES,AL AND AL,0F0H

14、;分离高半字节 MOV CL,4 SHR AL,CL CALL BATR ;调子程序,将AL值转换为ASCII码 LEA DI,STR1 ;DI指向结果单元 CLD存放转换结果 MOV AL,RES AND AL,0FH ;分离并转换低半字节 CALL BATR STOSB LEA DX,STR ;显示整个字符串 MOV AH,09H MAIN ENDP ;主程序MAIN结束 ;子程序BATR,实现16进制数到ASCII码的转换 BATR PROC NEAR CMP AL,10 ;入口参数为AL JB NUM ;是数字,则转NUM ADD AL,A100 ;字母 NUM:ADD AL,0 BA

15、TR ENDP ;子程序结束本例的基本思路是:先把7个无符号数按大小排序,排序完成之后取位于中间的一个数即为中间值。然后将该16进制数转换为两个对应的ASCII码,再与要求的格式字符一起输出送显即可。数据排序可以是从大到小、或从小到大排列,本参考程序完成从小到大排序,由一个双重循环结构实现。内循环完成一个数与其它数之间的一一比较,并使每次比较所得的小数置于低地址单元。外循环实现所有数之间的两两相较。共7个数据,故内、外循环中的比较次数均为6次。编程时需注意:无符号数比较大小应使用JA、JB、JAE、JBE指令,本例完成从小到大的排列,故用JB控制转移到UNCH;若要从大到小排列,则用JA代替J

16、B即可。对两个循环体进行初始化时,需仔细考虑指针和循环控制寄存器的初值。在数据段的定义中,分别定义STR、STR1两个变量名字,是为了便于在STR1处存放转换结果;显示时使DX直接指向STR,以STR1末尾的“$”为结束符。中间值找出之后,应把高、低半字节相分离,并分别转换为各所对应的ASCII码。13 设某测试系统中,1号端口为测试口,所得数据是09之间的十进制整数;2号端口为显示口,对应于数字09的LED七段共阴显示码依次为:3FH、06H、5BH、4FH、66H、6DH、3DH、07H、7FH、6FH。编写一段查表送显的程序,要求:先从测试口读入一个数据,再查表将相应的显示码从显示口送出

17、,如此反复进行直至读入数据“0FFH”为止。 TAB DB 3FH,06H,5BH,4FH,66HDB 6DH,3DH,07H,7FH,6FH ;09的七段码 DW 50 DUP(?STACK,DS: START: LEA BX,TAB ;BX指向表首址 NEXT: IN AL,1 ;从测试口输入 CMP AL,0FFH JE STOP ;是0FFH,结束 XLAT TAB ;不是0FFH,查表转换 OUT 2,AL ;向显示口输出七段码 JMP NEXT ;继续测试 STOP: MOV AH,4CH INT 21H14 编程实现以下操作:从键盘输入4个数字,分别作为2个1099之间的十进制数

18、。求它们的和,并把结果以三位十进制数的形式显示在屏幕上。要求:输入回显的两个加数与送显的和之间有适当的分隔,以示区别。格式可自行拟定。 NUM1 DB ? ;加数1,高位在前,以非组合BCD码存放 NUM2 DB ?加数2,高位在前,以非组合BCD码存放 SUM DB ?存放结果的ASCII码,以$为结束符 STACK SEGMENTPARA STACKSTACK FIRST: MOV AX,SEG NUM1自动增量,先输入高位 MOV CX,2 LEA DI,NUM1 ;输入加数1 IN1: MOV AH,1 ;DOS功能调用,单字符输入ASCII码转换为非组合BCD码LOOP IN1 MO

19、V DL, ;输出加号,以分隔2个加数 MOV AH,2 LEA DI,NUM2 ;输入加数2 IN2: MOV AH,01H AND AL,0FHLOOP IN2 MOV DL,=;输出等号,分隔加数与结果 MOV AH,02H LEA SI,NUM1 INC SI ;SI指向加数1的低位 LEA BX,NUM2 INC BX ;BX指向加数2的低位 LEA DI,SUM ADD DI,2 ;DI指向结果的末单元自动减量,由低向高相加 MOV CX,2 ;相加次数 CLC ;清进位,准备用ADC AD:取加数1的低位,修改SI ADC AL,BX ;2数相加,带进位 AAA ;未组合BCD码

20、的十进制调整PUSHF ADD AL,30H ;BCD码向ASCII码转换POPF;因未组合BCD码的高4位为0,故加30H不会影响CF存和,并修改DI。CF不变DEC BX ;指向加数2的高位。LOOP AD ADC BYTE PTR DI,30H ;高位相加若产生进位,则使SUM单元加1(表示百位),故使用ADC指令 LEA DX,SUM ;输出结果 MOV AH,4CH ;返回DOSCODE ENDS END FIRST按照本参考程序,屏幕显示格式如“7346=119”的样式。基本思路是:首先调用DOS功能,从键盘输入2个09之间的数字(字符串输入的AH调用号为10,单个字符输入的AH调用号为1),然后向CRT输出“”(单个字符输出的AH调用号为2);再由键盘输入2个数,然后输出“=”。将两次输入的数分别作为2个加数相加,得到的和经十进制调整后,向CRT输出(字符串输出的AH调用号为9)。以下几处需进行码制转换:调用单个字符输入功能后,AL中的出口参数为各数字键所对应的ASCII码,故应转换为BCD码才能进行加运算。转换方式:与0FH相与,所得为未组合BCD码。2个未组合BCD码相加,和应该用AAA指令

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2