微机原理与接口技术(楼顺天第二版)第四章习题解答

合集下载

微机原理与接口技术(楼顺天)-第4章6

微机原理与接口技术(楼顺天)-第4章6
图4.9 缓冲区INX的结构
4.6.4 综合程序设计示例
但DI用于指定某个适当的位臵,根据LOOP指令的前三条指 令的交换操作,SI为缓冲区数据的首地址(第一次循环 时),而题目要求将数据由大到小排序,因此,找到的DI 位臵应该存放着最大值,第②空处的指令应该大于等于时 转移到B30的指令,再根据题目给出的是无符号数,所以, 第②空应该填入JAE B30指令。 程序段完整后,再仔细看一遍,是否能够完成题目给定的 任务。
4.6.4 综ቤተ መጻሕፍቲ ባይዱ程序设计示例
只有当高位字相等时,才需要比较低位字,因此根据以上 分析,可以确定各处填入的指令分别为:第①空填入JB; 第②空填入JA;第③空填入JBE;第④空填入JMP。 例4.23 编写子程序COMPT4DIV1,完成4字节(即双字)的 无符号数除以1字节。 解:设要完成的操作为A=P÷Q,其中Q为一个字节,P由4 个字节构成。将P的4个字节从高位到低位分别表示成P4、 P3、P2和P1,则 A P4 Q 2 20 P3 Q 216 P2 Q 28 P1 Q
4.6.4 综合程序设计示例
3. MOV BL,55H AND 0F0H指令执行后,(BL)的内容为: ① 55H ② 0F0H ③ 50H ④ 05H
解:答案依次为④④③。
例4.17 多项选择题 1.能使(AX)和CF同时清零的指令有 ①MOV AX,0 ②SUB AX,AX ③CMP AX,AX ④XOR AX,AX ⑤AND AX,AX 2.已有定义 DATA SEGMENT VAR1 DW 10 DUP(?) DATA ENDS 则源操作数为立即寻址的指令有: ①MOV AX,DATA ②MOV AX,VAR1 ③MOV AX,OFFSET VAR1 ④MOV AX,LENGTH VAR1 ⑤MOV AX,SIZE VAR1

微机原理与接口技术_楼顺天版_课后题答案

微机原理与接口技术_楼顺天版_课后题答案

微机原理与接口技术_楼顺天版_课后题答案本页仅作为文档封面,使用时可以删除This document is for reference only-rar21year.March微机原理与接口技术楼顺天周佳社编著科学出版社找了好久,终于在期末从老师那儿弄了一份,希望对大家有用!5章习题1.微处理器的外部结构表现为数量有限的输入输出引脚,它们构成了微处理器级总线。

2.微处理器级总线经过形成电路之后形成了系统级总线。

3.简述总线的定义及在计算机系统中采用标准化总线的优点。

答:总线是计算机系统中模块(或子系统)之间传输数据、地址和控制信号的公共通道,它是一组公用导线,是计算机系统的重要组成部分。

采用标准化总线的优点是:1)简化软、硬件设计。

2)简化系统结构。

3)易于系统扩展。

4)便于系统更新。

5)便于调试和维修。

4.在微型计算机应用系统中,按功能层次可以把总线分成哪几类。

答:在微型计算机应用系统中,按功能层次可以把总线分成:片内总线、元件级总线、系统总线和通信总线。

5.简述RESET信号的有效形式和系统复位后的启动地址。

答:RESET为系统复位信号,高电平有效,其有效信号至少要保持四个时钟周期,且复位信号上升沿要与CLK下降沿同步。

系统复位后的启动地址为0FFFF0H。

即:(CS)=0FFFFH,(IP)=0000H。

M/信号在访问存储器时为高电平,访问I/O端口时为低电6.8086 CPU的IO平。

7.在8086系统总线结构中,为什么要有地址锁存器?答:8086CPU有20条地址线和16条数据线,为了减少引脚,采用了分时复用,共占了20条引脚。

这20条引脚在总线周期的T1状态输出地址。

为了使地址信息在总线周期的其他T状态仍保持有效,总线控制逻辑必须有一个地址锁存器,把T1状态输出的20位地址信息进行锁存。

8. 根据传送信息的种类不同,系统总线分为 数据总线 、 地址总线 和 控制总线 。

9. 三态逻辑电路输出信号的三个状态是 高电平 、 低电平 和 高阻态 。

微机原理与接口技术(楼顺天)-第4章4

微机原理与接口技术(楼顺天)-第4章4

START:
4.4
循环程序设计技术
MOVE1: MOV AL,[SI] INC SI CMP AL,0FFH JZ MOVE2 MOV [DI],AL INC DI INC NUMBER MOVE2: LOOP MOVE1 MOVE_END: MOV AH,4CH INT 21H CODE ENDS END START
循环体
预置内循环次数 其他准备工作
循环减1计数 循环体 N 结果为0? Y 退出循环 (a) N 内循环减1计数
结果为0? Y 外循环减1计数
N
结果为0? Y 退出循环 (b)
图 4 - 3循环程序结构 (a) 单循环结构; (b) 双循环结构
在编写程序之前要对解决的问题进行分析: ① 首先确定程序采用循环结构完成数据搬家操作。 ② 定义数据单元。 ③ 按顺序将原数据逐一搬家(该步骤要求修改原数据 地址、 目的数据地址及搬家次数)。
比较对象,那么N个数需要比较N-1次。
根据循环程序的嵌套层数不同,可以将循环程序的结 构分成单循环、双循环和多重循环。上面介绍的例子是单 循环的结构,下面举例说明如何进行双重循环的程序设计 假设需要对无序表中的元素排序,冒泡排序是最常用的一
种方法。
设从地址ARRAY开始的内存缓冲区中有一个字数组, 要使该数据表中的N个元素按照从大到小的次序排列,用 冒泡算法显示的过程叙述如下: 从第一个数开始依次进行相邻两个数的比较, 即第一个 数与第二个数比较, 第二个数与第三个数比较 ……,比较时
4.4
循环程序设计技术
由于每次比较操作都在相邻两个单元进行,因此只需要一 个指针。汇编语言程序如下: N=100 ;设有100个数据 STACK SEGMENT STACK ‘STACK’ DW 100H DUP(?) TOP LABEL WORD STACK ENDS DATA SEGMENT DATABUF DW N DB N DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK

微机原理与接口技术(楼顺天)-第4章1

微机原理与接口技术(楼顺天)-第4章1

汇编语言程序设计基础
在实际应用中, 在实际应用中,每个段的定位类型 常选PARA PARA( 因为若选PAGE PAGE( 常选PARA(节)型.因为若选PAGE(页) 型,将会使相邻的段间有较大空间的浪 而选WORD BYTE型 WORD或 费;而选WORD或BYTE型,又很难做到使 一个段的偏移地址从0000H开始. 0000H开始 一个段的偏移地址从0000H开始.
汇编语言程序设计
起始和终止框 执行框 判断框 连接框 图4.1 流程图符号
汇编语言程序设计 根据流程图编写程序
编写程序是采用程序设计语言 来实现上面已确定的算法, 来实现上面已确定的算法,此过程 有些书上称为编码. 有些书上称为编码.本书所介绍的 是采用汇编语言编写程序. 是采用汇编语言编写程序.采用汇 编语言编写程序应注意以下几个问 题:
汇编语言程序设计基础
我们知道, CPU的地址空间是分段 我们知道,8086/8088 CPU的地址空间是分段 结构的,程序中出现的数据与代码以及程序中用到 结构的, 的堆栈都必须纳入某个段中.那么, 的堆栈都必须纳入某个段中.那么,如何告诉汇编 程序,源程序中的哪些内容属于数据段, 程序,源程序中的哪些内容属于数据段,哪些属于 代码段呢? 代码段呢?这自然是由汇编系统中提供的伪指令来 实现的. 实现的.下面我们首先介绍构成完整程序的有关伪 指令. 指令.
汇编语言程序设计基础 LABEL伪指令 BEL伪指令
格式: 格式: 名称 LABEL 类型 格式中的类型有BYTE,WORD,DWORD,结 格式中的类型有BYTE,WORD,DWORD, BYTE 构名,记录名,NEAR,FAR共 构名,记录名,NEAR,FAR共7种.前5种属于 变量的类型,后两种是属于标号的类型. 变量的类型,后两种是属于标号的类型.结 构和记录是由伪指令定义的两种数据类型( 构和记录是由伪指令定义的两种数据类型(关 于这两种数据类型的定义在此就不在叙述, 于这两种数据类型的定义在此就不在叙述, 请参阅有关资料). 请参阅有关资料).

微机原理习题答案1234章

微机原理习题答案1234章

微机原理与接口技术楼顺天周佳社编著科学出版社2006年习题解答因时间紧,习题解答由部分老师提供,还没有经过仔细校对,肯定有不少错误,请各位指正。

另外,习题有多种解法,答案不唯一,仅供参考。

第1章数制与码制1.将下列十进制数转换成二进制数:(1)58;(2)67.625; (3)5721;解:(1)58D = 0011 1010B(2)67.625D = 0100 0011.1010B(3)5721D = 0001 0110 0101 1001B2.将二进制数变换成十六进制数:(1)1001 0101B;(2)11 0100 1011B;(3)1111 1111 1111 1101B;(4)0100 0000 10101B;(5)0111 1111B;(6)0100 0000 0001B解:(1)1001 0101B = 95H(2)11 0100 1011B = 34BH(3)1111 1111 1111 1101B = FFFDH(4)0 1000 0001 0101B = 815H(5)0111 1111B = 7FH(6)0100 0000 0001B = 401H3.将十六进制数变换成二进制数和十进制数:(1)78H;(2)0A6H;(3)1000H;(4)0FFFFH解:(1)78H = 120D = 0111 1000B(2)0A6H = 166D = 1010 0110B(3)1000H = 4096D = 0001 0000 0000 0000H(4)0FFFFH = 65535D = 1111 1111 1111 1111B4.将下列十进制数转换成十六进制数:(1)39;(2)299.34375;(3)54.5625解:(1)39D = 27H(2)299.34375D = 12B.58H(3)54.5625D = 36.9H5.将下列二进制数转换成十进制数:(1)10110.101B;(2)10010010.001B;(3)11010.1101B解:(1)10110.101B = 22.625D(2)10010010.001B = 146.125D(3)11010.1101B = 26.8125D6.计算(按原进制运算):(1)10001101B+11010B;(2)10111B+11100101B;(3)1011110B-1110B;(4)124AH+78FH;(5)5673H+123H;(6)1000H-F5CH;解:(1)10100111B(2)11111100B(3)1010000B(4)19D9H(5)5796H(6)A4H7.已知a=1011B, b=11001B, c=100110B, 按二进制完成下列运算,并用十进制运算检查计算结果:(1)a+b; (2)c-a-b; (3)a×b; (4)c÷b解:a=1011B=11D b=11001B=25D c=100110B =38D(1)100100B = 36D(2)10B = 2D(3)1 0001 0011B=275D(4)1B 余1101B= 13D8.已知a=00111000B, b=11000111B, 计算下列逻辑运算:(1)a AND b; (2)a OR b; (3)a XOR b; (4)NOT a解:(1)00000000B(2)11111111B(3)11111111B(4)11000111B9.设机器字长为8位,写出下列各数的原码和补码:(1)+1010101B;(2)-1010101B;(3)+1111111B;(4)-1111111B;(5)+1000000B;(6)-1000000B解:(1)原01010101B 补01010101B(2)原11010101B 补10101011B(3)原01111111B 补01111111B(4)原11111111B 补10000001B(5)原01000000B 补01000000B(6)原11000000B 补11000000B10.写出下列十进制数的二进制补码表示(设机器字长为8位):(1)15;(2)-1;(3)117;(4)0;(4)-15;(5)127;(6)-128;(7)80解:(1)(00001111B)补(2)(11111111B)补(3)(01110101B)补(4)(00000000B)补(5)(11110001B)补(6)(01111111B)补(7)(10000000B)补(8)(01010000B)补11.设机器字长为8位,先将下列各数表示成二进制补码,然后按补码进行运算,并用十进制数运算进行检验:(1)87-73;(2)87+(-73);(3)87-(-73);(4)(-87)+73;(5)(-87)-73;(6)(-87)-(-73);解:(1)1110B=14D(2)00001110B 进位舍弃(3)10100000B=-96D 溢出(4)11110010B=-14D(5)01100000B=96D 溢出(6)11110010B=-14D12.已知a,b,c,d为二进制补码:a=00110010B, b=01001010B, c=11101001B, d=10111010B,计算:(1)a+b;(2)a+c;(3)c+b;(4)c+d;(5)a-b;(6)c-a;(7)d-c;(8)a+d-c解:(1)01111100B(2)00011011B(3)00110011B(4)10100011B(5)11101000B(6)10110111B(7)11010001B(8)11B13.设下列四组为8位二进制补码表示的十六进制数,计算a+b和a-b,并判断其结果是否溢出:(1)a=37H, b=57H; (2)a=0B7H, b=0D7H;(3)a=0F7H, b=0D7H; (4)a=37H, b=0C7H解:(1)a+b=8EH溢出,a-b=E0H未溢出(2)8EH未溢出,E0H未溢出(3)CEH未溢出,20H未溢出(4)FEH未溢出70H未溢出14.求下列组合BCD数的二进制和十六进制表示形式:(1)3251(2)12907(3)2006解:(1)0011 0010 0101 0001B = 3251H(2)0001 0010 1001 0111B = 12907H(3)0010 0000 0000 0110B = 2006H15.将下列算式中的十进制数表示成组合BCD码进行运算,并用加6/减6修正其结果:(1)38+42;(2)56+77;(3)99+88;(4)34+69;(5)38-42;(6)77-56;(7)15-76;(8)89-23解:(1) 0011 1000B + 0100 0010B = 0111 1010B 低BCD码位需要加6修正0111 1010B + 0000 0110B = 1000 0000B = 80BCD(2) 0101 0110B + 0111 0111B = 1100 1101B 高、低BCD码位都需要加6修正1100 1101B + 0110 0110B = 0001 0011 0011B=133BCD(3) 1001 1001B+1000 1000B = 0001 0010 0001B 高、低BCD码位都需要加6修正0001 0010 0001B +0110 0110B = 0001 1000 0111B=187BCD(4) 0011 0100B + 0110 1001B = 1001 1101B 低BCD码位需要加6修正1001 1101B + 0000 0110B = 1010 0011B 修正结果使高BCD码位需要加6修正1010 0011B +0110 0000B = 0001 0000 0011B = 103BCD(5) 00111000B-01000010B =(-1)1111 0110B 高 BCD码位需要减6修正(-1)1111 0110B -0110 0000B =(-1)1001 0110B=-100+96=-4BCD(6)01110111B-01010110B = 0010 0001B = 21BCD(7) 00011001B-01110110B =(-1)1001 1111B 高、低BCD码位都需要减6修正(-1)1001 1111B -01100110B =(-1)0011 1001B = -100+39 = -61BCD(8)10001001B-00100011B = 0110 0110B = 66BCD16.将下列字符串表示成相应的ASCII码(用十六进制数表示):(1)Example 1;(2)XiDian University;(3)-108.652;(4)How are you?;(5)Computer(6)Internet Web解:(1)45H,78H,61H,6DH,70H,6CH,65H,20H,31H(2)58H,69H,44H,69H,61H,6EH,20H,55H,6EH,69H,76H,65H,72H,73H,69H,74H,79H (3)2DH,31H,30H,38H,2EH,36H,35H,32H(4)48H,6FH,77H,20H,61H72H,65H,20H79H,6FH,75H(5)43H,6FH,6DH,70H,75H,74H,65H,72H(6)49H,6EH,74H,65H72H,6EH,65H,74H,20H,57H,65H,62H17.将下列字符串表示成相应的ASCII码(用十六进制数表示):(1)Hello(2)123<CR>456;(注:<CR>表示回车)(3)ASCII;(4)The number is 2315解:(1)48H,65H,6CH,6CH,6FH (2)31H,32H,33H,0DH,34H,35H,36H (3)41H,53H,43H,49H,49H (4)54H,68H,65H,20H,6EH,75H,6DH,62H,65H,72H第2章 8086 CPU 结构与功能1. 微处理器内部结构由哪几部分组成?阐述各部分的主要功能。

(完整word版)微机原理和接口技术课后习题和参考答案解析

(完整word版)微机原理和接口技术课后习题和参考答案解析

第一章课后习题1.1 把下列十进制数转换成二进制数、八进制数、十六进制数。

① 16。

25 ② 35.75 ③ 123。

875 ④ 97/1281.2 把下列二进制数转换成十进制数。

① 10101.01 ② 11001。

0011 ③ 111。

01 ④ 1010.11。

3 把下列八进制数转换成十进制数和二进制数。

① 756.07 ② 63。

73 ③ 35.6 ④ 323。

451.4 把下列十六进制数转换成十进制数。

① A7。

8 ② 9AD.BD ③ B7C。

8D ④ 1EC1。

5 求下列带符号十进制数的8位补码。

① +127 ② -1 ③ -0 ④ -1281.6 求下列带符号十进制数的16位补码。

① +355 ② -11.7 计算机分那几类?各有什么特点?1.8 简述微处理器、微计算机及微计算机系统三个术语的内涵。

1。

9 80X86微处理器有几代?各代的名称是什么?1。

10 你知道现在的微型机可以配备哪些外部设备?1。

11 微型机的运算速度与CPU的工作频率有关吗?1。

12 字长与计算机的什么性能有关?习题一参考答案1.1 ① 16。

25D=10000。

01B=20.2Q=10.4H② 35.75D=100011。

11B=43.6Q=23.CH③ 123。

875D=1111011。

111B=173.7Q=7B。

EH④ 97/128D=64/123+32/128+1/128=0。

1100001B=0。

604Q=0。

C2H1.2 ① 10101.01B=21.25D ② 11001.0011B=25。

1875D③ 111。

01B=7。

25D ④ 1010。

1B=10。

5D1。

3 ① 756.07Q=111101110.000111B=494.109D ② 63。

73Q=110011.111011B=51。

922D③ 35。

6Q=11101.110B=29。

75D ④ 323.45Q=11010011。

微机原理与接口技术课后习题答案

微机原理与接口技术课后习题答案

2-2 段寄存器 CS = 1200H,指令指针寄存器 IP = FF00H,此时指令的物理地址为多少? 指向这一物理地址的 CS 值和 IP 值是惟一的吗?
【解】 指令的物理地址 = 12000H + FF00H = 2lF00H
物理地址是 CPU 存取存储器所用的地址。逻辑地址是段和偏移形式的地址,即汇编语言程序中使用的存储器地址。物理地址可以对应于不同的逻辑地址,指向这一物理地址的 CS 值和 IP 值不是惟一的
端口A可工作于方式0,方式1,方式2;端口B可工作于方式0,方式1;端口C只可工作于方式0。
8-19 串行通讯与并行通讯的主要区别是什么?各有什么特点?
串行通信是在单条1位宽的导线上将二进制数的各位一位一位地按顺序分时传送。用于通信的线路少,因而在远距离通信时可以极大地降低成本,串行通信适合于远距离数据传送,也常用于速度要求不高的近距离数据传送。
第四章
4.4 4.7
第五章
5.4(什么是存储器访问的局部性?研究和讨论这一现象有什么意义?) 5.6(存储器体系为什么采用分级结构?主要用于解决存储器中存在的哪些问题?)没有整理答案啊......!
第六章
6.1(cpu与外设之间数据传输控制方式有哪几种?何为程序控制?他有哪两种基本方式?) 6.4(什么是接口?什么是端口?在8086|8088微机系统中,cpu如何实现端口寻址的?)
(5)MOV CX,LENGTH TABLEB ;(CX)=1]
7-1 什么是中断?简述一个中断的全过程。
解:所谓中断,是指在CPU执行程序的过程中,由于某些紧急事件发生,向CPU 提出申请,CPU停止当前正在执行的程序,转去执行处理紧急事件的程序,待处理完紧急事件后,再返回接着执行刚才被停止执行的原程序。

微机原理与接口技术(第二版)课后习题答案完整版

微机原理与接口技术(第二版)课后习题答案完整版

微机原理与接口技术(第二版)课后习题答案完整版标准化文件发布号:(9312-EUATWW-MWUB-WUNN-INNUL-DQQTY-习题11.什么是汇编语言,汇编程序,和机器语言答:机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。

汇编语言是面向及其的程序设计语言。

在汇编语言中,用助记符代替操作码,用地址符号或标号代替地址码。

这种用符号代替机器语言的二进制码,就把机器语言编程了汇编语言。

使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序。

2.微型计算机系统有哪些特点具有这些特点的根本原因是什么答:微型计算机的特点:功能强,可靠性高,价格低廉,适应性强、系统设计灵活,周期短、见效快,体积小、重量轻、耗电省,维护方便。

这些特点是由于微型计算机广泛采用了集成度相当高的器件和部件,建立在微细加工工艺基础之上。

3.微型计算机系统由哪些功能部件组成试说明“存储程序控制”的概念。

答:微型计算机系统的硬件主要由运算器、控制器、存储器、输入设备和输出设备组成。

“存储程序控制”的概念可简要地概括为以下几点:①计算机(指硬件)应由运算器、存储器、控制器和输入/输出设备五大基本部件组成。

②在计算机内部采用二进制来表示程序和数据。

③将编好的程序和原始数据事先存入存储器中,然后再启动计算机工作,使计算机在不需要人工干预的情况下,自动、高速的从存储器中取出指令加以执行,这就是存储程序的基本含义。

④五大部件以运算器为中心进行组织。

4.请说明微型计算机系统的工作过程。

答:微型计算机的基本工作过程是执行程序的过程,也就是CPU自动从程序存放的第1个存储单元起,逐步取出指令、分析指令,并根据指令规定的操作类型和操作对象,执行指令规定的相关操作。

如此重复,周而复始,直至执行完程序的所有指令,从而实现程序的基本功能。

5.试说明微处理器字长的意义。

答:微型机的字长是指由微处理器内部一次可以并行处理二进制代码的位数。

微机原理与接口技术 第4章课后作业答案

微机原理与接口技术 第4章课后作业答案

解:即当从输入接口03F8H读入的数据满足ⅹⅹⅹⅹ1ⅹ1ⅹB时可以从接口03FBH输入 数据。 LEA SI,DATA MOV CX,200 NEXT: MOV DX,03F8H WAIT: IN AL,DX AND AL,0AH ;判断b1和b3位是否同时为1 CMP AL,0AH JNZ WAIT ;b1和b3位同时为1则读数据,否则等待 MOV DX,03FBH IN AL,DX MOV [SI],AL INC SI LOOP NEXT HLT 4.12 画图说明下列语句分配的存储空间及初始化的数据值。 (1)DATA1 DB ‘BYTE’,12,12H,2 DUP(0,?,3) (2)DATA2 DW 4 DUP(0,1,2),?,-5,256H 解: (1) 存储空间分配情况如图(a)所示。 9 (2) 存储空间分配情况如图(b)所示。
6
4.7执行下列指令后,AX寄存器的内容是多少? TABLE DW 10,20,30,40,50 ENTRY DW 3 . . . MOV BX,OFFSET TABLE ADD BX,ENTRY MOV AX,[BX] 解:(AX)=1E00H 4.8 编写程序段,将STRING1中的最后20个字符移到STRING2中(顺序不变)。 解:首先确定STRING1中字符串的长度,因为字符串的定义要求以‘$’符号结尾, 可通过检测‘$’符确定出字符串的长度,设串长度为COUNT,则程序如下: LEA SI,STRING1 LEA DI,STRING2 ADD SI,COUNT-20 MOV CX,20偏移地址送寄存器SI,之后送SI的内容与DI的内容相加并将结果 送DI.指令执行后,(SI)=0017H;(DI)=(DI)+0017H. 4.3 试编写求两个无符号双子长数之和的程序. 两数分别在MEM1和MEM2单元中,和放 在SUM单元. 解: DSEG SEGMENT MEM1 DW 1122H,3344H MEM2 DW 5566H,7788H SUM DW 2 DUP(?) DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG START: MOV AX,DSEG MOV DS,AX LEA BX,MEM1 LEA SI,MEM2 LEA DI,SUM MOV CL,2 CLC AGAIN: MOV AX,[BX] 2

微机原理与接口技术(楼顺天)-第4章3

微机原理与接口技术(楼顺天)-第4章3
设计出解决不同问题的程序来。在汇编程序设计过程 中,首先对要解决的问题的过程进行具体的描述,这
也是编程的准备阶段, 对于较小的程序可以使用程序
流程图。
对于较大的程序可以采用模块化程序设 计方法。无论采用流程图还是模块化的 方法设计都要使用程序设计的基本程序 结构来表现出来。 基本的程序结构包括 顺序结构、分支结构、循环结构及子程 序结构。由于不同的问题可采用不同结 构设计,因此需要对各种结构形式有所 了解,才能找到解决某一问题的最佳程 序结构形式。
开始 准备部分
程序分支是通过有 条件和无条件转移指 令实现的,它们又与 上一次CPU操作所产 生的PSW中的标志位 有关,有条件指令与 标志位的关系可以参 见第三章的表3.6。
条件判断
Yes
No
程序段1 程序段2
其它部分 结束
单分支程序结构
4.3
多分支程序设计技术
在汇编语言程序设计中, 常常要使用多分支结构。 多
4.3 程序结构设计技术
程序如下: PROGRAM ;*************************** DATA SEGMENT DATA1 DW X1, X2, X3, ? DATA ENDS
;***************************
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
4.3 分支程序设计技术
下列以示例方式,对分支程序的设计进行说明。
例4.2 字节型变量VAR1、VAR2和VAR3存放有3个无 符号数,将其中的内容按从大到小重新排列。
解:经重新排列后,VAR1的值最大,VAR3的值最
小。 由于变量中存放的数据为无符号数,因此应该采用JA、 JAE、JB、JBE等指令。

微机原理与接口技术(楼顺天第二版)第四章习题解答

微机原理与接口技术(楼顺天第二版)第四章习题解答

微机原理与接口技术(楼顺天第二版)习题解答第4章汇编语言程序设计4。

1、已知在BUF的起始处保存有N个字符的ASCII码,编写汇编语言程序实现,将这组字符串传送到缓冲区BUFR中,并且使字符串的顺序与原来的顺序相反。

答:BUF D B ”BONJOUR_BELLE"BUFR DB 100 DUP(?)MOV CX, NLEA SI, BUFLEA DI, BUFRADD DI,CXDEC DIL1:MOV AL,[SI]MOV [DI],ALINC SIDEC DILOOP L14。

2、利用移位、传送和相加指令实现AX的内容扩大10倍.答:将扩大后的结果放在DX:AX中,注意到10×AX=8×AX+2×AX。

XOR DX,DXSHL AX,1RCL DX,1MOV BX,AXMOV CX,DXSHL AX,1RCL DX, 1SHL AX, 1RCL DX, 1ADD AX, BXADC DX, CX4。

3、在缓冲区V AR中连续存放着3个16位的无符号数,编写程序实现将其按递增关系排列;如果V AR中保存的为有符号数,则再编写程序实现将其按递减关系排列。

答:V AR DW 1236,-432,3900XOR SI,,SIMOV AX,V AR[SI]CMP AX,V AR[SI+2]JAE L1XCHG AX,V AR[SI+2]L1:CMP AX, V AR[SI+4]JAE L2XCHG AX, V AR[SI+4]L2:MOV V AR[SI],AXMOV AX,V AR[SI+2]CMP AX,V AR[SI+4]JAE L3XCHG AX,V AR[SI+4]L3:MOV V AR[SI+2], AX4。

4、编写程序段实现将AL和BL中的每一位依次交叉,得到的16位字保存在DX中,例如(AL)=01100101B,(BL)=11011010B,则得到的(DX)=10110110 10011001B。

(完整word版)《微机原理及接口技术》(第2版)—习题解答

(完整word版)《微机原理及接口技术》(第2版)—习题解答

《16/32位微机原理、汇编语言及接口技术·第2版》习题解答第1章微处理器指令系统〔习题1.1〕微型计算机到目前为止已发展了几代?给出各代微机的特点和典型的微处理器。

〔解答〕〔习题1.2〕什么是微型计算机?PC机、单片机和数字信号处理器的含义各是什么?〔解答〕⏹微型计算机:以大规模、超大规模集成电路为主要部件,以集成了计算机主要部件——控制器和运算器的微处理器为核心,所构造出的计算机系统⏹PC机:PC(Personal Computer)机就是面向个人单独使用的一类微机⏹单片机:用于控制的微处理器芯片,内部除CPU外还集成了计算机的其他一些主要部件,如:ROM、RAM、定时器、并行接口、串行接口,有的芯片还集成了A/D、D/A 转换电路等。

⏹数字信号处理器DSP:主要面向大流量数字信号的实时处理,在宿主系统中充当数据处理中心,在网络通信、多媒体应用等领域正得到越来越多的应用〔习题1.3〕微型计算机主要由哪些基本部件组成?各部件的主要功能是什么?〔解答〕CPU:存储器:外部设备:〔习题1.4〕什么是微机的系统总线?微机的总线结构为它带来了哪些好处?除电源和地线外,一般将总线分为哪3组信号?总线的使用特点是什么?〔解答〕⏹系统总线:传递信息的一组公用导线,CPU通过它们与存储器和I/O设备进行信息交换⏹好处:组态灵活、扩展方便⏹三组信号线:数据总线、地址总线和控制总线⏹其使用特点是:在某一时刻,只能由一个总线主控设备来控制系统总线,只能有一个发送者向总线发送信号;但可以有多个设备从总线上同时获得信号。

〔习题1.5〕简述微型计算机的两个主要应用方向及其应用特点。

〔解答〕⏹用于数值计算、数据处理及信息管理方向⏹采用通用微机,要求有较快的工作速度、较高的运算精度、较大的内存容量和较完备的输入输出设备,为用户提供方便友好的操作界面和简便快捷的维护、扩充手段。

⏹用于过程控制及嵌人应用方向⏹采用控制类微机,要求能抵抗各种干扰、适应现场的恶劣环境、确保长时间稳定地工作,要求其实时性要好、强调其体积要小、便携式应用强调其省电。

微机原理与接口技术(楼顺天编着)课后习题答案

微机原理与接口技术(楼顺天编着)课后习题答案

第3章8086CPU指令系统1.写出完成下列要求的变量定义语句:(1)在变量var1中保存6个字变量:4512H,4512,-1,100/3,10H,65530;(2)在变量var2中保存字符串:’BYTE’, ’word’, ’WORD’;(3)在缓冲区buf1中留出100个字节的存储空间;(4)在缓冲区buf2中,保存5个字节的55H,再保存10个字节的240,并将这一过程重复7次;(5)在变量var3中保存缓冲区buf1的长度;(6)在变量pointer中保存变量var1和缓冲区buf1的偏移地址。

解:var1 DW 4512H,4512,-1,100/3,10H,65530var2 DB ’BYTE’,’word’,’WORD’buf1 DB 100 DUP(?)buf2 DB 7 DUP(5 DUP(55H),10 DUP(240))var3 DB LENGTH buf1pointer DW var1,buf1 (或者pointer DW OFFSET var1,OFFSET buf1)2.设变量var1的逻辑地址为0100:0000,画出下列语句定义的变量的存储分配图:var1 DB 12,-12,20/6,4 DUP(0,55H)var2 DB ‘Assemble’var3 DW ‘AB’, ‘cd’, ‘E’var4 DW var2var5 DD var2解:3.指令正误判断,对正确指令写出源和目的操作数的寻址方式,对错误指令指出原因(设VAR1, VAR2为字变量, L1为标号):(1)MOV SI,100 (2)MOV BX,VAR1[SI](3)MOV AX, [BX] (4)MOV AL, [DX](5)MOV BP, AL (6)MOV VAR1, VAR2(7)MOV CS, AX (8)MOV DS, 0100H(9)MOV [BX][SI], 1 (10)MOV AX, VAR1+VAR2(11)ADD AX, LENGTH VAR1 (12)OR BL, TYPE VAR2(13)SUB [DI], 78H (14)MOVS VAR1, VAR2(15)PUSH 100H (16)POP CS(17)XCHG AX, ES (18)MOV DS, CS(19)JMP L1+5 (20)DIV AX, 10(21)SHL BL, 2 (22)MOV AL, 15+23(23)MUL CX (24)XCHG CL, [SI](25)ADC CS:[0100], AH (26)SBB VAR1-5,154解:(1)MOV SI,100 正确。

微机原理与接口技术 第四章 课后答案

微机原理与接口技术 第四章 课后答案

第四章参考答案1.设下列指令中的所有标识符均是类型属性为字的变量,请指出下列指令中哪些是非法的指令?错误的原因?⑴MOV BP,AL⑵MOV WORD_OP1,WORD_OP2⑶MOV SA VE_WODR,DS⑷MOV SP,SS:DA TA_WORD[BX][SI]⑸MOV [BX][SI],2解:(1)非法。

源操作数与目的操作数类型不符。

(2)合法。

(3)合法。

(4)合法。

(5)非法。

需说明操作数类型。

2.设V AR1和V AR2为字变量,LAB为标号,试指出下列指令的错误之处:⑴ADD V AR1,V AR2⑵SUB AL,V AR1⑶JMP LAB[SI]⑷JNZ V AR1⑸JMP NEAR LAB解:(1)两个操作数均为符号地址。

(2)两个操作数的类型不同。

(3)(4)(5)3.画图说明下列语句所分配的存储空间及初始化的数据值。

⑴BYTE_V AR DB ‘BYTE’,12,-12H,3 DUP(0,?,2 DUP(1,2),?)⑵WORD_V AR DW 5 DUP(0,1,2),?,-5 ‘BY’,’TE’,256H解:(1)(2)41H59H54H45H0CHF4H00H?01H02H01H02H00H?01H02H01H02H 00H 00H 00H 01H 00H 02H 00H 00H 00H 01H 00H 02H 00H 00H 00H 01H 00H 02H 00H 00H 00H 01H 00H 02H 00H 00H 00H 01H 00H 02H ??FBH FFH 59H 42H 45H 54H 56H 02H4.设程序中的数据定义如下:PARTNO DW ?PNAME DB 16 DUP(?)COUNT DD ?PLENTH EQU $-PARTNO问PLENTH的值为多少?它表示什么意义?解:PLENTH的值为22(16H)。

表示当前位置与PARTNO之间有22个字节空间。

微机原理与接口技术(楼顺天)-第4章5

微机原理与接口技术(楼顺天)-第4章5

4.5 子程序设计技术
PUSH CX PUSH DX MOV SI,[BP+4] 据区的首地址 XOR DX,DX XOR BX,BX XOR DI,DI MOV CX,[SI] PUSH CX ADD SI,2 CPTM1: MOV AX,[SI] ADD SI,2 CWD ADD BX,AX ;从堆栈中取出入口参数,即数
4.5 子程序设计技术
五、可再入性子程序
在执行子程序期间,CPU可能 会因为有中断请求而转向中断 服务子程序,如果在中断服务 程序中又调用了该子程序,这 样就形成了如图4.6 所示的情 况(①②③为执行流程),子 程序的一次调用还没有执行完 成,又调用了该子程序,如果 这两次调用都能够得到正确的 结果,则该子程序称为可再入 性子程序。
例4.9 编写子程序实现给缓冲区BUF中 的一组字符的ASCII码加上偶校验位。 解:每个字符的ASCII码只占用7位二进 制数,其最高位为0。我们可以根据这7 位二进制数中“1”的个数,给最高位加 上“0”或“1”,使得一个字节内容的 “1”个数为偶数,这称为偶检验。
4.5 子程序设计技术
设计的子程序(SETEVEN)用于对BUFFER中的字符ASCII 码加上偶检验位,其入口参数为:DI(缓冲区首地址,默 认为DS段),(CX)缓冲区长度;出口参数:无(实际上 是缓冲区的内容);用到的寄存器:无。 汇编语言程序如下: STACK SEGMENT STACK 'STACK' DW 100H DUP(?) TOP LABEL WORD STACK ENDS N=22 DATA SEGMENT BUFFER DB 'xidian university 2006' DATA ENDS CODE SEGMENT

微机原理与接口技术(楼顺天)-第4章

微机原理与接口技术(楼顺天)-第4章
4. 显示修改标志寄存器 利用R命令还可以修改个别标志位,例如输入:
RF 则会显示出当前的标志位状态“NV UP EI PL NZ NA PO NC - ”,并等待用户输入更改值, 当需要更改IF和CF时,可以直接输入 “DICY”,这时可以将IF位清0、CF位置1, 而且输入顺序可以不按标志位的次序。
汇编语言程序的调试可以借助于专门的调试工 具软件DEBUG来实现。
4.2 源程序的汇编、连接与调试
DEBUG提供了强大的调试功能,主要有: 显示、修改寄存器和内存单元的内容(R命令) 按指定地址运行程序(G命令) 设置断点并分段执行程序(G命令) 反汇编目标代码(U命令) 单(多)条跟踪执行(单步执行)(T、P命令) 直接输入汇编语句(A命令) 显示并修改内存单元的内容(D、E、F命令) 读磁盘扇区 读/写文件
标志位的符号含义
4.2 源程序的汇编、连接与调试
标志位名称
溢出标志(OF) 方向标志(DF) 中断允许标志(IF)
符号标志(SF) 零标志(ZF) 半进位标志(AF)
奇偶标志(PF) 进位标志(CF)
标志位为“1” 的符号 OV DN EI
标志位为“0” 的符号 NV UP DI
NG
PL
ZR
NZ
AC
4.2 源程序的汇编、连接与调试
8.内存单元内容的传送 在DEBUG下,利用M命令可以将一块区域的内容传送 到另一个位置,它常用的有两种格式: (1)M [Daddr:]Offset1 Offset2 Offset3
;表示将从地址1(Offset1)到地址2 (Offset2)的所有单元的内容传送到地址Offset3开 始的单元中,例如M100 200 300表示将DS:100H 到200H的所有单元传送到300H开始的单元中。 (2)M [Daddr:]Offset1 L length Offset2

微机原理与接口技术(第二版)课后习题答案完整版

微机原理与接口技术(第二版)课后习题答案完整版

习题11.什么是汇编说话,汇编程序,和机械说话?答:机械说话是用二进制代码暗示的盘算机能直接辨认和履行的一种机械指令的聚集.汇编说话是面向及其的程序设计说话.在汇编说话中,用助记符代替操纵码,用地址符号或标号代替地址码.这种用符号代替机械说话的二进制码,就把机械说话编程了汇编说话.运用汇编说话编写的程序,机械不克不及直接辨认,要由一种程序将汇编说话翻译成机械说话,这种起翻译感化的程序叫汇编程序.2.微型盘算机体系有哪些特色?具有这些特色的根起源基本因是什么?答:微型盘算机的特色:功效强,靠得住性高,价钱低廉,顺应性强.体系设计灵巧,周期短.奏效快,体积小.重量轻.耗电省,保护便利.这些特色是因为微型盘算机普遍采取了集成度相当高的器件和部件,树立在微细加工工艺基本之上.3.微型盘算机体系由哪些功效部件构成?试解释“存储程序掌握”的概念.答:微型盘算机体系的硬件重要由运算器.掌握器.存储器.输入装备和输出装备构成.“存储程序掌握”的概念可扼要地归纳综合为以下几点:①盘算机(指硬件)应由运算器.存储器.掌握器和输入/输出装备五大根本部件构成.②在盘算机内部采取二进制来暗示程序和数据.③将编好的程序和原始数据事先存入存储器中,然后再启动盘算机工作,使盘算机在不须要人工干涉的情形下,主动.高速的从存储器中掏出指令加以履行,这就是存储程序的根本寄义.④五大部件以运算器为中间进行组织.4.请解释微型盘算机体系的工作进程.答:微型盘算机的根本工作进程是履行程序的进程,也就是CPU主动从程序存放的第1个存储单元起,慢慢掏出指令.剖析指令,并根据指令划定的操纵类型和操纵对象,履行指令划定的相干操纵.如斯反复,周而复始,直至履行完程序的所有指令,从而实现程序的根本功效.5.试解释微处理器字长的意义.答:微型机的字长是指由微处理器内部一次可以并行处理二进制代码的位数.它决议着盘算机内部存放器.ALU和数据总线的位数,反应了一台盘算机的盘算精度,直接影响着机械的硬件范围和造价.盘算机的字长越大,其机能越优胜.在完成同样精度的运算时,字长较长的微处理器比字长较短的微处理器运算速度快.6.微机体系中采取的总线构造有几种类型?各有什么特色?答:微机主板经常运用总线有体系总线.I/O总线.ISA总线.IPCI 总线.AGP总线.IEEE1394总线.USB总线等类型.7.将下列十进制数转换成二进制数.八进制数.十六进制数.①()10=()2=()8=()16②()10=()2=()8=()16③()10=()2=()8=()168.将下列二进制数转换成十进制数.①()2=()10②()2=()10③()2=()109.将下列十进制数转换成8421BCD码.① 2006=(0010 0000 0000 0110)BCD② 123.456=(0001 0010 0011.0100 0101 0110)BCD10.求下列带符号十进制数的8位基2码补码.① [+127]补=01111111② [-1]补=11111111③ [-128]补=10000000④[+1]补=0000000111.求下列带符号十进制数的16位基2码补码.① [+655]补= 0000001010001111② [-1]补③ [-3212]补④[+100]补=0000000001100100习题 21.8086 CPU在内部构造上由哪几部分构成?各部分的功效是什么?答:8086 CPU内部由两大自力功效部件构成,分离是履行部件和总线接口部件.履行部件负责进行所有指令的解释和履行,同时治理有关的存放器.总线接口部件是CPU在存储器和I/O装备之间的接口部件,负责对全体引脚的操纵.2.简述8086 CPU的存放器组织.答:8086 CPU内部共有14个16位存放器,按用处可分为数据存放器,段存放器,地址指针与变址存放器和掌握存放器.数据存放器包含累加器,基址存放器,计数器,和数据存放器.段存放器用来存放各分段的逻辑段基值,并指导当前正在运用的4个逻辑段.地址指针与变址存放器一般用来存放主存地址的段内偏移地址,用于介入地址运算.掌握存放器包含指令存放器和标识存放器.3.试述8086 CPU标记存放器列位的寄义与感化.答:标记存放器是16位的存放器,但现实上8086只用到9位,个中的6位是状况标识位,3位是掌握标识位.状况标记位分离是CF,PF,AF,ZF,SF,和OF;掌握标记位包含DF,IF,TF.CF:进位标记位.算数运算指令履行后,若运算成果的最高位产生进位或借位,则CF=1,不然CF=0.PF:奇偶标记位.反响盘算成果中1的个数是偶数照样奇数.若运算成果的低8位中含有偶数个1,则PF=1;不然PF=0.AF:帮助进位标记.算数运算指令履行后,若运算成果的低4位向高4位产生进位或借位,则AF=1;不然AF=0.ZF:零标记位.若指令运算成果为0,则ZF=1;不然ZF=0.SF:符号标记位.它与运算成果最高位雷同.OF:溢出标记位.当补码运算有溢出时,OF=1;不然OF=0.DF:偏向标记位.用于串操纵指令,指令字符串处理时的偏向.IF:中止许可标记位.用来掌握8086是否许可吸收外部中止请求.TF:单步标记位.它是为调试程序而设定的陷阱掌握位.4.8086 CPU状况标记和掌握标记有何不合?程序中是如何运用这两类标识的?8086的状况标记和掌握标识分离有哪些?答:状况标记位反响了当前运算和操纵成果的状况前提,可作为程序掌握转移与否的根据.它们分离是CF,PF,AF,ZF,SF,和OF.掌握标记位用来掌握CPU 的操纵,由指令进行置位和复位,掌握标记位包含DF,IF,TF.5.将1001 1100和1110 0101相加后,标识存放器中CF, PF, AF, ZF, SF, OF各为何值?答:CF=1,PF=1,AF=1,ZF=0,SF=1,OF=06.什么是存储器的物理地址和逻辑地址?在8086体系中,若何由逻辑地址盘算物理地址?答:逻辑地址是思维性的暗示,由段地址和偏移地址结合暗示的地址类型叫逻辑地址.物理地址是真实消失的独一地址,指的是存储器中各个单元的单元号.在8086体系中,物理地址=段地址×10H+偏移地址7.段存放器CS=1200H,指令指针存放器IP=4000H,此时,指令的物理地址为若干?指向这一地址的CS指和IP值是独一的吗?答:此指令的物理地址=1200H×10H+4000H=16000H 并且指向这一物理地址的CS值和IP值其实不是独一的.8.在8086体系中,逻辑地址FFFF:0001,00A2:37F和B800:173F的物理地址分离是若干?答:9.在8086体系中,从物理地址388H开端次序存放下列3个双字节的数据651AH,D761H和007BH,请问物理地址388H,389H,38AH,38BH,38CH和38DH 6个单元平分离是什么数据?答:(388H)=1AH,(389H)=65H,(38AH)=61H,(38BH)=DTH,(38CH)=7BH,(38DH)=00H10.8086微处理器有哪几种工作模式?各有什么特色?答:8086微处理器有最大和最小工作模式.在最小模式下:8086 CPU直接产生全体总线掌握旌旗灯号(DT/R,DEN,ALE,M/IO)和敕令输出旌旗灯号(RD,WR,INTA)并提出请求拜访总线的逻辑旌旗灯号HOLD,HLDA.在最大工作模式下,必须设置装备摆设8288总线掌握器,并且根据8086供给的状况旌旗灯号S2,S1,S0,输出读写掌握敕令,可以供给灵巧多变的体系设置装备摆设,以实现最佳的体系机能.11.简述8086引脚旌旗灯号中M/IO,DT/R,RD,WR,ALE,DEN和BHE的感化.答:M/IO:输出旌旗灯号,高电日常平凡,暗示CPU与存储器之间数据传输;低电日常平凡,暗示CPU与I/O装备之间数据传输.DT/R:掌握其数据传输偏向的旌旗灯号.DT/R=1时,进行数据发送;DT/R=0时,进行数据吸收.RD:CPU的读旌旗灯号,RD=0时,暗示8086为存储口或I/O端口读操纵.WR:CPU的写旌旗灯号,WR =0时,暗示8086为存储口或I/O端口写操纵.ALE:地址存锁旌旗灯号,在T1能时刻有效.DEN:数据选通讯号,当DEN有效时,暗示许可传输.BHE:数据总线许可旌旗灯号,与A0组合运用,暗示是否拜访奇地址字节.12.简述8086读总线周期和写总线周期和引脚上的旌旗灯号动尖态变更进程.8086的读周期时序和写周期时序的差别有哪些?答:在8086读周期内,有关总线旌旗灯号的变更如下:①M/IO:在全部读周期保持有效,当进行存储器读操纵时,M/IO为高电平;当进行I/O端口读操纵时,M/IO为低电平.②A19/S6~A16/S3:在T1时代,输出CPU要读取的存储单元或I/O端口的地址高4位.T2~T4时代输出状况信息S6-S3.③BHE/S7:在T1时代,输出BHE有效旌旗灯号(BHE为低电平),暗示高8位数据总线上的信息可以运用,BHE旌旗灯号平日作为奇地址存储体的体选旌旗灯号(偶地址存储体的体选旌旗灯号是最低地址位A0).T2—T4时代输出高电平.④AD l5~AD0:在T1时代,输出CPU要读取的存储单元或I/O端口的地址A15~A0.T2时代为高阻态,T3~T4时代,存储单元或I/O端口将数据奉上数据总线.CPU从AD l5~AD0上吸收数据.⑤ALE:在T1时代地址锁存有效旌旗灯号,为一正脉冲,体系中的地址锁存器恰是运用该脉冲的降低沿来锁存A19/S6~A16/S3,AD l5~AD0中的20位地址信息以及BHE.⑥RD:T2时代输出低电平送到被选中的存储器或I/O接口,留意,只有被地址旌旗灯号选中的存储单元或I/O端口,才会被RD旌旗灯号从中读出数据(数据奉上数据总线AD l5~AD0).⑦DT/R:在全部总线周期内保持低电平,暗示本总线周期为读周期,在接稀有据总线收发器的体系中,用来掌握数据传输偏向.⑧DEN:在T2~T3时代输出有效低电平,暗示数据有效,在接稀有据总线收发器的体系中,用来实现数据的选通.总线写操纵的时序与读操纵时序类似,其不合处在于:①AD l5~AD0:在T2~T4时代奉上欲输出的的数据,而无高阻态.②W R:从T2~T4,W R引脚输出有效低电平,该旌旗灯号送到所有的存储器和I/O接口.留意,只有被地址旌旗灯号选中的存储单元或I/O端谈锋会被W R旌旗灯号写入数据.③DT/R:在全部总线周期内保持高电平,暗示本总线周期为写周期,在接稀有据总线收发器的体系中,用来掌握数据传输偏向.习题31.假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,数据变量V AL的偏移地址为0050H,请指出下列指令原操纵数是什么寻址方法,其物理地址是若干?(1)MOV AX, 0ABH (2) MOV AX, [100H](3) MOV AX, V AL (4) MOV BX, [SI](5) MOV AL, V AL[BX] (6) MOV CL, [BX][SI](7) MOV V AL[SI], BX (8) MOV [BP][SI], 100答:(1) 立刻数寻址,无物理地址(2) 直接寻址,物理地址=2000H×10H+100H=20100H(3) 直接寻址,物理地址=2000H×10H+0050H=20050H(4) 存放器间接寻址,物理地址=2000H×10H+00A0=200A0H(5) 相对存放器寻址,物理地址=2000H×10H+(0050+0100H)=20150H(6) 基址加变寻址,物理地址=2000H×10H+(0100H+00A0H)=201A0H(7) 存放器寻址,无物理地址(8) 立刻数寻址,无物理地址2.已知(SS)=0FFA0H,(SP)=00B0H,先履行两条把8057H和0F79H分离进栈的PUSH指令,再履行一条POP指令,试画出客栈区和SP内容变更的进程示意图.答:“8057H”进栈,则SP主动从00B0H指向00B2H,“0F79H”进栈,则SP主动从00B2H指向00B4H;履行一条POP指令,“0F79H”被弹出栈,SP从00B4H指向00B2H.图略.3.设有关存放器及存储单元的内容如下:(DS)=2000H, (BX)=0100H, (AX)=1200H, (SI)=0002H, (20100H)=12H, (20101H)=34H, (20102H)=56H, (20103H)=78H, (21200H)=2AH, (21201H)=4CH, (21202H)=0B7H, (21203H)=65H.试解释下列各条指令单独履行后相干存放器或存储单元的内容.(1)MOV AX, 1800H (2) MOV AX, BX(3) MOV BX, [1200H] (4) MOV DX, 1100[BX](5) MOV [BX][SI], AL (6) MOV AX, 1100[BX][SI]答:(1) (AX)=1800H (2) (AX)=0100H (3) (BX)=4C2AH(4) (DX)=4C2AH (5) (20102H)=00H (6) (AX)=65B7H4. 写出实现下列盘算的指令序列.(1) Z=W+(X+Z) (2) Z=W-(X+6)-(R+9)答:(1) MOV AX, ZADD AX, XADD AX, WMOV Z, AX(2) MOV AX, WADD X, 6SUB AX, XADD R, 9SUB AX, RMOV Z, AX5. 若在数据段中从字节变量TABLE响应的单元开端存放了0~15的平方值,试写出包含XLAT指令的指令序列查找N(0~15)中的某个平方数.答:LEA BX, TABLEMOV AL, CLXLAT6. 写出实现下列盘算的指令序列.(1) Z=(W*X)/(R+6) (2) Z=((W-X)/5*Y)*2答:(1) MOV AX, WIMUL XADD R, 6IDIV RMOV Z, AX(2) MOV AX, WSUB AX, XMOV BL, 5IDIV BLCBWIMUL YMOV BX, 2IMUL BXMOV Z, AX7. 假定,CF=1, 试肯定下列各条指令单独履行后DX的值.(1) SHR DX, 1 (2) SHL DL, 1 (3) SAL DH, 1 (4) SAR DX, CL(5) ROR DX, CL (6) ROL DL, CL (7) RCR DL, 1 (8) RCL DX, CL答:(1) (DX)=0110 0100 1101 1100B (2) (DX)=1100 1001 0111 0010B(3) (DX)=1001 0010 1011 1001B (4) (DX)= 1111 1001 0011 0111B(5) (DX)= 0011 1001 0011 0111B (6)(DX)= 0100 1101 1100 1110B(7) (DX)= 1110 0100 1101 1100B (8) (DX)= 1001 0011 0111 0011B8. 已知程序段如下:MOV AX, 1234HMOV CL, 4ROL AX, CLDEC AXMOV CX, 4MUL CXINT 20H试问:(1)每条指令履行后,AX存放器的内容是什么?(2)每条指令履行后,CF,SF及ZF的值分离是什么?(3)程序运行停止后,AX及DX存放器的值为若干?答:MOV AX, 1234H (AX)=1234H, CF=0,SF=0,ZF=0MOV CL, 4ROL AX,CL (AX)=2341H,CF=1,SF=0,ZF=0 DEC AX (AX)=2340H,CF=1,SF=0,ZF=0MOV CX,4MULL CX (AX)=8D00H, CF=0,SF=1,ZF=0 INT 20H停止后,(DX)=0000H, (AX)=8000H9.试剖析下列程序段:ADD AX, BXJNC L2SUB AX, BXJNC L3JMP SHORTL5假如AX,BX的内容给定如下:AX BX(1) 14C6H 80DCH(2) B568H 54B7H问该程序在上述情形下履行后,程序转向何处.答:(1)转到L2处(2)转到L3处习题41.下列语句在存储器平分离为变量分派若干字节空间?并画出存储空间的分派图.V AR1 DB 10,2V AR2 DW 5 DUP(?),0V AR3 DB ‘HOW ARE YOU?’,3 DUP(1,2)V AR4 DD -1,1,0答:字节空间:V AR1:2;V AR2:12;V AR3:13;V AR4:8.存储空间的分派图:2.假定V AR1 和V AR2 为字变量,LAB 为标号,试指出下列指令的错误之处. (1)ADD V AR1,V AR2 (2)SUB AL,V AR1(3)JMP LAB[CX] (4)JNZ V AR1(5) MOV [1000H],100 (6)SHL AL, 4答:(1) 在算术运算指令中,两个操纵数不克不及同时为存储器寻址方法(2) AL 为字节,V AR1 为字变量,字长不相等;(3) 错误1:存放器相对寻址方法,只能运用基址或变址存放器,不克不及运用CX存放器.错误2:汇编格局错误,无法判段是段内转移照样段间转移.(4) 转向地址应为标号,不克不及是变量;(5) 目标操纵数的类型不肯定;(6) SHL 指令中,当所移位数超出1 时,必须用CL代替所移位数.3.对于下面的符号界说,指出下列指令的错误.A1 DB ?A2 DB 10K1 EQU 1024(1) MOV K1,AX (2)MOV A1,AX(3)CMP A1,A2 (4)K1 EQU 2048答:(1)K1 为常量,不克不及用MOV 指令赋值;(2)A1 为字节,AX 为字变量,类型不一致;(3)A1 和A2同为存储器寻址方法,不相符语律例则;(4)K1 从新赋值前,必须用PURGE 释放.4.数据界说语句如下所示:FIRST DB 90H,5FH,6EH,69HSECOND DB 5 DUP(?)THIRD DB 5 DUP(?)FORTH DB 4 DUP (?)自FIRST 单元开端存放的是一个四字节的十六进制数(低位字节在前),请求:编一段程序将这个数左移两位后存放到自SECOND 开端的单元,右移两位后存放到自THIRD 开端的单元,求补后放到FORTH开端的单元.(留意保存移出部分)答:DA TA SEGMENTFIRST DB 90H,5FH,6EH,69HSECOND DB 5 DUP(?)THIRD DB 5 DUP(?)FORTH DB 4 DUP (?)DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DA TAMOV DS,AXLEA SI,FIRSTLEA DI,SECONDMOV CX,2CLC;左移2 位MOV AX,WORD PTR [SI] ;AX=5F90H 为低十六位数据INC SIINC SIMOV DX,WORD PTR [SI] ;DX=696EH 为高十六位数据PUSH DX ;保管原有的高十六位数据PUSH AX ;保管原有的低十六位数据ROL DX,CL;将高位数据不带进位轮回左移两位,即高2 位数据在DL 的低2 位AND DL,03H ;让DL 中仅保管移出的高2 位数据MOV [DI+4] ,DL;将移出的高2 位数据放入SECOND 中的最高单元中ROL AX,CL;将低位数据不带进位轮回左移两位,即AX 的高2 位在AL 的低2 位AND AL,03H;让AL 中仅保管移出的AX 高2 位数据MOV BL ,AL;将AL 中的数据放入BL 中保管POP AX;弹出原有的低十六位数据POP DX;弹出原有的高十六位数据SHL DX,CL;将高位数据算术逻辑左移2 位SHL AX,CL;将低位数据算术逻辑左移2 位OR DL,BL;将AX 中移出的高2 位数据放入DX 的低2 位MOVWORD PTR [DI] ,AXMOVWORD PTR [DI+2] ,DX;右移2 位LEA SI,FIRSTLEA DI,THIRDMOV CX,2CLCMOV AX,WORD PTR [SI] ;AX=5F90H 为低十六位数据INC SIINC SIMOV DX,WORD PTR [SI] ; DX=696EH 为高十六位数据PUSH DX;保管原有的高十六位数据PUSH AX;保管原有的低十六位数据ROR AX,CL;将低位数据不带进位轮回右移两位,即低2 位数据在AH 的高2 位AND AH,0C0H;让AH 中仅保管移出的低2 位数据PUSH CXMOV CX,6SHR AH,CLPOP CXMOV [DI] ,AH ;将移出的低2 位数据放入THIRD 中的最低单元中ROR DX, CL;将低位数据不带进位轮回左移两位,即AX 的高2 位在AL 的低2 位AND DH,0C0H ;让DH 中仅保管移出的DX 低2 位数据MOV BL ,DH ;将DH 中的数据放入BL 中保管POP AX ;弹出原有的低十六位数据POP DX ;弹出原有的高十六位数据SHR DX,CL ;将高位数据算术逻辑左移2 位SHR AX,CL ;将低位数据算术逻辑左移2 位OR AH,BL ;将DX 中移出的低2 位数据放入AX 的高2 位MOVWORD PTR [DI+1] , AXMOV WORD PTR [DI+3] ,DX;求补LEA SI,FIRSTLEA DI,FORTHMOV AX,WORD PTR [SI] ;AX=5F90H 为低十六位数据INC SIINC SIMOV DX,WORD PTR [SI] ; DX=696EH 为高十六位数据XOR AX, 0FFFFH ;将低十六位取反XOR DX, OFFFFH ;将高十六位按位取反CLCADD AX,01H ;低位加1,即可为原数的求补ADC DX,0 ;高位加低位加法时的进位MOVWORD PTR [DI] , AXMOV WORD PTR [DI+2] ,DXMOV AH,4CHINT 21HCODE ENDSEND START5.试编程序将内存从40000H到4BFFFH的每个单元中均写入55H,并再逐个单元读出比较,看写入的与读出的是否一致.若全对,则将AL置7EH; 只要有错,则将AL置81H.答:DATA SEGMENTDA1 DB 55HCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,4000HMOV DS,AXMOV CX,0C000HMOV BX,0000HMOV AH,55HNEXT1: MOV byte ptr[BX],AHINC BXLOOP NEXT1MOV BX,0000HMOV CX,0C000HMOV AL,81HNEXT2: MOV AH, [BX]CMP AH,55HJNZ EXITINC BXLOOP NEXT2MOV AL,7EHEXIT: MOV AH,4CHINT 21HCODE ENDSEND START6.在当前数据段4000H开端的128个单元中存放一组数据,试编程序将它们次序搬移到A000H开端的次序128个单元中,并将两个数据块逐个单元进行比较; 如有错将BL置00H; 全对则将BL置FFH,试编程序.答:DATA SEGMENTORG 400HDA1 DB 128 DUP(?)ORG 0A00HDA2 DB 128 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATASTART: MOV AX,DATAMOV DS,AXLEA SI,DA1LEA DI,DA2MOV CX,128AGAIN:MOV AL,[SI]INC SIINC DILOOP AGAINLEA SI, DA1LEA DI, DA2MOV CX,128NEXT:MOV AL,[SI]MOV BL,[DI]CMP AL,BLJNZ ERRORINC SIINC DIMOV BL,0FFHLOOP NEXTJMP EXITERROR: MOV BL,00HEXIT: MOV AH,4CHINT 21HCODE ENDSEND START7. 设变量单元A.B.C存放有3个数,若3个数都不为零,则求3个数的和,存放在D中; 如有一个为零,则将其余两个也清零,试编写程序.答:DATA SEGMENTA DB ?B DB ?C DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXCMP A,00HJNZ LP1MOV B,0MOV C,0JMP LP4LP1:CMP B,00HJNZ LP2MOV A,0MOV C,0JMP LP4LP2:CMP C,00HJNZ LP3MOV A,0MOV B,0JMP LP4LP3:MOV AL,AADD AL,BADD AL,CMOV AH,4CHLP4: INT 21HCODE ENDSEND START8. 有一个100个字节的数据表,表内元素已按从大到小的次序分列好,现给定一元素,试编程序在表内查找,若表内已有此元素,则停止; 不然,按次序将此元素拔出表中恰当的地位,并修正表长.答:DATA SEGMENTBUFF DB 100 DUP(?)DA1 DB (?)LENGTH DB 0DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV SI,0MOV AL,DA1MOV CX,100FIND0: CMP BUFF[SI],ALJZ EXITINC SILOOP FIND0MOV DI,99MOV SI,0COMPARE: CMP BUFF[DI],ALJG INSERTMOV BL,BUFF[DI]MOV BUFF[DI+1],BLDEC DICMP DI,SIJNL COMPAREJMP EXITINSERT:MOV BUFF[DI+1],ALMOV LENGTH , 101EXIT:MOV AH,4CHINT 21HCODE ENDSEND START9. 内存中以FIRST和SECOND开端的单元平分离存放着两个16位组合的十进制(BCD码)数,低位在前.编程序求这两个数的组合的十进制和,并存到以THIRD 开端的单元.答:DATA SEGMENTFIRST DD 34341212HSECOND DD 78785656HTHIRD DB ?,?,?,?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA SI,FIRSTLEA DI,SECONDLEA BX,THIRDMOV CX,4CLCAGAIN:MOV AL,BYTE PTR[SI]MOV DL,BYTE PTR[DI]ADC AL,DLDAAMOV BYTE PTR[BX],ALINC SIINC DIINC BXLOOP AGAINJC AAMOV BYTE PTR[BX],0JMP EXITAA:MOV BYTE PTR[BX],1EXIT:MOV AH,4CHINT 21HCODE ENDSEND START10. 编写一段程序,吸收从键盘输入的10个数,输入回车符暗示停止,然后将这些数加密后存于BUFF缓冲区中.加密表如下:输入数字: 0,1,2,3,4,5,6,7,8,9; 暗码数字: 7,5,9,1,3,6,8,0,2,4.答:DATA SEGMENTMITAB DB '7591368024'CONT EQU $-MITABBUFFDB 10 DUP (?),'$'YUANWENDB 10 DUP (?),'$'DATA ENDSCODE SEGMENTASSUMECS∶CODE,DS∶DATASTART: MOV AX,DATAMOV DS,AXMOV SI,0MOV CX,CONTINPUT: MOV AH,1INT 21HCMP AL,13JZ EXITAND AL,0FHMOV YUANWEN[SI] ,ALINC SILOOP INPUTEXIT : LEA BX,MITABMOV CX,SIMOV SI,0JIAMI: MOV AL,YUANWEN[SI]XLAT MITABMOV BUFF[SI],ALINC SILOOP JIAMIMOV AH, 4CHINT 21HCODE ENDSEND START11.试编程序,统计由40000H开端的16K个单元中所存放的字符“A”的个数,并将成果存放在DX中.答:DATA SEGMENTDA1 DB 'A'BUFF DB 4000H DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,4000HMOV DS,AXMOV BX,0MOV CX,4000HFIND: MOV AL,[BX]MOV BL,DA1CMP AL,BLJNZ NEXTNEXT: INC SILOOP FINDMOV AH,4CHINT 21HCODE ENDSEND START12. 在当前数据段(DS),偏移地址为DATAB开端的次序80个单元中,存放着某班80个同窗某门测验成绩.按如下请求编写程序:(1) 编写程序统计≥90分; 80分~89分; 70分~79分; 60分~69分,<60分的人数各为若干,并将成果放在同一数据段.偏移地址为BTRX开端的次序单元中. (2) 试编程序,求该班这门课的平均成绩为若干,并放在该数据段的A VER单元中. 答:DATA SEGMENTBUFF DW 80 DUP(?)DA9 DB 0DA8 DB 0DA7 DB 0DA6 DB 0DA5 DB 0A VER DB 0DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV CX,80COMPARE: MOV BX,0CMP BUFF[BX],90JB LP8JMP NEXTLP8: CMP BUFF[BX],80JB LP7INC DA8JMP NEXTLP7: CMP BUFF[BX],70JB LP6INC DA7JMP NEXTLP6: CMP BUFF[BX],60JB LP5INC DA6JMP NEXTLP5: INC DA5JMP NEXTNEXT: INC BXLOOP COMPAREMOV CX,80XOR AX,AXMOV BX,00SUM: ADD AX,BUFF[BX] INC BXLOOP LP1MOV CL,80DIV CLMOV A VER , ALMOV AH,4CHINT 21HCODE ENDSEND START13. 编写一个子程序,对AL中的数据进行偶校验,并将经由校验的成果放回AL 中.答:JIOU PROCPUSH CXPUSH BXXOR AH, AHPUSH AXMOV CL, 7LOOP1: SAR AL, 1ADC AH, 0LOOP LOOP1MOV AL, AHXOR AH, AHMOV BL, 2DIV BLMOV BL, AHPOP AXROR BL, 1OR AL, BLPOP BXPOP CXRETJIOU ENDP14. 运用上题的子程序,对80000H开端的256个单元的数据加上偶校验,试编程序.CODE SEGMENTASSUME CS: CODESTART : MOV AX, 8000HMOV DS, AXMOV SI, 0MOV CX, 256LP: MOV AL, [SI] CALL JIOUMOV [SI], ALINC SILOOP LPMOV AH, 4CH INT 21HJIOU PROCPUSH CXPUSH BXXOR AH, AHPUSH AXMOV CL, 7 LOOP1: SAR AL, 1ADC AH, 0LOOP LOOP1 MOV AL, AHXOR AH, AHMOV BL, 2DIV BLMOV BL, AHPOP AXROR BL, 1OR AL, BLPOP BXPOP CXRETJIOU ENDPCODE ENDS END START习题51.试述DRAM的工作特色;与SRAM比拟有什么长处和缺少之处;解释它的运用处合.答:DRAM,动态随机存取存储器,须要不竭的刷新,才干保管数据. 并且是行列地址复用的,很多都有页模式. SRAM,静态的随机存取存储器,加电情形下,不须要刷新,数据不会丧掉,并且一般不是行列地址复用的.与SRAM比拟,DRAM价钱便宜.速度慢.容量大,重要用来做主存储器,存储程序和数据;而SRAM重要用在Cache等对速度请求高的情形.2.试述DRAM刷新进程和正常读/写进程的差别.答:刷新是以行动单位进行,且刷新进程中不克不及进行读写操纵.3.设有一个具有20位地址和32位字长的存储器,问:(1)该存储器能存储若干个字节的信息?(2)假如存储器由512K*8位SRAM芯片构成,须要若干片?(3)须要若干位作芯片选择?答:(1)该存储器能存储4MB的信息.(2) 须要8片512K*8位的芯片.(3) 须要1位做芯片选择.4.对于8K×8位RAM构成的存储器体系,若某组的肇端地址为08000H,则其末地址为若干?答:末地址为9FFF.5.在8088最大方法体系总线上扩充设计4K字节的SRAM存储器电路.SRAM芯片选用Intel 2114,肇端地址从0000H.试画出此存储器电路与体系总线的衔接图.答:体系容量为 4K*8bit,芯片容量为1K*4bit,所以一共须要8片芯片衔接图如下:6.在8088体系总线上扩充设计8K的字节的SRAM存储器电路.SRAM芯片选用Intel 6264,肇端地址从04000H开端,译码器电路74LS138.(1)盘算此RAM存储区的最高地址是若干.(2)画出此存储器电路与体系总线的衔接图.答:(1)最高地址是05FFFH.(2)7.在8086最小方法体系总线上扩充设计16K字节的SRAM存储器电路,SRAM芯片选用Intel 6264,肇端地址从04000H开端,译码器电路采取74LS138.(1)盘算此RAM存储区域的最高地址是若干(2)画出此存储器与总线的衔接图.答:(1) 07FFFH(2)习题61.什么是接口?接口的功效是什么?答:位于主机与外设之间,用来协助完成数据传送和掌握义务的逻辑电路称为接口电路,接口电路对输入/输出进程起缓冲和联络感化.接口的功效是有,数据缓冲功效,联络功效,寻址功效,预处理功效,中止治理功效.2.盘算机对I/O端口编址时平日采取哪两种办法?在8086体系中,用哪种办法进行编址?答:I/O端口和存储器同一编址;I/O端口单独编址.8086体系采取I/O端口单独编址方法.3.CPU和输入/输出装备之间传送的信息有哪几类?答: 数据信息,掌握信息,与状况信息.4.简述CPU与外设进行数据交流的几种经常运用方法.答: 程序掌握方法: 特色是依附程序的掌握来实现主机和外设的数据传送,可分为无前提传送方法和查询方法.中止掌握方法: 每次输入和输出一个数据,CPU都要检讨外设的状况.直接存储器存取掌握方法:cpu不介入数据传送,而是由DMA掌握器来实现内存与外设,外设与外设之间的直接传递.通道方法:可以实现对外围装备的同一治理和外围装备与内存之间的数据传送.外围处理机方法:由PPU自力于主机工作,削减了CPU掌握外设的累赘.5.无前提传送方法实用哪些场合?查询方法道理如何?重要用在什么场合?答:无前提传送实用于简略的输入/输出装备,CPU可以随时读取或接收状况.这些旌旗灯号变更迟缓,当须要收集数据时,无需检讨端口,就可以立刻收集数据,直接用输入/输出指令完成.无前提传送方法重要用于掌握CPU与低俗I/O接口之间的信息交流.6.现有一输入装备,其数据端口的地址为FFE0H,并于端口FFE2H供给状况,当其D0位为1时标明输入数据预备好.请编写采取查询方法进行数据传送的程序段,请求从该装备读取100B并输入到1000H:2000H开端的内存中.MOV DX, 0FFE2HL1: IN AL, DX 这是习题6的第6题的答案,TEST AL, 01H 这个程序写不出来,建议删这一问JZ L1MOV AX, 1000HMOV DS, AXMOV DX, 2000HMOV CX, 100MOV DX, 0FFE0HL2: IN AL, DXMOV [DX], ALINC BXLOOPN L27.查询式传送方法有什么优缺陷?中止方法为什么能填补查询方法的缺陷?答:查询传送方法CPU通进程序不竭查询响应装备的状况,状况不相符请求,则CPU须要等待;只有当状况旌旗灯号相符请求时,CPU才干进行响应的操纵.中止方法进步了盘算机体系中信息处理的并行和处理器效力,中止可以实现同步操纵,及时处理等功效.8.8088/8086中止向量表的感化是什么?答:中止向量表树立了不合的中止源与其响应的中止办事程序首地址之间的接洽,它是CPU在响应中止时可以根据中止类型码主动转向中止办事程序.9.什么叫中止向量?它放在哪里?对于1CH的中止向量在哪里?假如1CH的中止程序从5110H开端:2030H开端,则中止向量应当如何存放?答:中止向量即用来供给中止进口地址的一个指针.10.8259中IRR, IMR, ISR三个存放器的感化是什么?答:⑴中止请求存放器IRR8259A有8条外部中止请求输入旌旗灯号线IR0-IR7,每一条请求线上有一个响应的触发器来保管请求旌旗灯号,它们形成了中止请求存放器IRR(Interrupt Request Register).⑵中止屏障存放器IMRIMR(Interrupt Mask Register)用来存放屏障位信息,IMR的每一位可以制止IRR 中对应位的中止请求输入旌旗灯号进入.⑶中止办事存放器ISRISR(Interrupt Service Register)存放当前正在进行办事的所有中止.ISR中响应位的置位是在中止响应的INTA脉冲时代,由优先权判决电路根据IRR中各请求位的优先权级别和IMR中屏障位的状况,将中止的最高优先级请求位选通到ISR中.11.类型号为20H的中止办事程序进口符号地址为INT-5,试写出中止向量的装入程序片断.答:MOV AX, 0MOV DS, AXMOV SF, 20H*4LEA AX, IMSMOV [IS], AXMOV AX, SEQ, INTSMOV [SI+2], AX12.简述DMA掌握器同一般接口芯片的差别.答:DMA掌握器能给出拜访内存所须要的地址信息,并能主动修正地址指针,也能设定和修正传送的字节数,还能向存储器和外设发出响应的读/写掌握旌旗灯号.在DMA传送停止后,它能释放总线,把对总线的掌握权又交还给CPU.用DMA方法传输数据时,不须要进行呵护和恢复断点及现场之类的额外操纵.13.简述8237A3种根本传送类型的特色.答:单次传送方法:每次DMA操纵只传送1B,然后就主动把总线掌握权交。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微机原理与接口技术(楼顺天第二版)习题解答第4章汇编语言程序设计4.1、已知在BUF的起始处保存有N个字符的ASCII码,编写汇编语言程序实现,将这组字符串传送到缓冲区BUFR中,并且使字符串的顺序与原来的顺序相反。

答: BUF DB "BONJOUR_BELLE"BUFR DB 100 DUP(?)MOV CX, NLEA SI, BUFLEA DI, BUFRADD DI,CXDEC DIL1:MOV AL,[SI]MOV [DI],ALINC SIDEC DILOOP L14.2、利用移位、传送和相加指令实现AX的内容扩大10倍。

答:将扩大后的结果放在DX:AX中,注意到10×AX=8×AX+2×AX。

XOR DX,DXSHL AX, 1RCL DX, 1MOV BX,AXMOV CX,DXSHL AX, 1RCL DX, 1SHL AX, 1RCL DX, 1ADD AX, BXADC DX, CX4.3、在缓冲区VAR中连续存放着3个16位的无符号数,编写程序实现将其按递增关系排列;如果VAR中保存的为有符号数,则再编写程序实现将其按递减关系排列。

答:VAR DW 1236,-432,3900XOR SI,,SIMOV AX,VAR[SI]CMP AX, VAR[SI+2]JAE L1XCHG AX, VAR[SI+2]L1:CMP AX, VAR[SI+4]JAE L2XCHG AX, VAR[SI+4]L2:MOV VAR[SI], AXMOV AX,VAR[SI+2]CMP AX, VAR[SI+4]JAE L3XCHG AX, VAR[SI+4]L3:MOV VAR[SI+2], AX4.4、编写程序段实现将AL和BL中的每一位依次交叉,得到的16位字保存在DX中,例如(AL)=01100101B,(BL)=11011010B,则得到的(DX)=10110110 10011001B。

答:利用移位指令完成。

XOR DX,DXMOV CX,8L1:SHR AL,1RCR DX,1SHR BL,1RCR DX,1LOOP L14.5、在变量VAR1和VAR2中分别保存有两个字节型的正整数,编写完整的汇编语言程序实现:(1)当两数中有一个奇数时,将奇数存入VAR1,偶数存入VAR2;(2)当两数均为奇数时,两个变量的内容不变;(3)当两数均为偶数时,两数缩小一倍后存入原处。

答:当VAR1为奇数时,不论VAR2的奇偶性,这两个单元的内容均不变;只有当VAR1为偶数时,如果VAR2为奇数,则VAR1与VAR2内容交换;如果VAR2为偶数,则两数缩小一倍后存入原处。

DATA SEGMENTVAR1 DB 28VAR2 DB 36DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA, ES:DATASTART:MOV AX, DATAMOV DS,AXMOV ES, AXMOV AL,VAR1MOV BL,VAR2TEST AL,1JZ EVEN1JMP OVEREVEN1:TEST BL,1JZ EVEN2MOV VAR1,BLMOV VAR2,ALJMP OVEREVEN2:SHR AL,1MOV VAR1,ALSHR BL,1MOV VAR2,BLOVER:MOV AH,4CHMOV AL,0INT 21HCODE ENDSEND START4.6、已知在字变量VAR1、VAR2和VAR3中保存有3个相同的代码,但有一个错码,编写程序段找出这个错码,并将它送到AX,其地址送SI;如果3个代码都相同,则在AX中置-1标志。

答:在数据段中定义:VAR1 DW 5A34HVAR2 DW 5A35HVAR3 DW 3A34H在代码段中编写程序段:MOV AX,-1MOV BX,VAR1CMP BX,VAR2JZ L2CMP BX,VAR3JZ L1MOV AX,BXLEA SI,VAR1JMP OVERL1:MOV AX,VAR2LEA SI,VAR2JMP OVERL2:CMP BX,VAR3JZ OVERMOV AX,VAR3LEA SI,VAR3OVER:4.7、分析下列程序段的功能:MOV CL,04SHL DX,CLMOV BL,AHSHL AX,CLSHR BL,CLOR DL,BL解:程序段完成DX:AX组成的32位无符号数左移4位,低位补零(也即除以16)。

4.8、阅读下列程序段,指出它完成什么运算。

CMP AX, 0JGE EXITNEG AXEXIT: …答:取AX的绝对值。

4.9、答:将DX中的值转换为相应的ASCII码字符存入DISP对应的4字节存储单元中。

例如DX=3F0BH,则在DISP中存放'3', 'F', '0', 'B'。

4.10、答:将FIRST和SECOND数据相加,结果存入FIRST中,FIRST中的结果为:10H,61H,01H。

4.11、答:将从390H端口读入的数据的低4位转换为对应16进制数的ASCII码,然后往390H端口输出。

例如读入的数据为29H,则输出'9', 读入的数据为1BH,则输出'B'。

4.12、答:实际上完成BX内容循环右移2位,因此,BX寄存器的内容为C02DH。

4.13、答:完成BX内容逻辑右移5位,因此,BX寄存器的内容为03EAH。

4.14、答:(1)AX=FFF3H,DX=FFFAH;(2)AX=1FF2H,DX=0002H4.15、答:AX=FFFCH,BX=200AH,CX=0008H,DX=2010H,SI=2000H4.16、答:LEA SI,BUFFERSLEA DI,BUFFERTMOV CX,NADD DI,NADD DI,NSUB DI,2L1:MOV AX,[SI]MOV [DI],AXADD SI,2SUB DI,2LOOP L14.17、答:ENCRPYTION PROC NEARLEA SI,ARRAYXOR DX,DXMOV AX,[SI]MOV BX,5DIV BXMOV CX, AXADD SI, 2L1:MOV AX, [SI]XOR AX,0AAAAHMOV [SI], AXADD SI,10LOOP L1RETENCRPYTION ENDP4.18、答:DATA SEGMENTARRAY DB 12,28,128,35,46,69,120,89,93,100,112,125,200DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXXOR CX,CXMOV CL,ARRAY ;数据个数存入AXMOV SI,OFFSET ARRAY+1 ;SI存放第一个数的偏移地址XOR DX,DXXOR AX,AX ;AX用来存放和,首先清零XH: XOR BX,BXMOV BL,[SI]ADD AX,BXJNC BUYICHUADD DX,1BUYICHU:INC SILOOP XHCMP DX,0JZ OVERMOV DX,-1OVER: HLTCODE ENDSEND START4.19、答:程序如下:MOV CX,NLEA SI,BUFMOV AX,[SI]MOV DX,AXADD SI,2L1:CMP AX,[SI]JBE NOCHG1XCHG AX,[SI]NOCHG1:CMP DX,[SI]JAE NOCHG2XCHG DX,[SI]NOCHG2:ADD SI,2LOOP L1如果BUF中存放的是有符号数,则只需要将程序中的两行内容修改:JBE NOCHG1 改成:JLE NOCHG1JAE NOCHG2 改成:JGE NOCHG24.20、答:设BUFFER中存放的是字节型数据。

采用双指针方法:SI为读指针,DI为写指针,从低地址开始,内存中读出一个字节,如果不为0,则写入内存;如果为0,则不进行写操作。

LEA SI, BUFFERXOR CX,CXMOV CL, [SI]INC SIMOV DI, SIXOR BH,BHXOR AL,ALL1:CMP [SI],ALJZ L2MOV BL,[SI]MOV [DI],BLINC DIINC BHL2:INC SILOOP L1MOV BUFFER,BH4.21、答:MOV CX,NMOV BX,BUF1MOV SI,0MOV DI,OFFSET PRODUCTXH: MOV AX,BUFN[SI]PUSH AXMUL BXMOV [DI],AX ;乘积低位字ADD DI,2MOV [DI],DX ;乘积高位字POP AXXOR DX,DXDIV BXMOV QUOTIENT[SI],AX ;商MOV REMAINDER[SI],DX ;余数ADD SI,2LOOP XH4.22、答:统计AL中1的个数,只需将AL右移,移出的一位内容进行累加,子程序为:COUNTBYTE PROC NEARPUSH AXPUSH CXMOV CX,8XOR BL,BLCOU1:SHR AL,1ADC BL,0LOOP COU1POP CXPOP AX。

相关文档
最新文档