正在执行的程序的指令主要存放在如下程序片段后,CMP指令分别使得5个状态标志CF ZF SF OF PF为0还是1

〔习题2.2〕指出下列指令的错误

(1)两操作数类型不匹配

(2)IP指令指针禁止用户访问

(3)立即数不允许传给段寄存器

(4)段寄存器之间不允许传送

(5)两操作数类型不匹配

(6)目的操作数应为[ SI ]

(8)立即数不能作目的操作数


〔习题2.3〕已知数字0 ~ 9对应的格雷码依次为:18H、34H、05H、06H、09H、0AH、0CH、11H、12H、14H它存在于以table为首地址(設为200H)的连续区域中。请为如下程序段的每条指令加上注释说明每条指令的功能和正在执行的程序的指令主要存放在结果。
〔习题2.4〕什麼是堆栈它的工作原则是什么,它的基本操作有哪两个对应哪两种指令?

堆栈是一种按“先进后出”原则存取数据的存储区域位于堆栈段中,使用SS段寄存器记录其段地址;它的工作原则是先进后出;堆栈的两种基本操作是压栈和出栈对应的指令是PUSH和POP。


〔习题2.5〕已知SS = 2200H、SP = 00B0H画图说明正在执行的程序的指令主要存放在下面指令序列时,堆栈区和SP的内容如何变化

〔习题2.6〕给出下列各条指令正在执行的程序嘚指令主要存放在后AL值,以及CF、ZF、SF、OF和PF的状态:


〔习题2.7〕设X、Y、Z均为双字数据分别存放在地址为X、X+2;Y、Y+2;Z、Z+2的存储单元中,它们的运算結果存入W单元阅读如下程序段,给出运算公式
〔习题2.8〕请分别用一条汇编语言指令完成如下功能:

(1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器

(2)用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中

(3)用BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和CX寄存器的内容相加,并把结果送回存储器中

(4)用位移量为0520H的直接寻址方式把存储器中的一個字与数3412H相加,并把结果送回该存储单元中

(5)把数0A0H与AL寄存器的内容相加,并把结果送回AL中


〔习题2.9〕设X、Y、Z、V均为16位带符号数,分别裝在X、Y、Z、V存储单元中阅读如下程序段,得出它的运算公式并说明运算结果存于何处。
〔习题2.10〕指出下列指令的错误:

(1)xchg的操作数鈈能是立即数

(2)不应对CS直接赋值

(3)两个操作数不能都是存储单元

(4)堆栈的操作数不能是字节量

(5)adc的操作数不能是段寄存器

(6)没囿确定是字节还是字操作

(7)in不支持超过FFH的直接寻址

(8)out只能以AL/AX为源操作数


〔习题2.11〕给出下列各条指令正在执行的程序的指令主要存放在後的结果以及状态标志CF、OF、SF、ZF、PF的状态。

注意:MOV和NOT指令不影响标志位;其他逻辑指令使CF=OF=0根据结果影响其他标志位。


〔习题2.12〕假设唎题2.32的程序段中AX = 08H,BX = 10H请说明每条指令正在执行的程序的指令主要存放在后的结果和各个标志位的状态。

注意:逻辑左移N次相当于无符号整数乘以2的N次方逻辑右移N次相当于无符号整数除以2的N次方。移位指令根据移位的数据设置CF根据移位后的结果影响SF,ZFPF。在进行一位移位时根据最高符号位是否改变设置OF,如改变则OF=1另外,程序注释用“u”表示标志无定义(不确定)“-”表示无影响。


〔习题2.13〕编写程序段完成如下要求:

(1)用位操作指令实现AL(无符号数)乘以10

(2)用逻辑运算指令实现数字0 ~ 9的ASCII码与非压缩BCD码的互相转换

(3)把DX.AX中的双字祐移4位


〔习题2.14〕已知AL = F7H(表示有符号数-9)分别编写用SAR和IDIV指令实现的除以2的程序段,并说明各自正在执行的程序的指令主要存放在后所得嘚商是什么?

结论:符号数的除法用idiv 准确

〔习题2.15〕已知数据段500h ~600h处存放了一个字符串,说明下列程序段正在执行的程序的指令主要存放在後的结果:

〔习题2.16〕说明下列程序段的功能


〔习题2.17〕指令指针IP是通用寄存器还是专用寄存器有指令能够直接它赋值吗?哪类指令的正在執行的程序的指令主要存放在会改变它的值

指令指针IP不是通用寄存器,不可直接赋值属于专用寄存器。有且仅有循环、转移、子程序調用和返回、中断类等指令可以改变它的值


〔习题2.18〕控制转移类指令中有哪三种寻址方式?

控制转移类指令的寻址方式:相对寻址、直接寻址方式和间接寻址方式(又可以分成寄存器和存储器间接寻址)


〔习题2.19〕什么是短转移short jump、近转移near jump和远转移far jump?什么是段内转移和段间轉移8086有哪些指令可以实现段间转移?

短转移:指段内-128~127之间的转移位移量用一个字节表示

近转移:指段内±32K之间的转移,位移量用┅个字表示

远转移:指段间1MB范围的转移

段内转移:指在同一个代码段内的转移可以是短转移或者近转移

段间转移:指转移到另外一个代碼段,就是远转移


〔习题2.20〕8086的条件转移指令的转移范围有多大实际编程时,你如何处理超出范围的条件转移

8086的条件转移的转移范围:茬当前指令地址的 +127~-128之内。

如条件转移的转移范围超出此范围可在此范围内安排一条无条件转移,再转移到范围外的目标地址


〔习题2.22〕判断下列程序段跳转的条件

(2)AL的D0或D7至少有一位为1

(3)CX(无符号数)< 64h


〔习题2.23〕设置CX = 0,则LOOP指令将循环多少次例如:
〔习题2.24〕假设AX和SI存放的是有符号数,DX和DI存放的是无符号数请用比较指令和条件转移指令实现以下判断:

(4)若AX-SI产生溢出,转到overflow正在执行的程序的指令主偠存放在;

(4)若AX-SI产生溢出转到overflow正在执行的程序的指令主要存放在;


〔习题2.25〕有一个首地址为array的20个字的数组,说明下列程序段的功能

将首地址为array得20个字的数组求和,并将结果存入 total 单元中


〔习题2.26〕按照下列要求,编写相应的程序段:

(1)起始地址为string的主存单元中存放囿一个字符串(长度大于6)把该字符串中的第1个和第6个字符(字节量)传送给DX寄存器。

(2)从主存buffer开始的4个字节中保存了4个非压缩BCD码現按低(高)地址对低(高)位的原则,将它们合并到DX中

(3)编写一个程序段,在DX高4位全为0时使AX = 0;否则使AX = -1。

(4)有两个64位数值按“尛端方式”存放在两个缓冲区buffer1和buffer2中,编写程序段完成buffer1-buffer2功能

(5)假设从B800h : 0开始存放有100个16位无符号数,编程求它们的和并把32位的和保存在DX.AXΦ。

(6)已知字符串string包含有32KB内容将其中的’$’符号替换成空格。

(7)有一个100个字节元素的数组其首地址为array,将每个元素减1(不考虑溢絀)存于原处

(8)统计以 ’$’ 结尾的字符串srting的字符个数。

(6)解答1:不使用串操作指令(更好)

(6)解答2:使用串操作指令


〔习题2.27〕对丅面要求分别给出3种方法,每种方法只用一条指令
〔习题2.28〕参照本习题的示意图,分析调用序列画出每次调用及返回时的堆栈状态。其中CALL前是该指令所在的逻辑地址;另外段内直接调用指令的机器代码的字节数为3,段间直接调用指令则为5个字节

注:压栈时先修改sp洅压入断点,弹栈时先弹出断点再修改sp


〔习题2.29〕已知AX 、BX存放的是4位压缩BCD表示的十进制数,请说明如下子程序的功能和出口参数
〔习题2.30〕AAD指令是用于除法指令之前,进行非压缩BCD码调整的实际上,处理器的调整过程是:AL←AH×10+ALAH←0。如果指令系统没有AAD指令请用一个子程序完成这个调整工作。
〔习题2.31〕解释如下有关中断的概念:

(1) 内部中断和外部中断

(2) 单步中断和断点中断

(3) 除法错中断和溢出中断

(4) 中断向量号和中断向量表

(1)内部中断是由于8086CPU内部正在执行的程序的指令主要存放在程序引起的程序中断;外部中断是来自8086CPU之外的原洇引起的程序中断;

(2)单步中断是若单步标志TF为1则在每条指令正在执行的程序的指令主要存放在结束后产生的中断;断点中断是供调試程序使用的,它的中断类型号为3通常调试程序时把程序按程序的任务分成几段,然后每段设一个段点;

(3)除法错中断是在正在执荇的程序的指令主要存放在除法指令时,若除数为0或商超过了寄存器所能表达的范围产生的中断;溢出中断是在正在执行的程序的指令主偠存放在溢出中断指令INTO时若溢出标志OF为1时产生的中断;

(4)中断向量号是 中断类型号;中断向量表是中断向量号与它所对应的中断服务程序起始地址的转换表。


〔习题2.32〕试比较INT n和段间CALL指令、IRET和段间RET指令的功能

INT n 响应中断时,除象CALL保护断点外还应保护FR;段间CALL指令用在主程序中实现子程序的调用。IRET 返回时除象RET恢复断点外,还应恢复FR;子程序正在执行的程序的指令主要存放在完成后应返回主程序中继续正茬执行的程序的指令主要存放在,这一功能由RET指令完成


〔习题2.33〕什么是系统功能调用?汇编语言中它的一般格式是怎样的?

系统功能調用是用户在程序一级请示操作系统服务的一种手段它不是一条简单的硬指令,而是带有一定功能号的“访指令”它的功能并非由硬件直接提供,而是由操作系统操作系统中的一段程序完成的即由软件方法实现的

汇编语言中,它的一般格式是分如下四步进行:

(1)在AH寄存器置系统功能调用号;

(2)在指定的寄存器中设置 入口参数;

(3)用INT21H(或ROM—BIOS的中断向量号)指令正在执行的程序的指令主要存放在功能调鼡;

(4)据出口参数分析功能调用运行情况


〔习题2.34〕补充例2.40,当有溢出时显示“Error! Overflow!”无溢出时显示“OK”。
〔习题2.35〕补充例2.42显示“1”的個数;注意首先将个数转换为ASCII码。
〔习题2.36〕先提示输入数字“Input Number:0 ~ 9”然后在下一行显示输入的数字,结束;如果不是键入了0 ~ 9数字就提示錯误“Error!”,继续等待输入数字

终止程序正在执行的程序的指令主要存放在,返回DOS


〔习题2.37〕从键盘输入一个字符串(不超过255个)将其中嘚小写字母转换成大写字母,然后按原来的顺序在屏幕上显示

思路:参考P67 例2.52用0ah号DOS系统功能调用,从键盘输入一个字符串然后从键盘缓沖区逐个取字符,在“a”与“z”之间的字符为小写字母需要转换为大写字母(减去20h),其他不变

在a和z之间的字符才是小写字母,转换為大写


〔习题2.38〕指令对状态标志的作用可以分成多种情况例如无影响、无定义、按结果影响、特别说明的影响等,你能区别这些情况吗分别用具体的指令来说明。


〔习题2.39〕8086指令系统分成哪6个功能组各组主要包含什么指令,举例说明

8086指令系统分成的6个功能组是

①通用數据传送指令如传送指令MOV、交换指令XCHG、换码指令XLAT

②堆栈操作指令如进栈指令PUSH出栈指令POP

③标志传送指令如标志寄存器传送;标志位操作

④地址傳送指令如有效地址传送指令LEA、指针传送指令LDS指针传送指令LES

⑤输入输出指令如输入指令IN、输出指令OUT

①加法指令如加法指令ADD、带进位加法指囹ADC、增量指令INC

②减法指令如减法指令SUB、带借位指令SBB、减量指令DEC、求补指令NEG、比较指令CMP

③乘法指令如无符号乘法指令MUL、有符号乘法指令IMUL

④除法指令如无符号数除法指令DIV、有符号数除法指令IDIV

⑤符号扩展指令如字节转换字指令CBW、字转换字节指令CWD

⑥十进制调整指令如压缩BCD码调整指令、非压缩BCD码调整指令

①逻辑运算指令如逻辑指令AND、逻辑或指令OR、逻辑异或指令XOR、逻辑非指令NOT、测试指令TEST

②移位指令如逻辑移位指令SHL和SHR、算術移位指令SAL和SAR

③循环移位指令如不带移位指令XOL和ROR、带移位指令RCL和RCR

①无条件转移指令JMP

④子程序指令如子程序调用指令CALL、子程序返回指令RET

⑤中斷指令如INT N

⑥重复前缀指令REP;

(6)处理机控制类指令

②段超越前缀指令SEG

③封锁前缀指令LOCK


〔习题2.40〕总结8086指令系统所采用的各种寻址方式,包括一般的数据寻址、外设数据寻址、堆栈数据寻址、串操作数据寻址、转移指令目的地址的寻址等并举例说明。

5. 转移指令目的地址的寻址

直接寻址、间接寻址、相对寻址

}

第1章 微型计算机系统 ① 处理器每個单位时间可以处理的二进制数据位数称计算机字长 ② 总线信号分成三组,分别是数据总线、地址总线和控制总线 ③ PC机主存采用DRAM组成。 ④ 高速缓冲存储器Cache是处理器与主存之间速度很快但容量较小的存储器 ⑤ ROM-BIOS是“基本输入输出系统”,操作系统通过对BIOS的调用驱动各硬件設备用户也可以在应用程序中调用BIOS中的许多功能。 ⑥ 中断是CPU正常正在执行的程序的指令主要存放在程序的流程被某种原因打断、并暂时停止转向正在执行的程序的指令主要存放在事先安排好的一段处理程序,待该处理程序结束后仍返回被中断的指令继续正在执行的程序嘚指令主要存放在的过程 ⑦ 主板芯片组是主板的核心部件,它提供主板上的关键逻辑电路 ⑧ MASM是微软开发的宏汇编程序。 ⑨ 指令的处理過程处理器的“取指—译码—正在执行的程序的指令主要存放在周期” 是指处理器从主存储器读取指令(简称取指),翻译指令代码的功能(简称译码)然后正在执行的程序的指令主要存放在指令所规定的操作(简称正在执行的程序的指令主要存放在)的过程。 ⑩ 机器語言层即指令集结构。 (学生很多认为是:汇编语言层前4章主要涉及汇编语言,但本书还有很多处理器原理等内容) 〔习题1.3〕填空题 ① Central Processing Unit中央处理单元,处理器 ② CPU:CPU也称处理器是微机的核心。它采用大规模集成电路芯片芯片内集成了控制器、运算器和若干高速存储單元(即寄存器)。处理器及其支持电路构成了微机系统的控制中心对系统的各个部件进行统一的协调和控制。 存储器:存储器是存放程序和数据的部件 外部设备:外部设备是指可与微机进行交互的输入(Input)设备和输出(Output)设备,也称I/O设备I/O设备通过I/O接口与主机连接。 總线:互连各个部件的共用通道主要含数据总线、地址总线和控制总线信号。 〔习题1.5〕什么是通用微处理器、单片机(微控制器)、DSP芯爿、嵌入式系统 〔解答〕 通用微处理器:适合较广的应用领域的微处理器,例如装在PC机、笔记本电脑、工作站、服务器上的微处理器 單片机:是指通常用于控制领域的微处理器芯片,其内部除CPU外还集成了计算机的其他一些主要部件只需配上少量的外部电路和设备,就鈳以构成具体的应用系统 DSP芯片:称数字信号处理器,也是一种微控制器其更适合处理高速的数字信号,内部集成有高速乘法器能够進行快速乘法和加法运算。 嵌入式系统:利用微控制器、数字信号处理器或通用微处理器结合具体应用构成的控制系统。 〔习题1.7〕区别洳下概念:助记符、汇编语言、汇编语言程序和汇编程序 〔解答〕 助记符:人们采用便于记忆、并能描述指令功能的符号来表示机器指囹操作码,该符号称为指令助记符 汇编语言:用助记符表示的指令以及使用它们编写程序的规则就形成汇编语言。 汇编语言程序:用汇編语言书写的程序就是汇编语言程序或称汇编语言源程序。 汇编程序:汇编语言源程序要翻译成机器语言程序才可以由处理器正在执行嘚程序的指令主要存放在这个翻译的过程称为“汇编”,完成汇编工作的程序就是汇编程序(Assembler) 〔习题1.8〕区别如下概念:路径、绝对蕗径、相对路径、当前目录。系统磁盘上存在某个可正在执行的程序的指令主要存放在文件但在DOS环境输入其文件名却提示没有这个文件,是什么原因 〔解答〕 路径:操作系统以目录形式管理磁盘上的文件,文件所在的分区和目录就是该文件的路径 绝对路径:从根目录箌文件所在目录的完整路径称为“绝对路径”。是保证文件唯一性的标示方法 相对路径:从系统当前目录到文件所在目录的路径称为相對路径。 当前目录:用户当前所在的目录就是当前目录 指明的路径不正确,或者正在执行的程序的指令主要存放在了另外一个同名的文件 〔习题1.10〕冯·诺依曼计算机的基本设计思想是什么? 〔解答〕 采用二进制形式表示数据和指令指令由操作码和地址码组成。 将程序和數据存放在存储器中计算机在工作时从存储器取出指令加以正在执行的程序的指令主要存放在,自动完成计算任务这就是“存储程序”和“程序控制”(简称存储程序控制)的概念。 指令的正在执行的程序的指令主要存放在是顺序的即一般按照指令在存储器中存放的順序正在执行的程序的指令主要存放在,程序分支由转移指令实现 计算机由存储器、运算器、控制器、输入设备和输出设备五大基本部件组成,并规定了5部分的基本功能 〔习题1.11〕计算机系统通常划分为哪几个层次?普通计算机用户和软件开发人员对计算机系统的认识一樣吗 〔解答〕 最上层是用户层。 第5层是高级语言层 第4层是汇编语言层。 第3层是操作系统层 第2层是机器语言层。 第1层是控制层 第0层昰数字电路层。 普

}

我要回帖

更多关于 正在执行的程序的指令主要存放在 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信