80X86汇编语言程序设计教程杨季文课后习题答案

合集下载

80x86汇编语言程序设计教程》(清华大学出版社,黑色封面,杨季文著)

80x86汇编语言程序设计教程》(清华大学出版社,黑色封面,杨季文著)

80x86汇编语言程序设计教程》(清华大学出版社,黑色封面,杨季文著)《计算机操作系统原理》《Inside Windows 2000》(微软出版社,我看的是E文版的,中文的书名想必是Windows 2000 技术内幕之类吧)。

《数据结构和算法》——这门课程能够决定一个人程序设计水平的高低,是一门核心课程。

我首选的是清华版的(朱战立,刘天时)《软件工程》——这门课程是越到后来就越发现它的重要,虽然刚开始看时就象看马哲一样不知所云。

我的建议是看《实用软件工程》(黄色,清华)《Windows 程序设计》——《北京大学出版社,Petzold著》我建议任何企图设计Windows 程序的人在学习VC以前仔细的学完它。

而且前面的那本建议:你还可以在CSDN上阅读到许多书评。

这些书评能够帮助你决定读什么样的书关于编程的网站计算机编程郭新明-FTP服务器体验式学习课程(张孝祥监制)/so/so138.aspx?id=3997快速开发新闻系统在线播放/so/so138.aspx?id=4708数字电路基础[宁波电大]/so/so138.aspx?id=774计算机组成与汇编语言程序设计(赵丽梅)宁波电大/so/so138.aspx?id=1242操作系统(陈访荣)宁波电大(在线播放)/so/so138.aspx?id=4708计算机网络(马敏飞)宁波电大/so/so138.aspx?id=1243 2.0快速入门(12)- 2.0网站快速导航/so/so138.aspx?id=2501Internet和Intranet应用(薛昭旺)宁波电大/so/so138.aspx?id=12452004年电脑硬件安装调试维修视频教学讲授/so/so138.aspx?id=4825 高级排错技巧/so/so138.aspx?id=768SQL Server 2000管理专家系列课程/so/so138.aspx?id=4832开心三人行系列(2):使用Atlas 构建AJAX应用/so/so138.aspx?id=2564Visual Basic 2005开发技巧系列课程(4):在Visual Basic 2005中使用.NET Framework 2.0新增功能/so/so138.aspx?id=2526SQL Server 2005 系列课程-使用ADO 开发SQL Server 2005 OLAP应用/so/so138.aspx?id=2535Visual Basic 2005开发技巧系列课程(1):使用My命名空间简化.NET Framework程序设计/so/so138.aspx?id=2523VB编程与应用(黄文)宁波电大/so/so138.aspx?id=1245Internet和Intranet应用(薛昭旺)宁波电大/so/so138.aspx?id=1246PHP视频教程从入门到精通(php mysql)/so/so138.aspx?id=294增强windows安全全集^/so/so138.aspx?id=3621SQL Server 2005 系列课程-SQL Server 2005与XML的紧密整合(下)/so/so138.aspx?id=2531SQL Server 2005 系列课程-SQL Server 2005与XML的紧密整合(上)/so/so138.aspx?id=2528Launch 2005系列课程(11):AMO与XML/A/so/so138.aspx?id=2604自己动手建设个人网站/so/so138.aspx?id=1236Dreamweaver网站设计系列多媒体教程/so/so138.aspx?id=2075自己动手制作动态网站/so/so138.aspx?id=1125 2.0快速入门(12)- 2.0网站快速导航/so/so138.aspx?id=2501自己动手建设企业网站/so/so138.aspx?id=1235黑客视频教程-用旁注法入侵网站/so/so138.aspx?id=1958电子商务网站系统分析与设计(北京交通大学)/so/so138.aspx?id=1594电子商务网站案例分析(北京交通大学)/so/so138.aspx?id=820自己动手建立个人网站/so/so138.aspx?id=1196http://218.22.21.254:8001/计算机专业/吉林大学CSF计算机课件/吉林大学C语言/第01讲.csf中间自己加http://218.22.21.254:8001/计算机专业/吉林大学CSF计算机课件/吉林大学C语言/第51讲.csf这是VB的(石油大学)/syu200501/01.csf中间自己加/syu200501/30.csf回答者:hywen008 - 高级经理六级7-30 10:15 推荐些不错的编程网站给你,编程论坛非常不错讨论区/bbs注册稍严格,但是论坛回复率很高。

80×86汇编语言程序设计课后习题参考答案

80×86汇编语言程序设计课后习题参考答案

/view/555758b91a37f111f1855b3e.html附录:《IBM—PC汇编语言程序设计》习题参考答案第一章.习题1.1用降幂法和除法将下列十进制数转换为二进制数和十六进制数:(1) 369 (2) 10000 (3) 4095 (4) 32767答:(1) 369=1 0111 0001B=171H(2) 10000=10 0111 0001 0000B=2710H(3) 4095=1111 1111 1111B=FFFH(4) 32767=111 1111 1111 1111B=7FFFH1.2将下列二进制数转换为十六进制数和十进制数:(1) 10 1101 (2) 1000 0000 (3) 1111 1111 1111 1111 (4) 1111 1111答:(1) 10 1101B=2DH=45(2) 1000 0000B=80H=128(3) 1111 1111 1111 1111B=FFFFH=65535(4) 1111 1111B=FFH=2551.3将下列十六进制数转换为二进制数和十进制数:(1) FA (2) 5B (3) FFFE (4) 1234答:(1) FAH=1111 1010B=250(2) 5BH=101 1011B=91(3) FFFEH=1111 1111 1111 1110B=65534(4) 1234H=1 0010 0011 0100B=46601.4完成下列十六进制数的运算,并转换为十进制数进行校核:(1) 3A+B7 (2) 1234+AF (3) ABCD-FE (4) 7AB×6F答:(1) 3A+B7H=F1H=241(2) 1234+AFH=12E3H=4835(3) ABCD-FEH=AACFH=43727(4) 7AB×6FH=35325H=2178931.5下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。

汇编语言程序设计教案及习题答案

汇编语言程序设计教案及习题答案

汇编语言程序设计教案及习题答案教案章节:一、汇编语言简介1. 汇编语言的概念2. 汇编语言的特点3. 汇编语言的应用领域二、汇编语言的基本语法1. 数据类型及表示2. 指令格式及分类3. 寄存器使用规则三、汇编语言程序设计步骤1. 分析需求,确定程序功能2. 选择合适的汇编语言及开发环境3. 编写汇编代码,调试程序4. 优化程序性能四、常用汇编指令及功能1. 数据传输指令2. 算术运算指令3. 逻辑运算指令4. 控制流指令5. 字符串操作指令6. 中断指令五、汇编语言与C语言的接口编程1. extern声明汇编函数2. 调用汇编函数的方法3. 汇编函数与C函数的数据交换4. 实例分析:汇编语言实现字符串排序习题答案:一、汇编语言简介1. 汇编语言是一种低级编程语言,用于编写计算机程序。

(正确)2. 汇编语言可以直接操作计算机硬件资源。

(正确)3. 汇编语言程序可读性差,不易维护。

(正确)二、汇编语言的基本语法1. 数据类型及表示a. 字节:8位(正确)b. 字:16位(正确)c. 双字:32位(正确)d. 四字:64位(正确)2. 指令格式及分类a. 操作码(正确)b. 操作数(正确)c. 寄存器(正确)d. 标志位(正确)3. 寄存器使用规则a. 通用寄存器:AX, BX, CX, DX(正确)b. 段寄存器:CS, DS, ES, SS(正确)c. 指令指针:IP(正确)d. 状态寄存器:FLAGS(正确)三、汇编语言程序设计步骤1. 分析需求,确定程序功能(正确)2. 选择合适的汇编语言及开发环境(正确)3. 编写汇编代码,调试程序(正确)4. 优化程序性能(正确)四、常用汇编指令及功能1. 数据传输指令a. MOV:数据传送(正确)b. PUSH:压栈(正确)c. POP:出栈(正确)d. XCHG:交换数据(正确)2. 算术运算指令a. ADD:加法(正确)b. SUB:减法(正确)c. MUL:无符号乘法(正确)d. IMUL:有符号乘法(正确)3. 逻辑运算指令a. AND:逻辑与(正确)b. OR:逻辑或(正确)c. XOR:逻辑异或(正确)d. NOT:逻辑非(正确)4. 控制流指令a. JMP:无条件跳转(正确)b. JE:相等跳转(正确)c. JNE:不相等跳转(正确)5. 字符串操作指令a. MOVS:字符串移动(正确)b. CMPS:字符串比较(正确)c. SCAS:字符串扫描(正确)d. LODS:字符串装载(正确)6. 中断指令a. INT:软件中断(正确)b. INTO:中断向量表(正确)五、汇编语言与C语言的接口编程1. extern声明汇编函数(正确)2. 调用汇编函数的方法(正确)3. 汇编函数与C函数的数据交换(正确)4. 实例分析:汇编语言实现字符串排序(正确)汇编语言程序设计教案及习题答案教案章节:六、汇编语言的输入与输出1. 输入输出指令2. 字符串操作指令3. 实例分析:编写一个简单的输入输出程序七、汇编语言的杂项指令1. 杂项指令的概念2. 常用杂项指令及其功能3. 实例分析:杂项指令的应用八、汇编语言的子程序调用1. 子程序调用的概念2. 子程序的定义与调用3. 子程序的返回4. 实例分析:子程序在汇编语言中的应用九、汇编语言的程序举例1. 实例一:计算两个数的和2. 实例二:字符串的复制3. 实例三:数制的转换4. 实例四:文件的读写十、汇编语言程序的调试与优化1. 调试工具的使用2. 调试方法与技巧3. 程序优化的概念4. 程序优化的方法与技巧习题答案:六、汇编语言的输入与输出1. 输入输出指令a. IN:输入指令(正确)b. OUT:输出指令(正确)c. INPUT:输入函数(正确)d. PRINT:输出函数(正确)2. 字符串操作指令a. MOVS:字符串移动(正确)b. CMPS:字符串比较(正确)c. SCAS:字符串扫描(正确)d. LODS:字符串装载(正确)3. 实例分析:编写一个简单的输入输出程序(正确)七、汇编语言的杂项指令1. 杂项指令的概念(正确)2. 常用杂项指令及其功能a. NOP:无操作(正确)b. HLT:停止CPU运行(正确)c. CMC:翻转标志位(正确)d. ARPL:寄存器之间交换(正确)3. 实例分析:杂项指令的应用(正确)八、汇编语言的子程序调用1. 子程序调用的概念(正确)2. 子程序的定义与调用a. 定义子程序(正确)b. 调用子程序(正确)3. 子程序的返回(正确)4. 实例分析:子程序在汇编语言中的应用(正确)九、汇编语言的程序举例1. 实例一:计算两个数的和(正确)2. 实例二:字符串的复制(正确)3. 实例三:数制的转换(正确)4. 实例四:文件的读写(正确)十、汇编语言程序的调试与优化1. 调试工具的使用(正确)2. 调试方法与技巧(正确)3. 程序优化的概念(正确)4. 程序优化的方法与技巧(正确)汇编语言程序设计教案及习题答案教案章节:十一、汇编语言与操作系统1. 操作系统的概念2. 汇编语言在操作系统中的应用3. 实例分析:汇编语言编写简单的操作系统十二、汇编语言与设备驱动程序1. 设备驱动程序的概念2. 汇编语言在设备驱动程序开发中的应用3. 实例分析:汇编语言编写简单的设备驱动程序十三、汇编语言与嵌入式系统1. 嵌入式系统的概念2. 汇编语言在嵌入式系统中的应用3. 实例分析:汇编语言编写简单的嵌入式系统十四、汇编语言与汇编器的使用1. 汇编器的概念2. 汇编器的使用方法3. 实例分析:使用汇编器编写和调试汇编程序十五、汇编语言与汇编语言的未来发展1. 汇编语言的发展趋势2. 汇编语言在未来的应用领域3. 汇编语言学习的方法与建议习题答案:十一、汇编语言与操作系统1. 操作系统的概念(正确)2. 汇编语言在操作系统中的应用(正确)3. 实例分析:汇编语言编写简单的操作系统(正确)十二、汇编语言与设备驱动程序1. 设备驱动程序的概念(正确)2. 汇编语言在设备驱动程序开发中的应用(正确)3. 实例分析:汇编语言编写简单的设备驱动程序(正确)十三、汇编语言与嵌入式系统1. 嵌入式系统的概念(正确)2. 汇编语言在嵌入式系统中的应用(正确)3. 实例分析:汇编语言编写简单的嵌入式系统(正确)十四、汇编语言与汇编器的使用1. 汇编器的概念(正确)2. 汇编器的使用方法(正确)3. 实例分析:使用汇编器编写和调试汇编程序(正确)十五、汇编语言与汇编语言的未来发展1. 汇编语言的发展趋势(正确)2. 汇编语言在未来的应用领域(正确)3. 汇编语言学习的方法与建议(正确)重点和难点解析本文主要介绍了汇编语言程序设计的基础知识和应用领域,通过详细的章节安排,从汇编语言的基本概念、语法规则、程序设计步骤、常用指令及其功能、输入输出操作、杂项指令、子程序调用、程序举例、调试与优化等方面进行了深入讲解。

第三章8088汇编语言程序设计微机原理第2版课后答案

第三章8088汇编语言程序设计微机原理第2版课后答案

第三章8088汇编语⾔程序设计微机原理第2版课后答案第三章 8088汇编语⾔程序设计本章的主要内容是汇编语⾔语句⾏的构成,源程序的结构,汇编语⾔程序设计⽅法。

3.1 重点与难点本章的学习重点是结构化程序设计思想,顺序、分⽀、循环结构的程序设计,⼦程序结构的设计与调⽤,中断指令的应⽤。

另外,汇编语⾔伪指令的使⽤、源程序的结构等也是必须掌握的。

3.1.1 汇编语⾔语句⾏的构成1.标记(1)标识符:由数字、字母和下划线组成,且不能以数字开头,最⼤长度不超过31个字符。

(2)保留字:汇编语⾔中保留下来的具有特殊⽤途的字串,如指令、伪指令、寄存器名等都是保留字。

保留字不可⽤作标识符。

(3)界符:程序或指令中两个部分的分隔符号。

汇编语⾔源程序中可⽤的界符:′〈〉;,:? $ () + - = &[] * / ·(4)常量:数字常量,可以使⽤不同的进制D、B、H、Q;字符串常量,由引号引起来的字符串,相当给出字符所对应的ASCII码串。

2.符号及其属性(1)寄存器:8086/8088 CPU的寄存器可以作为指令的操作数。

(2)变量:即内存单元的符号地址。

变量不能与保留字、段名重名。

它有三个属性:段属性,指变量所在段的段地址;偏移量,指变量所在段的起始地址到变量地址之间的字节数,即偏移(有效、逻辑)地址。

类型,指指变量具有的字节数,包括BYTE、WORD、DWORD、QWORD和TBYTE等。

(3)标号:即代码段中某条指令的符号地址,由编程者根据需要确定的。

标号不能与保留字重名,可使⽤字母、数字及下划线,但不允许⽤数字开头,字符个数不超过31个。

标号作为符号地址也有三个属性:段、偏移量和类型(NEAR、FAR)。

3.表达式表达式是作为语句的⼀个操作数,在汇编时⼀个表达式得到⼀个值。

(1)操作数数据——常数、符号常量;存储单元地址——常⽤符号地址表⽰。

(2)运算符算术运算符:+、-、*、/、MOD。

对地址的运算仅有+(加)、-(减)运算符。

新版汇编语言程序设计1-5章【课后答案】

新版汇编语言程序设计1-5章【课后答案】

新版汇编语言程序设计【课后习题答案】第1章汇编语言基础知识〔习题1.1〕简述计算机系统的硬件组成及各部分作用。

〔解答〕CPU:包括运算器、控制器和寄存器组。

运算器执行所有的算术和逻辑运算;控制器负责把指指令逐条从存储器中取出,经译码分析后向机器发出各种控制命令,并正确完成程序所要求的功能;寄存器组为处理单元提供所需要的数据。

存储器:是计算机的记忆部件,它用来存放程序以及程序中所涉及的数据。

外部设备:实现人机交换和机间的通信。

〔习题1.2〕明确下列概念或符号:主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB〔解答〕主存又称内存是主存储器的简称,主存储器存放当前正在执行的程序和使用的数据,CPU 可以直接存取,它由半导体存储器芯片构成其成本高、容量小、但速度快。

辅存是辅助存储器的简称,辅存可用来长期保存大量程序和数据,CPU需要通过I/O接口访问,它由磁盘或光盘构成,其成本低、容量大,但速度慢。

RAM是随机存取存储器的英语简写,由于CPU可以从RAM读信息,也可以向RAM写入信息,所以RAM也被称为读写存储器,RAM型半导体存储器可以按地址随机读写,但这类存储器在断电后不能保存信息;而ROM中的信息只能被读出,不能被修改,ROM型半导体通常只能被读出,但这类存储器断电后能保存信息。

存储器由大量存储单元组成。

为了区别每个单元,我们将它们编号,于是,每个存储单元就有了一个存储地址,I/O接口是由一组寄存器组成,为了区别它们,各个寄存器进行了编号,形成I/O地址,通常称做I/O端口。

KB是千字节、MB是兆字节、GB是吉字节和TB是太字节,它们都是表示存储器存储单元的单位。

〔习题1.3〕什么是汇编语言源程序、汇编程序、目标程序?〔解答〕用汇编语言书写的程序就称为汇编语言源程序;完成汇编工作的程序就是汇编程序;由汇编程序编译通过的程序就是目标程序。

〔习题1.4〕汇编语言与高级语言相比有什么优缺点?〔解答〕汇编语言与高级语言相比的优点:由于汇编语言本质就是机器语言,它可以直接地、有效地控制计算机硬件,因而容易产生运行速度快,指令序列短小的高效目标程序,可以直接控制计算机硬件部件,可以编写在“时间”和“空间”两方面最有效的程序。

汇编语言程序设计习题答案

汇编语言程序设计习题答案

第一章微型计算机系统概述1.3习题与综合练习1.解释和区别下列名词术语(1)微处理器(MP):具有中央处理器功能的大规模集成电路器件微型计算机(MC)微型计算机系统(MCS)(2)硬件:硬件是计算机系统的躯体,由控制器,运算器,存储器,输入设备,输出设备5大部分组成。

软件:软件是计算机的头脑和灵魂,可分为系统软件和应用软件。

(3)字节:8位二进制是一个字节。

字:16位二进制构成一个字。

字长:计算机的运算部件能同时处理的二进制数据的位数。

(4)指令指针:存放BIU要取的下一条指令的偏移地址。

指令寄存器:指令译码器:状态寄存器:(5)存储单元:存储内容:存储地址:存储容量:(6)RAM:ROM:软件固化:2.冯·诺依曼计算机结构的特点是什么?(1)采用二进制数的形式表示数据和指令。

(2)将指令和数据存放在存储器中。

(3) 计算机硬件由控制器,运算器,存储器,输入设备和输出设备5大部分组成。

3.件数计算机系统中复杂指令集和精简指令集的特点和用途。

复杂指令集(CISC):在微型计算机的体系结构组成结构上是以复杂指令为设计的计算机,在指令的运行过程中按指令的复杂程度来指挥计算机完成各条指令,由于各条指令复杂程度不同分配的时钟周期各不相同,执行指令所需时间就不相同。

CISC体系的指令集由微程序来实现,即每一个操作由若干微操作的程序组合来实现。

所以CISC可以使用微指令编程的方式实现多种和功能复杂的指令。

精简指令系统(RISC):不管计算机的指令如何复杂,在一个计算机时钟周期内完成,计算速度快,指令集简单。

每一条指令直接有硬布线实现,即它的每条指令原则上有自己的一套逻辑时序电路直接实现,所以单条指令的实现所占用的硬件资源较多。

因为该体系没有能采用增加单条指令的功能或高位的指令语义,也没有增加指令的条数,而是集中于它的精简指令集上。

4.CPU是计算机系统中的重要部件,试说明CPU的结构和功能。

微处理器是计算机中最关键的部件,由控制器,运算器,寄存器组和辅助部件组成。

汇编语言程序设计部分练习参考答案

汇编语言程序设计部分练习参考答案

汇编语言程序设计练习参考答案(第三章 80x86的指令系统与寻址方式) 1.(1)立即寻址-(2)直接寻址7237H(3)使用BX的寄存器寻址-(4)使用BX的间接寻址637DH(5)使用BX的寄存器相对寻址0D5B4H(6)基址变址寻址8E18H(7)相对基址变址004FH2.(1) ADD DX,BX(2) ADD AL,[BX][SI](3) ADD [BX+0B2H], CX (4) ADD WORD PTR [0524H] ,2A59H(5) ADD AL ,0B5H3.(1)MOV BX,OFFSET BLOCK+0AH MOV DX ,[BX](2) MOV SI,OAHMOV DX,BLOCK[SI] 或MOV DX,SI+BLOCK(3)MOV BX ,OFFSET BLOCK 或LEA BX,BLOCKMOV SI,OAHMOV DX,[BX][SI]4.(1) MOV AX,1200H 1200H => AX = 1200H(2) MOV AX,BX BX = 0100H => AX = 0100H(3) MOV AX,[1200H] ((ds)*10h+1200h) = (21200h) = 4C2AH => AX = 4C2AH(4) MOV AX,[BX] ((ds)*10h+ (bx)) = (20199H) = 3412H => AX = 3412H(5) MOV 1100H[BX] ((ds)*10h+(bx)+1100h) = (21200H) = 4C2AH => AX = 4C2AH(6) MOV AX,[BX][SI] ((ds)*10h+(si)+(bx)) = (20102H) = 7856H => AX = 7856H(7) MOV AX,1100H[BX][SI] ((ds)*10h+(si)+(bx)+1100h) = (21202hH) = 65B7H => AX = 65B7H注:原题(5)和题(7)中的1100后面漏了十六进制说明符“H”5.(1)当前指令的IP为2BC0H,段内直接转移指令占3个字节,因此下一条指令的地址(IP)值应该为2BC2H,于是转移的偏移地址为: 2BC2H+5119H = 7CDCH(2) 按题意,该指令为JMP WORD PTR [BX]((DS)*10H+(BX)) = (212A*10H+1200H) = (224A0H) = 0600H, 所以转移的偏移地址为0600H(3)按题意,该指令为JMP WORD PTR D[BX]((DS)*10H+(BX)+D) = (212A*10H+1200H+5119H) = (275B9H) = 098AH, 所以转移的偏移地址为098AH6. LDS BX ,[2000H]MOV AX,[BX]图示如图3.1注:为了只改变AX,不影响其它寄存器,本题可以做如下完善处理:PUSH DSPUSH BXLDS BX,[2000H]MOV AX,[BX]POP BXPOP DS图3.17. JMP SHORT OBJ指令占两个字节,存放在偏移地址为0624H的连续两单元中,因此这条指令执行完后下一条指令的偏移地址(即IP值)为0626H,因此转向地址OBJ的值分别为:(1)0626H + 0027H = 064DH(2) 0626H + 006BH = 0691H(3) 0626H + 0FFC6 = 05ECH8. 指令源操作数的寻址方式物理地址(1)MOV AX,0ABH 立即数寻址-(2)MOV AX,BX 寄存器寻址-(3) MOV AX,[100H] 存储器直接寻址(ds)*10H+0100H = 20100H (4)MOV AX,V AL 存储器直接寻址(ds)*10H+0050H = 20050H (5)MOV AX,[BX] 寄存器间接寻址(ds)*10H+(bx)= 20100H (6) MOV AX,ES:[BX] 存储器直接寻址(es)*10H+(bx)= 21100H (7)MOV AX,[BP] 寄存器间接寻址(ss)*10H+(bp)= 15010H (8)MOV AX,[SI] 寄存器间接寻址(ds)*10H+(si)= 200A0H (9) MOV AX,[BX+10] 寄存器相对寻址(ds)*10H+(bx)+10 = 2010AH (10)MOV AX,V AL[BX] 寄存器相对寻址(ds)*10H+(bx)+0050H = 20150H (11) MOV AX,[BX][SI] 基址变址寻址(ds)*10H+(bx)+(si)= 201A0H (12) MOV AX,V AL[BX][SI] 相对基相变址寻址(ds)*10H+(bx)+(si)+0050H = 201F0H 9.(1)MOV AX, [BX+0CH] MOV ZREO ,AX (2) MOV AX,ARRAY[BX] MOV ZREO,AX10.MOV AX,TABLE 把符号地址TABLE所给出的字存储单元中的内容送给AX,指令执行完后,(AX)=1234HLEA AX,TABLE 把符号地址TABLE 的有效地址(这里是TABLE的偏移量)送给指定寄存器AX,指令执行完后,(AX)=0032H11.分配的存储单元如图3.2所示。

汇编语言程序设计 习题与答案.ppt

汇编语言程序设计 习题与答案.ppt
习题与答案
❖第一章 基础知识 ❖第二章 80x86计算机组织 ❖第三章 指令系统和寻址方式 ❖第四章 汇编语言程序格式 ❖第五章 循环与分支程序设计 ❖第六章 子程序设计 ❖第七章 高级汇编语言技术 ❖第八章 输入输出程序设计
2020-6-17
谢谢阅读
1
第一章 基础知识 1. P14,1、2、6、7题。
系统程序。 13. 连接程序I:把若干模块连接成可执行文件的系统程序 14. 指令O:告诉CPU要执行的操作,在程序运行时执行 15. 伪指令N:由汇编程序在汇编过程中执行的指令。
谢谢阅读
2020-6-17
13
第三章 指令系统和寻址方式
• P107,1、2、3、4、5、8、13、14、15、17、 18、19、23、25、27、29、30、32、33、35、 37、38、49、51题。
– 逻辑地址:3010:007A
• 3010H * 16D + 7AH = 30100H + 7AH = 3017AH
– 总结:
• 同一物理地址,可用不同逻辑地址表示。
谢谢阅读
2020-6-17
11
第二章 80x86计算机组织 — 2.9
2.9:CPU、存储器、堆栈、IP、SP、状态标志 1. CPUM:分析、控制、执行指令的部件, 由ALU与寄存器等组成。 2. 存储器C:存储程序、数据等信息的记忆装 置,微机有RAM与ROM两种。 3. 堆栈D:以后进先出方式工作的存储空间。 4. IPB:指示下一条指令的地址。 5. SPA:保存当前栈顶地址的寄存器。 6. 状态标志L:记录指令操作结果的标志。 7. 控制标志K:控制操作的标志,如DF位。 8. 段寄存器J:保存各段起始地址的寄存器。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二章答案题2.1 8086/8088通用寄存器的通用性表现在何处?8个通用寄存器各自有何专门用途?哪些寄存器可作为存储器寻址方式的指针寄存器?答:8086/8088通用寄存器的通用性表现在:这些寄存器除了各自规定的专门用途外,他们均可以用于传送和暂存数据,可以保存算术逻辑运算中的操作数和运算结果;8个通用寄存器的专门用途如下:AX 字乘法,字除法,字I/OBX 存储器指针CX 串操作或循环控制中的计数器DX 字乘法,字除法,间接I/OSI 存储器指针(串操作中的源指针)DI 存储器指针(串操作中的目的指针)BP 存储器指针(存取堆栈的指针)SP 堆栈指针其中BX,SI,DI,BP可作为存储器寻址方式的指针寄存器题2.2从程序员的角度看,8086/8088有多少个可访问的16位寄存器?有多少个可访问的8位寄存器?答:从程序员的角度看,8086/8088有14个可访问的16位寄存器;有8个可访问的8位寄存器;题2.3寄存器AX与寄存器AH和AL的关系如何?请写出如下程序片段中每条指令执行后寄存器AX的容:MOV AX,1234HMOV AL,98HMOV AH,76HADD AL,81HSUB AL,35HADD AL,AHADC AH,ALADD AX,0D2HSUB AX,0FFH答:MOV AX,1234H AX=1234HMOV AL,98H AX=1298HMOV AH,76H AX=7698HADD AL,81H AX=7619HSUB AL,35H AX=76E4HADD AL,AH AX=765AHADC AH,AL AX=D15AHADD AX,0D2H AX=D22CHSUB AX,0FFH AX=D12DH题2.48086/8088标志寄存器中定义了哪些标志?这些标志可分为哪两类?如何改变这些标志的状态?答:8086/8088标志寄存器中定义了9个标志,如下:CF: Carry FlagZF: Zero FlagSF: Sign FlagOF: Overflow FlagPF: Parity FlagAF: Auxiliary Carry FlagDF: Direction FlagIF: Interrupt-enable FlagTF: Trap Flag这些标志可分为两类,分别为:1、运算结果标志;2、状态控制标志;采用指令SAHF可把AH中的指定位送至标志寄存器低8位SF、ZF、AF、PF、CF;采用CLC可清除CF,置CF到0采用STC可置CF到1采用CLD可置DF到0采用sTD可置DF到1采用CLI可置IF到0采用STI可置IF到1另外,在某些指令执行过程中会改变部分标志的状态;题2.5请说说标志CF和标志OF的差异。

答:如果把指令中处理的数据按照无符号数看待,则处理结果达到进位是,置CF为1;如果把该处理中的数据按照有符号数看待,则处理结果超过有符号数表达围的,置OF 为1;两个标志同步进行,CPU并不知道该数的类型;题2.68086/8088如何寻址1M字节的存储器物理地址空间?在划分段时必须满足的两个条件是什么?最多可把1M字节空间划分成几个段?最少可把1M字节地址空间划分成几个段?答:8086/8088通过对存储器分段和使用段寄存器的方式寻址1M字节的存储器物理地址空间;在划分段时必须满足的两个条件是:1、逻辑段的开始地址必须是16的倍数;2、逻辑段的嘴道长度是64K;1M的字节空间划分为64K个逻辑段;最少可把1M字节地址划分成16个逻辑段;题2.7在8086/8088上运行的程序某一时刻最多可访问几个段?程序最多可具有多少个段?程序至少几个段?答:在8086/8088上运行的程序某一时刻最多可访问4个当前段:代码段,数据段,堆栈段和附加段;程序最多可具有4种类型的段,最少要有一个代码段;题2.8存储单元的逻辑地址如何表示?存储单元的20位物理地址如何构成?答:存储单元的逻辑地址由段值和偏移两部分组成:段值:偏移;存储单元的20位物理地址可以表示为:物理地址=段值×16+偏移;题2.9当段重叠时,一个存储单元的地址可表示成多个逻辑地址。

请问物理地址12345H 可表示多少个不同的逻辑地址?偏移最大的逻辑地址是什么?偏移最小的逻辑地址是什么?答:12345H可表示1000H(4096)个不同的逻辑地址,偏移最大的逻辑地址是235:0FFF5H偏移最小的逻辑地址是1234:0005H题2.10 为什么称CS为代码段寄存器?为什么称SS为堆栈寄存器?答:因为在取指令的时候,规定的段寄存器就是CS,所以CS为代码段寄存器;而堆栈操作时规定的寄存器是SS,所以SS为堆栈寄存器;题2.11 请举例说明何为段前缀超越。

什么场合下要使用段前缀超越?答:在存取一般存储器操作数时,段寄存器可以不是DS;当偏移设计BP寄存器时,段寄存器也可以不必是SS;如Mov AX,[si] 默认段地址在DS中,也可以改变:Mov AX, ES:[si] 当数据并不在默认的DS指定段时,可以采用段前缀超越;题2.12 8086/8088的基本寻址方式可分为哪三类?他们说明了什么?答:8086/8088的基本寻址方式可分为以下三类:1、存储器寻址;2、立即寻址;3、寄存器寻址;他们说明了cpu有三类合计七种方式进行基本寻址;题2.13 存储器寻址方式分为哪几种?何为存储器的有效地址?答:存储器寻址方式分为以下几种:1、立即寻址;2、直接寻址;3、寄存器寻址;4、寄存器间接寻址;5、寄存器相对寻址;6、基址加变址寻址;7、相对基址加变址寻址;存储器的有效地址是一个16bit的无符号数;题2.14 什么场合下缺省的段寄存器是SS?为什么这样安排?答:当使用堆栈时,缺省的段寄存器是SS;因为SS定义为堆栈段寄存器,配合SP堆栈指针,用来指向堆栈的栈顶;题2.15 请说明如下指令中源操作数的寻址方式,并作相互比较:MOV BX,[1234H]MOV BX,1234HMOV DX,BXMOV DX,[BX]MOV DX,[BX+1234H]MOV DX,[BX+DI]MOV DX,[BX+DI+1234H]答:MOV BX,[1234H];直接寻址MOV BX,1234H:立即寻址MOV DX,BX:寄存器寻址MOV DX,[BX]:寄存器间接寻址MOV DX,[BX+1234H]:寄存器相对寻址MOV DX,[BX+DI]:基址加变址寻址MOV DX,[BX+DI+1234H]:相对基址加变址寻址题2.16 8086/8088提供了灵活多样的寻址方式,如何适当的选择寻址方式?答:每种寻址方式都有其特点,首先应该掌握不同寻址方式之间的区别,以及适用的围,结合程序中的需要进行灵活选择。

题2.17 设想一下这些寻址方式如何支持高级语言的多种数据结构?答:自己设想!题2.18 为什么目标操作数不能采用立即寻址方式?答:立即寻址表示是一个操作数,并非一个存储空间,作为目标操作数是不合适的;题2.19 处理器的通用寄存器是否越多越好?通用寄存器不够用怎么办?答:处理器的通用寄存器并非越多越好,因为如果处理器的通用寄存器数量太多,势必造成处理器的成本增加,同时也增加了处理器设计的复杂度;如果通用寄存器不够用,应该采用存中的存储单元代替,不过速度上要有所牺牲;题2.20 哪些存储器寻址方式可能导致有效地址超出64K的围?8086/8088如何处理这种情况?答:寄存器相对寻址,基址加变址寻址,相对基址加变址寻址这三种寻址方式有可能导致有效地址超出64K的围,8086/8088将取其64K的模进行访问;题2.21 什么情况下根据段值和偏移确定的存储单元地址会超出1M?8086/8088如何处理这种情况?答:当物理地址的计算超过FFFFFH时,存储单元地址会超出1M,8086/8088将取其1M的模覆盖存取;题2.22 8086/8088的指令集可分为哪6个子集?答:8086/8088的指令集可分为以下6个子集:1、数据传输2、算术运算3、逻辑运算4、串操作5、程序控制6、处理器控制题2.23 8086/8088的指令集合中,最长的指令有几个字节?最短的指令有几个字节?答:8086/8088的指令集合中,最长的指令4个字节,最短的指令2个字节;MOV AX,[BX+SI+1234H]题2.24 8086/8088的算术逻辑运算指令最多一次处理多少二进制位?当欲处理的数据长度超出该围怎么办?答:8086/8088的算术逻辑运算指令最多一次处理16bit的二进制位;如果处理的数据长度超出则分成若干部分进行逻辑运算,最后进行整合;题2.25 如何时序数据段和代码段相同?答:将数据段的容写入代码段中,并将代码段的段值赋给DS即可;题2.26 通常情况下源操作数和目的操作数不能同时是存储器操作数。

请给出把存储器操作数甲送到存储器操作数乙的两种方法。

答:法一:MOV AX, [BX]MOV [SI],AX DS:[BX]=甲,DS:[SI]=乙法二:MOV AX,[BX]XCHG AX,[SI]法三:PUSH WORD PTR [BX]POP WORD PTR [SI]题2.27 请用一条指令实现把BX的容加上123并把和送到寄存器AX。

答:LEA AX, [BX+123H]题2.28 堆栈有哪些用途?请举例说明。

答:堆栈的用途主要有:1、现场和返回地址的保护;MOV AX, OFFSET ADDRESSPUSH AXJMP XXX...RET2、寄存器容的保护;PUSH AXPUSH BX...POP BXPOP AX3、传递参数;PUSH [BX]CALL XXX...XXX:POP AX...4、存储局部变量;PUSH DSPUSH CSPOP DS...POP DS题2.29 在本章介绍的8086/8088指令中,哪些指令把寄存器SP作为指针使用?8086/8088指令集中,哪些指令把寄存器SP作为指针使用?答:以下指令把寄存器SP作为指针使用:1、PUSH2、POP3、PUSHF4、POPF5、PUSHA6、POPA7、RET8、CALL9、RETF题2.30 请说说标志CF的用途。

请至少给出使标志CF清0的三种方法。

答:CF的用途主要有:1、配合条件转移语句进行条件转移;2、配合移位指令实现操作数之间的位转移;3、常作为子程序的出口参数;如DOS磁盘文件管理功能调用等;CF清0的方法:法一:CLC法二:ADD AX,0FFFFH法三:CMP AX,0题2.31 请写出如下程序片段中每条算术运算指令执行后标志CF、ZF、SF、OF、PF和AF 的状态。

MOV AL,89HADD AL,ALADD AL,9DHCMP AL,0BCHSUB AL,ALDEC ALINC AL答:INSTRUCTION CF ZF SF OF PF AFMOV AL,89H000000ADD AL,AL10011 1ADD AL,9DH001010CMP AL,0BCH101010SUB AL,AL010010DEC AL00101 1INC AL01001 1题2.32 什么是除法溢出?如何解决16位被除数8位除数可能产生的溢出?答:除法溢出是指除数如果是0,或者在8位除数时商超过8位,或者在16位除时商超过16位,则认为是除法溢出,引起0中断;首先要确定8位除数不能为0,其次要确定商的最大值不能超过8位,如果超过8位,则可采用16位的除法;题2.33 请写出如下程序片段中每条逻辑运算指令执行后标志ZF、SF、PF的状态:MOV AL,45HAND AL,0FHOR AL,0C3HXOR AL,AL答:INSTRUCTION ZF SF PFMOV AL,45H000AND AL,0FH00 1OR AL,0C3H010XOR AL,AL10 1题2.34 “MOV AX,0”可寄存器AX清0。

相关文档
最新文档