1、习题1.6请画出PC/XT机主板的模块组成框图,并说明各部件的作用。习题1.7PC/XT机中的I/O通道所指是什么?它由多少个信号线组成?习题1.8所谓ROM-BIOS指的是什么?它的主要功能是什么? BIOS:基本输入输出系统 主要功能:用来驱动和管理诸如键盘、显示器、打印机、磁盘、时钟、串行通信接口等基本的输入输出设备习题1.9在DOS管理下,PC机的1MB内存空间是怎样分配使用的?习题1.10简述计算机中“数”和“码”的区别,计算机中常用的数制和码制各有哪些?习题1.11请完成下列数制转换: 将174.66D转换为对应的二进制和十六进制形式 将100011101011.01011B转换为
2、对应的十进制和十六进制形式 将F18A6.6H转换为对应的二进制和十进制形式习题1.12请写出与数据37和37对应的8位机器数原码、反码、补码和移码,并分别用二进制和十六进制表示出来。习题1.13请将上题中37和37的8位补码机器数分别扩充为16位和32位的形式,用十六进制表示出来。习题1.148位机器数46H,若作为无符号数和补码有符号数看待,其对应的真值各是什么?若作为BCD码和ASCII码看待,它代表的又各是什么? 无符号数:416670 补码有符号数:70(正数) BCD码:46 ASCII码:大写字母 F 习题1.15将两个用压缩BCD码表示的十进制数相加,可采用直接相加、然后进行二
3、-十进制调整来实现。以48+36=84(8和6相加后出现非法BCD码)和48+19=67(8和9相加后出现组间进位)为例,请考虑应如何加和如何调整才能得到正确结果。习题1.16插在PC/XT机I/O通道中的I/O插卡一般使用哪些地址线?在哪些系统资源的使用上,两块插卡有可能发生冲突?习题1.17请写出单精度浮点数128.25的机器数、并表示为十六进制数形式(可通过C语言中的union数据类型来加以验证)。习题1.18请分别写出数据50和50H所对应的BCD码,分别用二进制和十六进制数表示出来,并将它们和原始数据进行对比。习题1.19英文大小写字母“D”和“d”的ASCII码各是什么?“回车(C
4、R)”和“换行(LF)”的ASCII码各是什么?数码“0”、“空格(SP)”和“空操作(NUL)”的ASCII码各是什么?习题1.20已知汉字“中”的国标区位码为54 48,请问它的国标码和机内码各是什么?第2章微处理器指令系统习题2.1微处理器内部具有哪3个基本部分?8088分为哪两大功能部件?其各自的主要功能是什么?这种结构与8位CPU相比为什么能提高其性能?习题2.2说明8088的8个8位和8个16位通用寄存器各是什么?习题2.3什么是标志?状态标志和控制标志有什么区别?画出标志寄存器FLAGS,说明各个标志的位置和含义。习题2.4举例说明CF和OF标志的差异。习题2.5什么是8088中
5、的逻辑地址和物理地址?逻辑地址如何转换成物理地址?1MB最多能分成多少个逻辑段?请将如下逻辑地址用物理地址表达: FFFFH:0 40H:17H 2000H:4500H B821H:4567H 物理地址:物理存储单元具有的一个唯一的20位编号 逻辑地址:在8088内部和用户编程时,所采用的“段地址:偏移地址”形式 将逻辑地址中的段地址左移二进制4位(对应16进制是一位,即乘以16),加上偏移地址就得到20位物理地址 1MB最多能分成1MB16B22024216个逻辑段,因为每隔16个字节单元就可以开始一个逻辑段 FFFFH:0FFFF0H 40H:17H00417H 2000H:4500H24
6、500H B821H:4567HBC777H习题2.68088有哪4种逻辑段,各种逻辑段分别是什么用途?代码段(Code Segment)用来存放程序的指令序列。处理器利用CS : IP取得下一条要执行的指令堆栈段(Stack Segment)确定堆栈所在的主存区域。处理器利用SS : SP操作堆栈中的数据数据段(Data Segment)存放当前运行程序所用的数据。处理器利用DS : EA存取数据段中的数据附加段(Extra Segment)是附加的数据段,也用于数据的保存。处理器利用ES :习题2.7什么是有效地址EA?8088的操作数如果在主存中,有哪些寻址方式可以存取它?习题2.8已知
7、DS2000H、BX0100H、SI0002H,存储单元20100H20103H依次存放12H、34H、56H、78H,21200H21203H依次存放2AH、4CH、B7H、65H,说明下列每条指令执行完后AX寄存器的内容,以及源操作数的寻址方式? mov ax,1200h mov ax,bx mov ax,1200h mov ax,bx mov ax,bx+1100h mov ax,bx+si mov ax,bxsi+1100h mov ax,1200h ;AX1200H, 立即数寻址 mov ax,bx ; AX0100H, 寄存器寻址 mov ax,1200h ;AX4C2AH, 直接
8、寻址 mov ax,bx ;AX3412H, 寄存器间接寻址 mov ax,bx+1100h ;AX4C2AH, 寄存器相对寻址 mov ax,bx+si ;AX7856H, 基址变址寻址 mov ax,bxsi+1100h ;AX65B7H,相对基址变址寻址习题2.9说明下面各条指令的具体错误原因 mov cx,dl mov ip,ax mov es,1234h mov es,ds mov al,300 mov sp,ax mov ax,bx+di mov 20h,ah习题2.10已知数字09对应的格雷码依次为:18H、34H、05H、06H、09H、0AH、0CH、11H、12H、14H,
9、它存在于以table为首地址(设为200H)的连续区域中。请为如下程序段的每条指令加上注释,说明每条指令的功能和执行结果。 lea bx,table mov al,8 xlatlea bx,table ;获取table的首地址,BX200H mov al,8 ;传送欲转换的数字,AL8 xlat ;转换为格雷码,AL12H习题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 almov al,89h ;AL89H CF ZF SF OF
10、 PFadd al,al ;AL12H 1 0 0 1 1add al,9dh ;AL0AFH 0 0 1 0 1cmp al,0bch ;AL0AFH 1 0 1 0 1sub al,al ;AL00H 0 1 0 0 1dec al ;AL0FFH 0 0 1 0 1inc al ;习题2.12请分别用一条汇编语言指令完成如下功能: 把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器。 用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中。 用BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和CX寄存器的内容相加,并把结果送回存储器
11、中。 用位移量为0520H的直接寻址方式把存储器中的一个字与数3412H相加,并把结果送回该存储单元中。 把数0A0H与AL寄存器的内容相加,并把结果送回AL中 把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器 add dx,bx 用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中 add al,bx+si 用BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和CX寄存器的内容相加,并把结果送回存储器中 add bx+0b2h,cx 用位移量为0520H的直接寻址方式把存储器中的一个字与数3412H相加,并把结果送回该存储单元中 ad
12、d word ptr 0520h,3412h add al,0a0h习题2.13设X、Y、Z、V均为16位带符号数,分别装在X、Y、Z、V存储单元中,阅读如下程序段,得出它的运算公式,并说明运算结果存于何处。 mov ax,X imul Y mov cx,ax mox bx,dx mov ax,Z cwd add cx,ax adc bx,dx sub cx,540 sbb bx,0 mov ax,V sub ax,cx sbb dx,bx idiv X习题2.14给出下列各条指令执行后的结果,以及状态标志CF、OF、SF、ZF、PF的状态。 mov ax,1470h and ax,ax or
13、 ax,ax xor ax,ax not ax test ax,0f0f0hmov ax,1470h ;AX1470H CF ZF SF OF PFand ax,ax ; AX1470H 0 0 0 0 0or ax,ax ;AX1470H 0 0 0 0 0xor ax,ax ;AX0000H 0 1 0 0 1not ax ;AXFFFFH 0 1 0 0 1test ax,0f0f0h ;AXFFFFH 0 0 1 0 1习题2.15控制转移类指令中有哪三种寻址方式?习题2.16假设DS2000H、BX1256H、TABLE的偏移地址是20A1H,物理地址232F7H处存放3280H,试
14、问执行下列段内间接寻址的转移指令后,转移的有效地址是什么? JMP BX JMP TABLEBX习题2.17判断下列程序段跳转的条件 xor ax,1e1eh je equal test al,10000001b jnz there cmp cx,64h jb there xor ax,1e1eh je equal ;AX1e1eh(异或后为0) test al,10000001b jnz there ;AL的D0或D7至少有一位为1 cmp cx,64h jb there ;CX(无符号数) 64h习题2.18如下是一段软件延时程序,请问NOP指令执行了多少次? xor cx,cxdelay
15、: nop loop delay习题2.19有一个首地址为array的20个字的数组,说明下列程序段的功能。 mov cx,20 mov ax,0 mov si,axsumlp: add ax,arraysi add si,2 loop sumlp mov total,ax习题2.20按照下列要求,编写相应的程序段: 由string指示起始地址的主存单元中存放有一个字符串(长度大于6),把该字符串中的第1个和第6个字符(字节量)传送给DX寄存器。 有两个32位数值,按“小端方式”存放在两个缓冲区buffer1和buffer2中,编写程序段完成DX.AXbuffer1buffer2功能。 编写一
16、个程序段,在DX高4位全为0时,使AX0;否则使AX1。 把DX.AX中的双字右移4位 有一个100个字节元素的数组,其首地址为array,将每个元素减1(不考虑溢出或借位)存于原处。(1) mov dl,string1 mov dh,string6(2) mov ax, word ptr buffer1 sub ax, word ptr buffer2 ; 先减低16位 mov dx, word ptr buffer1+2 sbb dx, word ptr buffer2+2 后减高16位,需减低16位的借位(3) test dx,0f000h jz next mov ax,-1 jmp d
17、onenext:done: (4) mov cx,4again: shr dx,1 ; 右移一位,移出的低位进入CF标志 rcr ax,1 ; 将CF移进AX高位,同时实现AX右移 loop again ; 循环4次,实现4位右移(5) mov cx,100 mov bx,0 sub arraybx,1 inc bx loop again 习题2.21AAD指令是用于除法指令之前,进行非压缩BCD码调整的。实际上,处理器的调整过程是:ALAH10AL,AH0。如果指令系统没有AAD指令,请用一个子程序完成这个调整工作。aadp proc push bx shl ah,1 mov bl,ah a
18、dd bl,ah add al,bl mov ah,0 pop bx retaadp endp习题2.22什么是系统功能调用?汇编语言中,调用系统功能的一般步骤是什么?习题2.23DAA指令的调整操作是: 如果AL的低4位是AF,或者AF标志为1,则ALAL6,且使AF1; 如果AL的高4位是AF,或者CF标志为1,则ALAL60H,且使CF1;阅读如下子程序,说明其为什么能够实现AL低4位表示的一位16进制数转换成对应的ASCII码。并且将该程序加上在屏幕上显示的功能,编写成通用的子程序。htoasc proc and al,0fh add al,90h daa adc al,40hhtoa
19、sc endp push dx aad al,90h mov dl,al mov ah,2 int 21h ;显示个位数 pop dx习题2.24乘法的非压缩BCD码调整指令AAM执行的操作是:AHAL10的商,ALAL10的余数。利用AAM可以实现将AL中的100内数据转换为ASCII码,程序如下: xor ah,ah aam add ax,3030h利用这段程序,编写一个显示AL中数值(099)的子程序。dispasc proc push ax mov dl,ah显示十位数 pop axdispasc endp习题2.25编写一个程序段:先提示输入数字“Input Number:09”,然
20、后在下一行显示输入的数字,结束;如果不是键入了09数字,就提示错误“Error!”,继续等待输入数字。 ;数据段inmsg db Input Number:0 9,0dh,0ah,$ermsg db Error!,$代码段 mov dx,offset inmsg mov ah,9显示输入数字09 mov ah,1接受一个字符 cmp al,0 ;判断是否输入的是数字09 jb erdisp cmp al,9 ja erdisp显示输入的数字 jmp done ;结束erdisp: mov dx,offset ermsg显示输入错误 jmp again ;继续输入第3章汇编语言程序设计习题3.1
21、汇编语言有什么特点?习题3.2编写汇编语言源程序时,一般的组成原则是什么?习题3.3.MODEL伪指令是简化段定义源程序格式中必不可少的语句,它设计了哪7种存储模式,各用于创建什么性质的程序。习题3.4如何规定一个程序执行的开始位置,主程序执行结束应该如何返回DOS,源程序在何处停止汇编过程?习题3.5逻辑段具有哪些属性?习题3.6给出你采用一个源程序格式书写的例题3.1源程序。.model small .stack .datastring db Hello, Assembly !,0dh,0ah,$.code start: mov ax,data mov ds,ax mov dx,offse
22、t string mov ah,9 int 21h mov ax,4c00h end start习题3.7DOS支持哪两种可执行程序结构,编写这两种程序时需要注意什么?习题3.8举例说明等价“EQU”伪指令和等号“”伪指令的用途。习题3.9给出下列语句中,指令立即数(数值表达式)的值: mov al,23h AND 45h OR 67h mov ax,1234h/16+10h mov ax,23h SHL 4 mov al,a AND (NOT(a-A) mov ax,(76543 LT 32768) XOR 7654h习题3.10画图说明下列语句分配的存储空间及初始化的数据值: byte_v
23、ar db ABC,10,10h,EF,3 dup(-1,?,3 dup(4) word_var dw 10h,-5,3 dup(?)见微机原理wjyl习题题解1caogao .pptP24习题3.11请设置一个数据段,按照如下要求定义变量: my1b为字符串变量,表示字符串“Personal Computer” my2b为用十进制数表示的字节变量,这个数的大小为20 my3b为用十六进制数表示的字节变量,这个数的大小为20 my4b为用二进制数表示的字节变量,这个数的大小为20 my5w为20个未赋值的字变量 my6c为100的符号常量 my7c为字符串常量,代替字符串“Personal Computer”习题3.12希望控制变量或程序代码在段中的偏移地址,应该使用哪个伪指令?习题3.13 名字和标号有什么属性?习题3.14设在某个程序中有如下片段,请写出每条传送指令执行后寄存器AX的内容: org 100hvarw dw 1234h,5678hvarb db 3,4vard dd 12345678hbuff db 10 dup(?mess db hello mov ax,offset varb+off
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1