2022年微机原理及应用教材课后习题及答案 .pdf
《2022年微机原理及应用教材课后习题及答案 .pdf》由会员分享,可在线阅读,更多相关《2022年微机原理及应用教材课后习题及答案 .pdf(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、微机原理及应用习题答案第一章1.11 请完成下列数制转换:(1)将 174.66D 转换为对应的二进制和十六进制形式。(2)将 100011101011.01011B 转换为对应的十进制和十六进制形式。(3)将 F18A6.6H 转换为对应的二进制和十进制形式。答: 174.66D=10101110.1010B=AE.AH 100011101011.01011B=2283.34375D=8EB.58H F18A6.6H=989350.375D1.12 请写出与数据 +37 和-37 对应的 8 位机器数原码、反码和补码,并分别用二进制和十六进制表示出来。答: -37D=(10100101B)
2、原=(11011010B) 反=(11011011B)补1.13 8 位机器数46H,若作为无符号数和补码有符号数,其对应的真值各是什么?若作为 BCD 码和 ASCII 码,其对应的又是什么?答:无符号数46H=70 ,补码 46H=+70 BCD 码 46H=46,ASCII 码 46H= “F”第二章2.5 什么是 8088 中的逻辑地址和物理地址?逻辑地址如何转换成物理地址?1MB 最多能分成多少个逻辑段?请将如下逻辑地址用物理地址表达:(1)FFFFH:0H (2) 40H:17H (3) 2000H:4500H (4) B821H:4567H 答:FFFFH:0H = FFFF0H
3、 40H:17H = 00417H 2000H:4500H = 24500H B821H:4567H = BC777H 2.8已 知DS=2000H,BX=0100H,SI=0002,存 储 单 元 20100H20103H依 次 存 放12H,34H,56H,78H,21200H21203H依次存放2AH,4CH,87H,65H, 说明下列每条指令执行完后 AX 寄存器的内容以及源操作数的寻址方式?答:AX=1200H ,立即数寻址; AX=0100H ,寄存器寻址; AX=4C2AH ,直接寻址; AX=3412H ,寄存器间接寻址; AX=4C2AH ,寄存器相对寻址; AX=7865H
4、 ,基址变址寻址; AX=65B7H ,基址变址相对寻址。2.9 说明下面各条指令的具体错误原因:(1)mov cx,dl (2)mov ip,ax (3)mov es,1234h (4)mov es,ds (5) mov al,300 (6)mov sp,ax (7)mov ax,bx+di (8)mov 20h,ah 答:操作数类型不同;不能手工修改IP;不能将立即数直接MOV 到段寄存器;不能在段寄存器之间直接MOV 数据;300 大于 AL 所能存放的数据的范围;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整
5、理 - - - - - - - 第 1 页,共 22 页 - - - - - - - - - 寄存器间接寻址只能用BX/BP/SI/DI之一;MOV AX ,BX+DI ;目的操作数不能是立即数。2.10 已知数字09 对应的格雷码依次为:18H,34H,05H,06H,09H,0AH,0CH,11H,12H,14H,它存在于以table 为首地址 (设为 200H)的连续区域中。 请为如下程序段的每条指令加上注释,说明每条指令的功能和执行结果。lea bx, table mov al,8 xlat 答:lea bx, table ;bx=0200h mov al,8 ;al=08h xlat
6、 ;al=12h 2.11 给出下列各条指令执行后的AL 值,以及CF,ZF,SF,OF和 PF的状态:mov al,89h add al,al add al,9dh cmp al,0bch sub al,al dec al inc al 答:al=89h al=12h,CF=1,ZF=0,SF=0,OF=1,PF=1,AF=1 al=afh, CF=0,ZF=0,SF=1,OF=0,PF=1,AF=0 al=afh, CF=1,ZF=0,SF=1,OF=1,PF=1,AF=0 al=00h,CF=0,ZF=1,SF=0,OF=0,PF=1,AF=0 al=ffh , CF=0,ZF=0,SF
7、=1,OF=0,PF=1,AF=1 al=00h,CF=0,ZF=1,SF=0,OF=0,PF=1,AF=1 2.12 请分别用一条汇编语言指令完成如下功能:(1)把 BX 寄存器和DX 寄存器的内容相加,结果存入DX 寄存器。(2)用寄存器BX 和 SI 的基址变址寻址方式把存储器的一个字节与AL 寄存器的内容相加并把结果送到AL 中。用 BX 和位移量0B2H 的寄存器相对寻址方式把存储器中的一个字和 CX 寄存器的内容相加,并把结果送回存储器中。(4) 用位移量为0520H 的直接寻址方式把存储器中的一个字与数3412H 相加,并把结果送回该存储单元中。(5) 把数 0A0H 与 AL
8、寄存器的内容相加,并把结果送回AL 中。答: add dx, bx; add al,bx+si ; add bx+00b2h ,cx add word ptr 0520h ,3412h add al,0a0h 2.13 设 X,Y,Z,V 均为 16 位带符号数,分别装在X,Y,Z,V 存储器单元中,阅读如下程序段,得出它的运算公式,并说明运算结果存于何处。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 22 页 - - - - - - - - - mov ax,x im
9、ul y mov cx,ax mox bx,dx mov ax,z cwd add cx,ax adc bx,dx sub cx,540 abb bx,0 mov ax,v cwd sub ax,cx abb dx,bx idiv x 答: (V ( X * Y + Z 540 ) )/ X 2.14 给出下列各条指令执行后的结果,以及状态标志CF、OF、SF、ZF、PF的状态。mov ax,1470h and ax,ax or ax,ax xor ax,ax not ax test ax,0f0f0h 答:ax=1470h ax=1470h,CF=0,ZF=0,SF=0,OF=0,PF=0
10、ax=1470h,CF=0,ZF=0,SF=0,OF=0,PF=0 ax=0000h,CF=0,ZF=0,SF=0,OF=1,PF=1 ax=0ffffh , CF=0,ZF=0,SF=0,OF=1,PF=1 ax=0ffffh , CF=0,ZF=0,SF=1,OF=0,PF=12.16 假设 DS=2000H,BX=1256H ,TABLE 的偏移地址是20A1H ,物理地址 232F7H 处存放 3280H,试问执行下列段内间接寻址的转移指令后,转移的有效地址是什么?答:1256h; 3280h 2.17 判断下列程序段跳转的条件(1)xor ax,leleh je equal (2)t
11、est al,10000001b jnz there (3)cmp cx,64h jb there 答:ax=1e1eh; al=1*1b; cx64h 2.18 如下是一段软件延时程序,请问NOP 指令执行了多少次?xor cx,cx delay: nop loop delay 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 22 页 - - - - - - - - - 答: 65536 2.19 有一个首地址为array 的 20 个字的数组,说明下列程序段的功能。m
12、ov cx,20 mov ax,0 mov si,ax sumlp: add ax,arraysi add si,2 loop sumlp mov total,ax 答:将 array 数组的 20 个字 (无进位 )累加,其和存入total 单元。2.20 按照下列要求,编写相应的程序段:(1)由 string 指示的起始地址的主存单元中存放一个字符串(长度大于6) ,把该字符串的第 1 个和第 6 个字符(字节量)传送给DX 寄存器。(2)有两个 32 位数值,按 “小端方式” 存放在两个缓冲区buffer1 和 buffer2 中,编写程序段完成 DX.A Xbuffer1-buffer
13、2 功能。(3)编写一个程序段,在DX 高 4 位全为 0 时,使 AX=0; 否则,使 AX=-1 。(4)把 DX.AX中的双字右移4 位。(5)有一个 100 个字节元素的数组,其首地址为array,将每个元素减1(不考虑溢出或借位)存于原处。答: mov dl,string mov dh, string+5 mov ax,word ptr buffer1 sub ax, word ptr buffer2 mov dx, word ptr buffer1+2 sbb dx,buffer2+2 test dx, 0f0h je t1 mov ax,-1 jmp done t1: mov a
14、x,0 done: . mov ax,1234h mov dx, 5678h mov cx,4 lp1: shr dx,1 rcr ax,1 loop lp1 lea bx,array mov cx,100 lp1: sub bx ,1 inc bx 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 22 页 - - - - - - - - - loop lp1 2.25 编写一个程序段:先提示输入数字“Input Number:09 ”,然后在下一行显示输入的数字,结束;
15、如果不是键入了09 数字,就提示错误“Error! ” ,继续等待输入数字。答:.model small .stack 100h .data message db “ Input Number : 09”,0dh,0ah, “$” error db “ Error!”,0dh,0ah, “ $”.code .startup mov dx,offset message mov ah,09h int 21h begin1: mov ah,01h int 21h cmp al, “0”jb err1 cmp al, “ 9”ja err1 mov dl,al mov ah,02h int 21h .
16、exit err1: mov offset error mov ah,09h int 21h jmp begin1 end第三章311 请设置一个数据段,按照如下要求定义变量:(1)my1b 为字符串变量,表示字符串“Personal Computer” 。(2)my2b 为用十进制数表示的字节变量,这个数的大小为20。(3)my3b 为用十六进制数表示的字节变量,这个数的大小为20。(4)my4b 为用二进制数表示的字节变量,这个数的大小为20。(5)my5w 为 20 个未赋值的字变量。(6)my6c 为 100 的符号常量。(7)my7c 为字符串常量,代替字符串“Personal Co
17、mputer” 。答:my1b db “ Personal Computer”my2b db 20 my3b db 14h my4b db 00010100b 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 22 页 - - - - - - - - - my5w dw 20 dup(?) my6c equ 100 my7c equ 314 设在某个程序中有如下片段,请写出每条传送指令执行后寄存器AX 的内容:;数据段org 100h varw dw 1234h,5678h
18、 varb db 3,4 vard dd 12345678h buff db 10 dup(?) mess db hello;代码段mov ax,offset mess mov ax,type buff+type mess+type vard mov ax,sizeof varw+sizeof buff+sizeof mess mov ax,lengthof varw+lengthof vard 答:offset varb = 0104h offset mess = 0114h type buff = 1;type mess = 1;type vard = 4 sizeof varw = 4
19、; sizeof buff = 10 ;sizeof mess = 5 lengthof varw =2 ;lengthof vard = 1 315 假设 myword 是一个字变量,mybyte1 和 mybyte2 是两个字节变量,指出下列语句中的具体错误原因。 mov byte ptr bx,1000 (2) mov bx,offset mywordsi (3) cmp mybyte1, mybyte2 (4) mov mybyte1,al+1 (5) sub al,myword (6) jnz myword 答:1000 大于字节变量所能表示的范围mov byte ptr BX,5
20、表示的意思是把5 以字节的形式传送给DS:BX ,1000 超过了 0ffh,也就是大于1 个字节,所以无法传送会出现error A2050: Value out of range(值超出范围)数据类型不匹配,目的地址单元是字节单元,1000 大于 255。无法存放。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 22 页 - - - - - - - - - OFFSET 只能用于简单变量OFFSET 后只能跟标识符。双操作数不能同时为存储器操作数CMP 的两个操作数不能
21、同时在存储器中。数值表达式应为运算符加常量运算符只能对常数进行操作,不能对变量进行操作。两操作数类型不一致数据类型不匹配,AL 是 8 位的, MYWORD是 16 位变量。条件跳转只能是短跳转MYWORD是变量,其指的单元中存放的是操作数,不能用做跳转入口。317 已知用于 LED 数码管的显示代码表为:LEDtable db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h db 80h,90h,88h,83h,0c6h,0c1h,86h,8eh 它依次表示09,AF 这 16 个数码的显示代码。现编写一个程序实现将lednum 中的一个数字( 09、AF )转换成
22、对应的LED 显示代码。答:stack segment stack db 100h dup(?) stack ends data segment ledtable db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h db 80h,90h,88h,83h,0c6h,0c1h,86h,8eh lednum db 3 data ends code segment code assume cs:code,ss:stack,ds:data start: mov ax,data mov ds,ax lea bx,ledtable mov al,lednum xlat 名师资料总
23、结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 22 页 - - - - - - - - - mov ax,4c00h int 21h code ends end start 解析: stack 段是缺省的堆栈段时写成 stack segment para stackstack 比较简单省事儿,因为这样链接程序会自动设置 exe 可执行文件里初始堆栈指针,程序里就不用自己进行设置了。如果没有最后的那个 stack 说明项,就需要自己设置 ss:sp 。stack 是类别名。把我定义
24、的stack segment关联到栈,省去了assume ss:stack对么,所以我可以写成stack segment stack. 318 编制一个程序,把变量bufX 和 bufY 中较大者存入bufZ;若两者相等,则把其中之一存入 bufZ 中。假设变量存放的是8 位有符号数。答:data segment x db 13 y db -3 z db ? data ends stack segment stack db 100 dup(?) stack ends code segment code assume cs:code, ds:data, ss:stack start: mov a
25、x,data mov ds,ax mov al,x mov ah,y cmp al,ah jbe change mov z,ah jmp done change: mov z,al done: mov ax,4c00h int 21h code ends end start 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 22 页 - - - - - - - - - 319 设变量 bufX 为有符号数16 位数,请将它的符号状态保存在signX,即:如果变量值大于等于
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年微机原理及应用教材课后习题及答案 2022 微机 原理 应用 教材 课后 习题 答案
限制150内