〔习题1.1〕简答题
(1)计算机字长(Word)指的是什么? (2)总线信号分成哪三组信号?
(3)PC机主存采用DRAM组成还是SRAM组成? (6)中断是什么?
〔解答〕
① 处理器每个单位时间可以处理的二进制数据位数称计算机字长。 ② 总线信号分成三组,分别是数据总线、地址总线和控制总线。 ③ PC机主存采用DRAM组成。
⑥ 中断是CPU正常执行程序的流程被某种原因打断、并暂时停止,转向执行事先安排好的一段处理程序,待该处理程序结束后仍返回被中断的指令继续执行的过程。 〔习题1.2〕判断题
(3)8086的数据总线为16位,也就是说8086的数据总线的个数、或说条数、位数是16。 (4)微机主存只要使用RAM芯片就可以了。
(5)处理器并不直接连接外设,而是通过I/O接口电路与外设连接。 ( 〔解答〕
③ 对 〔习题1.3〕填空题
(2)Intel 8086支持___________容量主存空间,80486支持___________容量主存空间。
(3)二进制16位共有___________个编码组合,如果一位对应处理器一个地址信号,16位地址信号共能寻址___________容量主存空间。
〔解答〕
② 1MB,4GB ③ 216,64KB
〔习题1.4〕说明微型计算机系统的硬件组成及各部分作用。
〔解答〕
CPU:CPU也称处理器,是微机的核心。它采用大规模集成电路芯片,芯片内集成了控制器、运算器和若干高速存储单元(即寄存器)。处理器及其支持电路构成了微机系统的控制中心,对系统的各个部件进行统一的协调和控制。
存储器:存储器是存放程序和数据的部件。
外部设备:外部设备是指可与微机进行交互的输入(Input)设备和输出(Output)设备,也称I/O设备。I/O设备通过I/O接口与主机连接。
总线:互连各个部件的共用通道,主要含数据总线、地址总线和控制总线信号。 〔习题1.7〕区别如下概念:助记符、汇编语言、汇编语言程序和汇编程序。
〔解答〕
助记符:人们采用便于记忆、并能描述指令功能的符号来表示机器指令操作码,该符号称为指令助记符。
汇编语言:用助记符表示的指令以及使用它们编写程序的规则就形成汇编语言。 汇编语言程序:用汇编语言书写的程序就是汇编语言程序,或称汇编语言源程序。 汇编程序:汇编语言源程序要翻译成机器语言程序才可以由处理器执行。这个翻译的过程称为“汇编”,完成汇编工作的程序就是汇编程序(Assembler)。
④ 错
⑤ 对
第2章 处理器结构
〔习题2.1〕简答题
(1)ALU是什么?
(2)8086的取指为什么可以被称为指令预取?
(4)堆栈的存取原则是什么?
(5)标志寄存器主要保存哪方面的信息?
(6)执行了一条加法指令后,发现ZF=1,说明结果是什么?
① ALU是算术逻辑运算单元,负责处理器所能进行的各种运算,主要是算术运算和逻辑运算。
② 取指是指从主存取出指令代码通过总线传输到处理器内部指令寄存器的过程。8086分成总线接口单元和指令执行单元,可以独立操作。在执行单元执行一条指令的同时,总线接口单元可以读取下一条指令,等到执行时不需要进行取指了,所以称为预取。
④ 堆栈的存取原则是先进后出(也称为后进先出)操作方式存取数据。 ⑤ 标志寄存器主要保存反映指令执行结果和控制指令执行形式的有关状态。 ⑥ 执行了一条加法指令后,发现ZF=1,表明运算结果为0。 〔习题2.2〕判断题
(1)程序计数器PC或指令指针EIP寄存器属于通用寄存器。
(2)处理器的指令译码是将指令代码翻译成它代表的功能的过程,与数字电路的译码器是不同的概念。
(3)EAX也被称为累加器,因为它使用最频繁。
(4)处理器的传送指令MOV属于汇编语言的执行性语句。
(5)汇编语言的语句由明显的4部分组成,不需要分隔符区别。 址。 〔解答〕
① 错
② 对
③ 对
④ 对
⑤ 错
〔习题2.3〕填空题
(1)寄存器EDX是__________位的,其中低16位的名称是__________,还可以分成两个8位的寄存器,其中D8~D15部分可以用名称__________表示。
(3)逻辑地址由__________和__________两部分组成。代码段中下一条要执行的指令由CS和__________寄存器指示,后者在实地址模型中起作用的仅有__________寄存器部分。
(5)在实地址工作方式下,逻辑地址“7380H∶400H”表示的物理地址是__________,并且该段起始于__________物理地址。
(6)IA-32处理器有8个32位通用寄存器,其中EAX,__________,__________和EDX,可以分成16位和8位操作;还有另外4个是__________,__________,__________,和__________。
(10)用EBX做基地址指令,默认采用__________段寄存器指向的数据段;如果采用BP,EBP或SP,ESP作为基地址指针,默认使用__________段寄存器指向堆栈段。 〔解答〕
① 32,DX,DH
③ 段地址,偏移地址,EIP,IP
⑥ EBX,ECX,ESI,EDI,EBP,ESP ⑩ DS,SS
-2 -
〔习题2.4〕处理器内部具有哪3个基本部分?8086分为哪两大功能部件?其各自的主要功能是什么? 〔解答〕
处理器内部有ALU、寄存器和指令处理三个基本单元。 8086有两大功能部件:总线接口单元和执行单元。
总线接口单元:管理着8086与系统总线的接口,负责处理器对存储器和外设进行访问。8086所有对外操作必须通过BIU和这些总线进行。
执行单元EU:负责指令译码、数据运算和指令执行。 〔习题2.7〕举例说明CF和OF标志的差异。
〔解答〕
进位标志CF表示无符号数运算结果是否超出范围,超出范围后加上进位或借位,运算结果仍然正确;溢出标志OF表示有符号数运算结果是否超出范围,如果超出范围,运算结果已经不正确。
例1:3AH + 7CH=B6H
无符号数运算:58+124=182,范围内,无进位。 有符号数运算:58+124=182,范围外,有溢出。 例2:AAH + 7CH=①26H
无符号数运算:170+124=294,范围外,有进位。 有符号数运算:-86+124=28 ,范围内,无溢出。 〔习题2.8〕什么是8086中的逻辑地址和物理地址?逻辑地址如何转换成物理地址?请将如下逻辑地址用物理地址表达(均为十六进制形式):
① FFFF∶0 ② 40∶17 ③ 2000∶4500 ④ B821∶4567
〔解答〕
物理地址:在处理器地址总线上输出的地址称为物理地址。每个存储单元有一个唯一的物理地址。 逻辑地址:在处理器内部、程序员编程时采用逻辑地址,采用“段地址:偏移地址“形式。某个存储单元可以有多个逻辑地址,即处于不同起点的逻辑段中,但其物理地址是唯一的。
逻辑地址转换成物理地址:逻辑地址由处理器在输出之前转换为物理地址。将逻辑地址中的段地址左移二进制4位(对应16进制是一位,即乘以16),加上偏移地址就得到20位物理地址。
① FFFFH:0=FFFF0H ② 40H:17H=00417H
③ 2000H:4500H=24500H ④ B821H:4567H=BC777H 〔习题2.12〕汇编语句有哪两种,每个语句由哪4个部分组成?
〔解答〕
汇编语句有两种:执行性语句(处理器指令)、说明性语句(伪指令)。 每个语句有:标号、指令助记符、操作数或参数、注释4个部分组成。
〔习题2.13〕汇编语言程序的开发有哪4个步骤,分别利用什么程序完成、产生什么输出文件。 〔解答〕
汇编语言程序的开发有4个步骤:
编辑:用文本编辑器形成一个以ASM为扩展名的源程序文件。 汇编:用汇编程序将ASM文件转换为OBJ模块文件。
连接:用连接程序将一个或多个目标文件链接成一个EXE或COM可执行文件。 调试:用调试程序排除错误,生成正确的可执行文件。
-3 -
〔习题2.16〕说明下列指令中源操作数的寻址方式?假设VARD是一个双字变量。
(1)mov edx,1234h (2)mov edx,vard (3)mov edx,ebx (4)mov edx,[ebx]
(5)mov edx,[ebx+1234h] (6)mov edx,vard[ebx] (7)mov edx,[ebx+edi]
(8)mov edx,[ebx+edi+1234h] (9)mov edx,vard[esi+edi] (10)mov edx,[ebp*4] 〔解答〕
① 立即数 ② 直接 ③ 寄存器
④ 寄存器间接 ⑤ 寄存器相对 ⑥ 寄存器相对 ⑦ 基址变址
⑧ 相对基址变址 ⑨ 相对基址变址 ⑩ 带比例寻址
第3章 数据处理
〔习题3.1〕简答题
(4)数值500,能够作为字节变量的初值吗?
(5)为什么说“XCHG EDX,CX”是一条错误的指令?
(6)都是获取偏移地址,为什么指令“LEA EBX, [ESI]”正确,而指令“MOV EBX, OFFSET[ESI]”就错误?
(7)INC,DEC,NEG和NOT都是单操作数指令,这个操作数应该是源操作数还是目的操作数?
(9)乘除法运算针对无符号数和有符号数,有两种不同的指令。只有一种指令的加减法如何区别无符号数和有符号数运算?
(10)逻辑与运算为什么也称为逻辑乘? 〔解答〕
④ 不能。数值500大于一个字节所能表达的数据量,所以不能为字节变量赋值。 ⑤ 源、目标寄存器位数不同,不能用该指令进行数据交换。
⑥ 前者在指令执行时获得偏移地址,是正确的;但后者的OFFSET只能在汇编阶段获得偏移地址,但此时寄存器内容是不可知的,所以无法获得偏移地址。
⑦ INC,DEC,NEG和NOT指令的操作数既是源操作数也是目的操作数。
⑨ 加减法不区别无符号数和有符号数,但根据运算结果分别设置标志寄存器的CF和OF标志,可利用CF和OF进行区别。
⑩ 逻辑与运算规则类似二进制的乘法,所以称其为逻辑乘。
-4 -
〔习题3.2〕判断题
(2)常用的BCD码为8421 BCD码,其中的8表示D3位的权重。
(5)堆栈的操作原则是“先进后出”,所以堆栈段的数据除PUSH和POP指令外,不允许其他方法读写。
(6)虽然ADD指令和SUB指令执行后会影响标志状态,但执行前的标志并不影响它们的执行结果。 (7)指令“INC ECX”和“ADD ECX,1”的实现功能完全一样,可以互相替换。
(8)无符号数在前面加零扩展,数值不变;有符号数前面进行符号扩展,位数加长一位、数值增加一倍。
(9)逻辑运算没有进位或溢出问题,此时CF和OF没有作用,所以逻辑运算指令如AND、OR等将CF和OF设置为0。
(10)CMP指令是目的操作数减去源操作数,CMPS指令是源操作数减去目的操作数。 〔解答〕
② 对 〔习题3.3〕填空题
(1)定义字节变量的伪指令助记符是_____________,获取变量名所具有的偏移地址的操作符是_____________。
(4)数据段有语句“H8843 DWORD 99008843H”,代码段指令“MOV CX, WORD PTR H8843”执行后,CX=_____________。
(5)用DWORD定义的一个变量XYZ,它的类型是_____________,用“TYPE XYZ”会得到数值为_____________。如果将其以字量使用,应该用_____________说明。
(6)数据段有语句“ABC BYTE 1,2,3”,代码段指令“MOV CL, ABC+2”执行后,CL=_____________。 (7)例题3-9的TAB定义如果是“1234567890”,则显示结果是__________。 (8)指令“XOR EAX, EAX”和“SUB EAX, EAX”执行后,EAX=__________,CF=OF=__________。而指令“MOV EAX, 0”执行后,EAX=__________,CF和OF没有变化。
(9)例题3-15程序执行结束,变量QVAR内容是__________;BCD内容是__________。
(10)欲将EDX内的无符号数除以16,使用指令“SHR EDX, __________”,其中后一个操作数是一个立即数。
〔解答〕
① BYTE,OFFSET ④ 8843H
⑤ DWORD,4,WORD PTR XYZ ⑥ 3
⑦ 78894111 ⑧ 0,0,0
⑨ 0123456788765432H,83H ⑩ 4
〔习题3.20〕分别执行如下程序片断,说明每条指令的执行结果:
(1)
mov eax,80h add eax,3 add eax,80h adc eax,3 (2)
mov ax,64h add ax,c8h (3)
; EAX=__________
; EAX=__________,CF=__________,SF=__________ ; EAX=__________,CF=__________,OF=__________ ; EAX=__________,CF=__________,ZF=__________ ; EAX=__________
; EAX=__________,CF=__________
⑤ 错
⑥ 对
⑦ 错
⑧ 错
⑨ 对
⑩ 对
-5 -