《80x86汇编语言程序设计》教案及答案

合集下载

《IBM PC 80X86汇编语言程序设计》PPT电子课件教案-第六章 子程序设计

《IBM PC 80X86汇编语言程序设计》PPT电子课件教案-第六章 子程序设计

《IBM PC 80X86汇编语言程序设计》
冶金工业出版社
第6章
1、子程序的概念和特点
子程序:把在程序中多次出现,具有独立功能 的程序段写成程序模块,该模块可被多次调用, 称之为子程序。
特点:①可重复使用(调用) ②具有通用性(可通过入口参数实现) ③可浮动性(存放位置灵活) ④可递归性和可重入性
第6章
第六章 子程序设计
一、子程序的定义 二、子程序的结构形式
三、子程序的设计和调用 四、子程序的参数传递方法 五、子程序的嵌套和递归调用 六、子程序的设计举例 七、多模块程序设计 八、汇编语言和高级语言的混合编程
《IBM PC 80X86汇编语言程序设计》
冶金工业出版社
第6章
一、子程序的定义
1、子程序的概念和特点 2、子程序的定义 3、子程序的调用和返回
《IBM PC 80X86汇编语言程序设计》
冶金工业出版社
第6章
2、子程序的定义
子程序的定义是由过程定义伪指令PROC和ENDP 来完成的。其格式如下:
过程名 PROC [NEAR/FAR]

过程名 ENDP
其中PROC表示过程定义开始,ENDP表示过程定 义结束。过程名是过程入口地址的符号表示。
一般过程名同标号一样,具有三种属性,即段 属性、偏移地址属性以及类型属性。
《IBM PC 80X86汇编语言程序设计》
冶金工业出版社
第6章
3、子程序的调用和返回
❖ 调用
①段内直接调用
格式:CALL 子程序名
功能:将子程序返回地址(断点)入栈
SP←SP-2
(SP)←IP,
并转到子程序入口地址去执行子程序。
❖ 返回指令

《汇编语言程序设计》教案及答案(第二版)

《汇编语言程序设计》教案及答案(第二版)

《汇编语言程序设计》教案附:习题参考答案《IBM-PC汇编语言程序设计》(第2版)沈美明、温冬婵编著教案编写时间:20XX年8月18日前言1.汇编语言是计算机能提供给用户的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。

2.汇编语言程序设计是高等院校电子计算机硬、软件及应用专业学生必修的核心课程之一。

它不仅是计算机原理、操作系统等其它核心课程的必要先修课,而且对于训练学生掌握程序设计技术、熟悉上机操作和程序调试技术都有重要作用。

3.本教材共有十一章,其内容安排如下:(1).第一、二章为汇编语言所用的基础知识。

(2).第三章详细介绍80x86系列CPU的指令系统和寻址方式。

(3).第四章介绍伪操作、汇编语言程序格式及汇编语言的上机过程。

(4).第五、六章说明循环、分支、子程序结构和程序设计的基本方法。

(5).第七章说明宏汇编、重复汇编及条件汇编的设计方法。

(6).第八章叙述输入/输出程序设计方法,重点说明中断原理、中断过程及中断程序设计方式。

(7).第九章说明BIOS和DOS系统功能调用的使用方法。

(8).第十~十一章分别说明图形显示、发声及磁盘文件存储的程序设计方法,同时提供各种程序设计方法和程序实例。

附:教学参考书1.沈美明、温冬婵编著,IBM–PC汇编语言程序设计(第2版),清华大学出版社,20XX年(教材)2.沈美明、温冬婵编著,IBM–PC汇编语言程序设计,清华大学出版社,1991年3.沈美明、温冬婵编著,IBM–PC汇编语言程序设计—例题习题集,清华大学出版社,1991年6月4.沈美明、温冬婵、张赤红编著,IBM–PC汇编语言程序设计—实验教程,清华大学出版社,1992年5.周明德,微型计算机IBM PC/XT(0520系列)系统原理及应用(修订版),清华大学出版社,19916.郑学坚、周斌,微型计算机原理及应用(第二版),清华大学出版社,19957.王士元、吴芝芳,IBM PC/XT[长城0520] 接口技术及其应用,南开大学出版社,19908.杨素行,微型计算机系统原理及应用,清华大学出版社,19959.戴梅萼、史嘉权,微型计算机技术及应用—从16位到32位(第二版),清华大学出版社,199610.张昆藏,IBM PC/XT微型计算机接口技术,清华大学出版社,199111.孟绍光,李维星,高档微机组成原理及接口技术(80386/80486/Pentium),学苑出版社,199312.吴秀清,周荷琴,微型计算机原理与接口技术,中国科学技术大学出版社目录第 1 章基础知识 (5)1.1进位计数制与不同基数的数之间的转换 (5)1.2二进制数和十六进制数的运算 (6)1.3计算机中数和字符的表示 (7)1.4几种基本的逻辑运算 (7)第 2 章80X86计算机组织 (8)2.180X86微处理器 (8)2.2基于微处理器的计算机系统构成 (8)2.3中央处理机 (9)2.4存储器 (10)2.5外部设备 (11)第 3 章80X86的指令系统和寻址方式 (12)3.180X86的寻址方式 (12)3.2程序占有的空间和执行时间 (14)3.380X86的指令系统 (14)第 4 章汇编语言程序格式 (31)4.1汇编程序功能 (31)4.2伪操作 (31)4.3汇编语言程序格式 (35)4.4汇编语言程序的上机过程 (38)第 5 章循环与分支程序设计 (40)5.1循环程序设计 (40)5.2分支程序设计 (41)5.3如何在实模式下发挥80386及其后继机型的优势 (41)第 6 章子程序结构 (43)6.1子程序的设计方法 (43)6.2子程序的嵌套 (44)6.3子程序举例 (44)第7 章高级汇编语言技术 (46)7.1宏汇编 (46)7.2重复汇编 (47)7.3条件汇编 (48)第8 章输入/输出程序设计 (49)8.1I/O设备的数据传送方式 (49)8.2程序直接控制I/O方式 (50)8.3中断传送方式 (50)第9 章BIOS和DOS中断 (53)9.1键盘I/O (53)9.2显示器I/O (55)9.3打印机I/O (56)9.4串行通信口I/O (57)第10 章图形与发声系统的程序设计 (58)10.1显示方式 (58)10.2视频显示存储器 (58)10.3EGA/VGA图形程序设计 (59)10.4通用发声程序 (60)10.5乐曲程序 (61)第11 章磁盘文件存取技术 (62)11.1磁盘的记录方式 (62)11.2文件代号式磁盘存取 (63)11.3字符设备的文件代号式I/O (64)11.4BIOS磁盘存取功能 (65)附录:《IBM—PC汇编语言程序设计》习题参考答案 (66)第一章.习题 (66)第二章.习题 (67)第三章.习题 (68)第四章.习题 (81)第五章.习题 (86)第六章.习题 (104)第七章.习题 (117)第八章.习题 (124)第九章.习题 (129)第十章.习题 (132)第十一章.习题 (143)第 1 章 基础知识【教学目的】本章内容是本课程的基础,通过本章学习,使学生明确汇编语言程序设计的学科性质、基本内容和学习意义,掌握数制的转换、数据的编码,了解本门课程的教学要求和学习方法。

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

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

汇编语言程序设计教案及习题答案教案章节:一、汇编语言简介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. 汇编语言学习的方法与建议(正确)重点和难点解析本文主要介绍了汇编语言程序设计的基础知识和应用领域,通过详细的章节安排,从汇编语言的基本概念、语法规则、程序设计步骤、常用指令及其功能、输入输出操作、杂项指令、子程序调用、程序举例、调试与优化等方面进行了深入讲解。

80X86汇编语言知识程序设计教育教案课后习题集标准答案

80X86汇编语言知识程序设计教育教案课后习题集标准答案

第二章答案Tarzan 版题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.4 8086/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至IJ 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.6 8086/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位物理地址可以表示为:物理地址=段值X 16 +偏移;题2.9 当段重叠时,一个存储单元的地址可表示成多个逻辑地址.请问物理地址12345H 可表不多少个不同的逻辑地址?偏移最大的逻辑地址是什么?偏移最小的逻辑地址是什么?答:12345H可表示1000H(4096)个不同的逻辑地址,偏移最大的逻辑地址是235:0FFF5H 偏移最小的逻辑地址是1234:0005H题2.10为什么称CS为代码段存放器?为什么称SS为堆栈存放器?答:由于在取指令的时候,规定的段存放器就是CS所以CS为代码段存放器;而堆栈操作时规定的存放器是SS,所以SS为堆栈存放器;题2.11请举例说明何为段前缀超越.什么场合下要使用段前缀超越?答:在存取一般存储器操作数时,段存放器可以不是DS;当偏移设计BP存放器时,段存放器也可以不必是SS;如MovAX,[si] 默认段地址在DS中,也可以改变:MovAX, 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,1234H MOV DX,BX MOV 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什么情况下根据段值和偏移确定的存储单元地址会超出1MP 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 WORDPTR [SI]题2.27请用一条指令实现把BX的内容加上123并把和送到存放器AX答:LEA AX, [BX+123H]题2.28堆栈有哪些用途?请举例说明.答:堆栈的用途主要有:1、现场和返回地址的保护;MOV AX, OFFSET ADDRESSPUSH AXJMP XXXRET2、存放器内容的保护;PUSH AXPUSH BXPOP BX POP AX3、传递参数;PUSH [BX]CALL XXX ...XXX:POP AX ...4、存储局部变量;PUSH DSPUSH CS POP 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、常作为子程序的出口参数;如DOSB盘文件治理功能调用等;CF清.的方法:法一:CLC法二:ADD AX,0FFFFH 法三:CMP AX,0题 2.31 请写出如下程序片段中每条算术运算指令执行后标志CFZF、SF、OF PF和AF的状态.MOV AL,89HADD AL,ALADD AL,9DHCMP AL,0BCHSUB AL,ALDEC ALINC AL答:INSTRUCTION CF ZF AF MOVAL,89H 0 0 0ADDAL,AL 1 0 0 1ADDAL,9DH 0 0 1CMP SF1OF11PFAL,0BCHAL,AL 0AL1 0 1SUB 0 1 0DEC 0 0 1111INCAL 0 10 0 1 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,45H 0 0 0AND AL,0FH 0 0 1OR AL,0C3H 0 1 0XOR AL,AL 1 0 1 题2.34 “MOV AX0可存放器AX清0.另外再写出三条可使存放器AX清0的指令. 答:法一:XOR AX,AX法二:AND AX,0法三:SUB AX,AX题 2.35 请写出如下程序片段中每条移位指令执行后标志CR ZF、SF和PF的状态.MOV AL,84HSAR AL,1SHR AL,1ROR AL,1SHL AL,1ROL AL,1CF ZF SF PF答:INSTRUCTIONMOVAL,84H0 0 0 0SAR0 0 1 0AL,1SHRAL,10 0 0 0RORAL,11 0 0 0 〔该命令不影响SF位〕RCL1 0 0 0AL,1SHL0 0 1 0AL,1ROLAL,1 1 0 1 0题2.36 8086/8088中,哪些指令把存放器CX作为计数器使用?哪些指令把存放器BX作为基指针存放器使用?答:8086/8088中,以下指令把存放器CX作为计数器使用:1、LOOP2、LOOPE3、LOOPZ4、LOOPNZ5、LOOPNE6、JCXZ以下指令把存放器BX作为基指针存放器使用:1、MOV2、XCHG3、LEA4、LDS题2.37请不用条件转移指令 JG JGE JL 和JLE 等指令实现如下程序片段的功能:CMP AL,BLJGE OK XCHG AL,BLOK:……答: 如下命令可实现同样功能:PUSH CX XOR CX,CX MOV CH,02H MOV CL,AL MOV BH,0H SUB CX,BX SHR CX,8 LOOP OKAL,BLXCHG AL,BLOK:POP CX题2.38段间转移和段内转移的本质区别是什么? 8086/8088哪些指令可实现段间转移?答:段间转移和段内转移的本质区别是有没有对CS 进行设置,如果设置了新的CS 代码存放器,程序将转移到另一个段中,即实现了段间转移; 否那么CS 和原来一致,那么在同一代码段中继续进行,只是IP 指针进行了调整,即为段内转移; 8086/8088中如下指令可以实现段间转移: 1 .JMP FAR PTR LEAEL 2 .JMP OPRD3.CALL4.RET/RETF;Reserve CX ;CX=0 ;CH=02H ;CL=AL ;BH=0;If CH=2, AL>=BL; If CH=1, AL<BL ;CX=2 or 1;If CX=2 jmp to OK; If CX=1 Exchange;Revert CXA'题2.39 8086/8088的条件转移指令的转移范围有多大?如何实现超出范围的条件转移?答:8086/8088的条件转移指令的转移范围只能从—126到+129之间,如果出现超出范围的条件转移,要借助无条件转移命令JMP题2.40相对转移和绝对转移的区别是什么?相对转移的有何优点?答:相对转移和绝对转移的区别是相对转移记录了目标地址与当前地址的差值,而绝对转移在转移命令中直接包含了目标地址;相对转移有利于程序的浮动,比方说增加了命令语句等;题2.41请指出以下指令的错误所在: MOV CX,DL XCHG [SI],3 POP CS MOV IP,AX SUB [SI],[DI] PUSH DH OR BL,DX AND AX,DS MUL 16AND 7FFFH,AX DIV 256 ROL CX,BL MOV ES,1234H MOV CS,AX SUB DL,CF ADCAX,AL MOV AL,300 JDXZ NEXT答:MOV CX,DL XCHG [SI],3 POP CS可以MOV IP,AX SUB [SI],[DI];存放器大小不一;不能与立即数进行交换;POP旨令的对象不能是CS, PUSH;IP不能是源也不能是目的;如果参与的操作数有两个,只能有一个;PUSK 口 POP 只能处理16位的操;存放器大小不一 ;段存放器不可以是操作数 ;不可以使用立即数 ;立即数不能是目的操作数;不可以使用立即数 ;BL 不可以作为操作数;段存放器为目的时,源不能是立即数,;代码段存放器 CS 不能为目的 ;CF 是Flag 中的一个bit ,不能如此 ;存放器大小不一 ;300 超过 0FFh,Over 8bit ;JCXZ是存储器操作数PUSH DH作数(8086/8088 )OR BL,DX AND AX,DS MUL 16AND 7FFFH,AX DIV 256 ROL CX,BL MOV ES,1234H需由通用存放器转MOV CS,AX SUB DL,CF ADC AX,AL MOV AL,300 JDXZ NEXT题2.42请指出如下指令哪些是错误的,并说明原因:MOV [SP],AX PUSH CS JMP BX+100H JMP CX ADD AL,[SI+DI] SUB [BP+DI-1000],AL ADD BH,[BL-3] ADD [BX],BX MOV AX,BX+DI LEA AX,[BX+DI] XCHG ES:[BP],AL XCHG [BP],ES答:MOV [SP],AXPUSH CS JMP BX+100H JMP CX ADD AL,[SI+DI];SP 非有效存放器间接寻址之存放器;对 ;对;对;SI 和DI 只能出现一个,与 BX, BPSUB [BP+DI-1000],AL;BL 只是一个 8bit 存放器;对;对 ;对;对;段存放器不能是操作数题2.43以下程序片段完成什么功能,可否有更简单的方法实现同样的功能:XCHG AX,[SI] XCHG AX,[DI] XCHG AX,[SI]答: 程序实现[SI]和[DI]中的内容交换;AX 中内容不变;有,如下: PUSH [SI] PUSH [DI] POP [SI] POP [DI]题2.44请比拟如下指令片段:LDS SI,[BX]MOV SI,[BX] MOV DS,[BX+2]MOV DS,[BX+2] MOV BX,[BX]答: LDS SI,[BX]MOV SI,[BX] MOV DS,[BX+2]MOV DS,[BX+2] MOV BX,[BX]第一组和第二组功能一致;第三章: Tarzan 版题3.1伪指令语句与指令语句的本质区别是什么?伪指令的主要作用是什么?ADD BH,[BL-3] ADD [BX],BX MOV AX,BX+DI LEA AX,[BX+DI] XCHG ES:[BP],AL XCHG [BP],ES;DS=[BX+2],SI=[BX];DS=[BX+2],SI=[BX];DS=[BX+2],BX=[BX]答:伪指令语句与指令语句的本质区别是指令语句有其对应的机器指令,而伪指令没有;伪指令的主要作用是指示汇编程序如何汇编源程序;题3.2汇编语言中的表达式与高级语言中的表达式有何相同点和不同点?答:汇编语言中的表达式与高级语言中的表达式的相同点是都采用运算符、操作符以及括号把常数和符合连起来;不同点是汇编语言的表达式除了数值表达式外还有地址表达式;题3.3汇编语言中数值表达式与地址表达式有何区别?答:汇编语言中数值表达式在汇编过程中由汇编程序计算出数值, 而地址表达式中局部相对地址的地方,在汇编时无法确定其确定地址;题3.4汇编语言中的变量和标号有何异同之处?答:汇编语言中的变量和标号的相同之处是都代表着一个地址;不同之处是变量表示的地址中存放的是数据,而标号表示的地址中存放的是代码;题3.5请计算如下各数值表达式的值:23H AND 45H OR 67H1234H/16+10HNOT(65535 XOR 1234H)1024 MOD 7+3LOW 1234 OR HIGH 5678H23H SHL 4"Eb" GE 4562H XOR -11234H SHR 6'a' AND (NOT ('a'-'A')'H' OR 00100000B76543Q LT 32768 XOR 765433645H AND 0FF00H答:23H AND 45H OR 67H ;67H1234H/16+10H ;133HNOT(65535 XOR 1234H) ;1234H1024 MOD 7+3 ;5LOW 1234 OR HIGH 5678H ;D6H 注意1234 不是1234H23H SHL 4 ;30H"Eb" GE 4562H XOR -1 ;01234H SHR 6 ;0048H'a' AND (NOT ('a'-'A') ;41H or 'A''H' OR 00100000B ;68H or'h'76543Q LT 32768 XOR 76543 ;题目最后的76543 有错,根据76543Q 处理:829cH 3645H AND 0FF00H ;3600H题3.6请计算如下程序片段中各地址表达式的值, 设BX= 1000H, SI= 2000H, DI = 3000H,BP= 4000H[BX+100H][DI][BP]2000H[SI]10H[BX][SI][BP-128][BX][DI-2]答:[BX+100H] ;[1100H][DI][BP] ;[7000H]2000H[SI] ;[4000H]10H[BX][SI] ;[3010H][BP-128] ;[3F80H][BX][DI-2] ;[3FFEH]题3.7设在某个程序中有如下片段,请写出每条传送指令执行后存放器AX的内容:ORG 100HVARW DW 1234H,5678HVARB DB 3,4VARD DD 12345678HBUFF DB 10 DUP⑺MESS DB 'HELLO'BEGIN: MOV AX,OFFSET VARB + OFFSET MESSMOV AX,TYPE BUFF + TYPE MESS + TYPE VARDMOV AX,SIZE VARW + SIZE BUFF + SIZE MESSMOV AX,LENGTH VARW + LENGTH VARDMOV AX,LENGTH BUFF + SIZE VARWMOV AX,TYPE BEGINMOV AX,OFFSET BEGIN答:ORG 100HVARW DW 1234H,5678HVARB DB 3,4VARD DD 12345678HBUFF DB 10 DUP(?)MESS DB 'HELLO'BEGIN: MOV AX,OFFSET VARB + OFFSET MESS ;AX=0218HMOV AX,TYPE BUFF + TYPE MESS + TYPE VARDAX=0006HMOV AX,SIZE VARW + SIZE BUFF + SIZE MESS;AX=000DH MOV AX,LENGTH VARW + LENGTH VARD ;AX=0002H MOV AX,LENGTH BUFF + SIZE VARW ;AX=000CH MOV AX,TYPE BEGIN ;AX=FFFFH MOV AX,OFFSET BEGIN;AX=0119H题3.8设如下两条指令中的符号 ABCD 是变量名,请说明这两条指令的异同.MOV AX,OFFSET ABCD LEA AX,ABCD答: 两条指令都是将 ABCD 的偏移地址放入 AX 存放器中;不同之处是OFFSETS 能取得用数据定义伪指令的变量的有效地址,而不能取得一般操 作 数的有效地址; 题3.9请指出如下指令的不明确之处,并使其明确: MOV ES:[BP],5 ADD CS:[1000H],10H DEC SS:[BX-8] JMP CS:[SI+1000H] MUL [BX+DI+2] DIV [BP-4] ;未指定存储单元属性 M OV WORD PTR ES:[BP],5 ;同上 ADD WORD PTR CS:[1000H],10H ;同上 DEC WORD PTR SS:[BX-8];无法确定段间还是段内转移 JMP WORD PTR CS:[SI+1000H]MUL [BX+DI+2] ;无法确定是 8位乘法还是16位乘法MUL WORD PTR [BX+DI+2]DIV [BP-4];同上 DIV WORD PTR [BP-4] 题3.10设在某个程序中有如下片段,请改正其中有错误的指令语句:VARW DW 1234H,5678H VARB DB 3,4 VARD DD 12345678HMOV AX,VARB MOV VARD,BX MOV VARD+2,ESMOV CL,VARW+3 LES DI,VARW答: MOV ES:[BP],5ADD CS:[1000H],10H DEC SS:[BX-8] JMP CS:[SI+1000H] 答: MOV AX,VARB ;VARB 是8bit 量,应该修改 AX 至U AL or AHMOV VARD,BX ; VARD是32bit量,要分两次传MOV VARD+2,ES ;同上MOV CL,VARW+3 ;同上,CL改为CXLES DI,VARW ; VARW非32 位量,应改为VARD题3.11请举例说明伪指令ASSUME的作用.答:ASSUME的作用是声明现在开始CS存放器对应于哪个段, DS对应于哪个段,SS和ES分别对应哪个段,可以相同也可以不同;如:ASSUME CS:CSEG,DS:DSEG,SS:SSEG,ES:ESEG可以根据需要重新建立对应关系;题3.12设在某个程序片段中有如下语句,请说明各符号的属性:SYMB1LABEL BYTESYMB2 EQU THIS BYTESYMB3 DW ?SYMB4 EQU BYTE PTR SYMB3答:SYMB1: BYTESYMB2: BYTESYMB3: WORDSYMB4: BYTE题3.13为什么说汇编语言中的等价语句EQU可理解为简单的宏定义?请举例说明.答:EQU可以用符号定义常数,表达式,指令助记符,字符串等;而宏定义是指定一个宏指令名,宏指令可表示相对应的程序片段.如:HELLO EQU "How are you !"与:HELLO MACRO'How are you !'ENDM题3.14设在某个程序片段中有如下语句,请说明各符号所表示的值:SYMB1 = 10SYMB2 = SYMB1*2SYMB1 = SYMB1 + SYMB2 + 4SYMB3 EQU SYMB1答:SYMB1 = 22HSYMB2 = 14HSYMB3 = 22H 题3.15请改写3.3.3的程序T3-1.ASM,使其只有一个段.答:;程序名:T3-1.ASM;功能:显示信息“ HELLO"cseg segmentassume cs:csegmess db 'HELLO',0dh,0ah,'$'start:mov ax,csegmov ds,axmov dx,offset messmov ah,9int 21hmov ah,4chint 21hcseg ends end start题3.16请说明指令“ JMP $+2 "指令的机器码中的地址差值是多少?答:2H题3.17源程序是否一定要以END语句结束?程序是否一定从代码段的偏移0开始执行?如果不是,那么如何指定?答:源程序可以不以END语句结束,不过END之后的内容汇编程序将忽略.程序不一定要从代码的偏移0开始执行,一个比拟简单的方法是利用END语句, 如END XXX程序将从XXX标号处开始执行;题3.18利用查表的方法实现代码转换有何特点?利用查表的方法求函数值有何特点?答:利用查表的方法实现代码转换的特点是:1、转换代码间不需要直接的算术或逻辑关系,只需要安排好表的组织即可;2、对于局部代码,其转换效率比拟高,主要时间用在寻址上;利用查表的方法求函数值的特点是:1、对于大局部的数学函数值的求值,直接计算困难较大,采用查表法可祢补缺乏;2、程序比拟简单;3、能够得到十进制或者十六进制格式的高精度函数值.4、函数值必须事先计算好;5、精度无法由程序限制;题3.19利用地址表实现多向分支有何特点?请举例说明.答:利用地址表实现多向分支的特点有:1、对于实现5路以上的多向分支,使用地址表既方便又高效;2、对于如何确定地址的位置,需要采用不同的方法实现;例子看书.题3.20请举例说明如何防止条件转移超出转移范围.答:如果出现条件转移超出了范围,那么可以利用无条件转移指令帮助跳转;如:cmp ax,'A' jb out_program如果超出范围:cmp ax,'A' jb out_com...out_com:jmp far ptr out_program题3.21请写一个程序片段统计存放器AX中置1的个数.答:count db ??0dh,0ah,'$'......call countAXcmp bl,9 ja sub10 jmp gosub10:sub bl,10mov count,31hgo:add bl,30h mov count+1,bl mov dx,offset count mov ah,9 int 21h mov ah,4ch int 21h 尸============================= ;入口:AX;出口:BL= AX中1的个数countAX proc mov cx,16 mov bl,0count1:shl ax,1jnc ADDAX1 add bl,1ADDAX1:loop countlretcountAX endp尸===========================题3.22设一个32位有符号数存放在DX AX中,请写一个求其补码的程序片段.答:Invert procmov bx,dxand bx,8000hcmp bx,0jz out_1 not dx not ax add ax,1 adc dx,0 or dx,8000h out_1:nop ret Invert endp题3.23写一个程序片段实现如下功能:依次重复存放器AL中的每一位,得到存放到DX存放器中.答:Expand procmov cx,7 xor dx,dxS0:shl dx,1shl dx,1shl al,1jnc CF0add dx,3hCF0:noploop S0 retExpand endp题3.24写一个程序片段实现如下功能:依次重复四次存放器结果存放到DX: AX存放器中.答:Expand procmov cx,3xor dx,dxxor bx,bxS0:shl al,1jnc CF0 16位的结果AL中的每一位,得到32位的CF0:shl dx,1shl dx,1shl dx,1shl dx,1loop S0mov cx,4S1:shl al,1jnc CF0_1add bx,0FhCF0_1:shl bx,1shl bx,1shl bx,1shl bx,1loop S1mov ax,bxretExpand endp题3.25写一个程序片段实现如下功能:把存放器AL和BL中的位依次交叉,得到的16位结果存放到DX存放器中.答:Expand procmov cx,8xor dx,dxS0:shl dx,1 shl al,1 jnc CF0add dx,1hCF0:shl dx,1shl bl,1jnc CF0_1add dx,1hCF0_1:loop S0 retExpand endp题3.26写一个优化的程序片段,实现把字符串中的小写子母变换为对应的大写子母.设字符串以0结尾.答:InvertC proc begin:mov al,mess[si]cmp al,61h jb next cmp al,7AH ja next and al,11011111b mov mess[si],al next:inc sijmp begin exit_1:nop retInvertC endp题3.27写一个优化的程序片段,统计字符串的长度.设字符串以0结尾.答:count procmov al,mess[si]cmp al,'0'jz exit_2 inc si jmp count exit_2:nopretcount endp ;si=数量题3.28写一个程序片段,滤去某个字符串中的空格符号〔ASCII码20H〕,设字符串以0结尾.答:DeleteSpace proc ;设$1=0, bx=0, Mess 为字符串首地址mov al,mess[si]cmp al,'0'jz exit_2 cmp al,'' jz next3 xchg al,mess[bx] xchg al,mess[si] inc bxnext3:inc sijmp DeleteSpaceexit_2:nopretDeleteSpace endp题3.29请写一个把两个字符串合并的例如程序.答:dseg segmentstring1 db 'Welcome to $'string2 db 'Beijing !$'dseg endscseg segmentassume cs:cseg,ds:dsegstart:mov ax,dseg mov ds,axxor bx,bx xor si,sikeepfind:mov al,string1[bx]mov al,string2[si]mov string1[bx],alcmp al,'$' jz exit inc si inc bx jmp combine exit:mov dx,offset stringlmov ah,09h int 21hmov ah,4chint 21hcseg ends end start80X86汇编语言程序设计教程(杨季文)习题答案三下(2021-12-01 09:53:32)标签:mov ascii码bl杨季文杂谈Tarzan 版题3.30请写一个可把某个字变量的值传唤为对应二进制数ASCII码串的例如程序.答:;Name : Show_hex_ascii;input : ah=Hex;output: dx='Hex'show_hex_ascii procmov dh,ahand dh,0f0h ;reserve high 4bitshr dh,4add dh,30h ;change 0-9 to '0-9'cmp dh,39hja add_dh_7dh_ok:mov dl,ahand dl,0fh ;reserve low 4bitadd dl,30h cmp dl,39h ja add_dl_7dl_ok:nop retadd_dl_7:add dl,7h ;revert A-F to 'A-F' jmp dl_okadd_dh_7:add dh,7hjmp dh_okshow_hex_ascii endp题3.31请写一个可把某个十进制数ASCII码串转换成对应非压缩BCD何压缩BCD的例如程序.答:;非压缩BCD码;Output al=非压缩BCD码TEST1 proccmp ah,'0'jb exitcmp ah,'9'ja exitsub ah,30hmov al,ahexit:nop ret TEST1 endp;压缩BCD码;Input ax=两个十进制数ASCII码;Output bl=压缩BCD码TEST2 proccmp ah,'0' jb exit cmp ah,'9' ja exit sub ah,30h mov bl,ah shl bl,4cmp al,'0'jb exitcmp al,'9'ja exit1sub al,30hadd bl,al exit1:nop retTEST2 endp题3.32请写一个可把某个十进制数ASCII码转换为对应的二进制的例如程序.答:table db '0000','0001','0010','001.,'0100','0101','0110','011.db '1000','1001’;Input bl=一个十进制数ASCII码;Output dx:ax=二进制ASCII码 ;程序未检验该十进制数是否在范围以内TEST3 proc sub bl,30h xor bh,bh shl bx,1 shl bx,1 mov dh,table[bx] mov dl,table[bx+1] mov ah,table[bx+2] mov al,table[bx+3]retTEST3endp题3.33请写出一个可把某个十六进制数ASCII码转换为对应的二进制的例如程序.答:table db '0000','0001','0010','001.,'0100','0101','0110','011.db '1000','1001','1010','1011','1100','1101','1110','1111' ......;Input bl= 一个十六进制数ASCII码;Output dx:ax=二进制ASCII码TEST3 proc cmp bl,30h jb exit1 ;小于30H的不在范围内sub bl,30hcmp bl,0Ah ;如果在9以内,开始转换0-9jb change1sub bl,0Ah cmp bl,6h ;如果在‘9' — 'A'之间,不在范围内jb exit1sub bl,6h ; 'A' =0 cmp bl,7h ;如果在‘A' — ' F'之间,开始转换jb change2cmp bl,21h ;如果大于'F',看是否在‘F'和‘a'之间jb exit1 ;如果在,那么不在范围内sub bl,20h ;'a'=0cmp bl,6h ;如果大于'f',那么不在范围内ja exitlchange2:add bl,9h ;根据table表,如果A= 0还需要加9才可以changel:xor bh,bhshl bx,1shl bx,1mov dh,table[bx]mov dl,table[bx+1]mov ah,table[bx+2]mov al,table[bx+3]exit1:retTEST3 endp题3.34请写一个实现数据块移动的例如程序.答:data segmentdata1 db 'Hello!!!..…$'....data2 db 128 dup⑺data endsxor ax,axxor bx,bxmov1:mov al,data1[bx]cmp al,'$'jz out1mov data2[bx],alinc bxjmp mov1out1:题3.35请编一个程序求从地址F000: 0000H开始的64K字节内存区域的检验和, 并转换为十六进制的数的ASCII码串.;Output: BX二字检验和TEST5 procmov ax,0F000Hmov es,axmov cx,0ffffhxor si,si xor bx,bxADD0:add bx,es:[si] inc siinc siloop add0retTEST5 endptablel db '0','1',2,'3','4',5,'6',7,'8','9' db 'A','B','C','D','E','F';Input bx=字检验和;Output dx:ax二字检验和ASCII码TEST4 proc push cxmov cx,bxpush cx mov cl,12 shr bx,cl pop cx mov dh,table1[bx]mov bx,cxand bx,0F00hpush cx mov cl,8 shr bx,cl pop cx mov dl,table1[bx]mov bx,cxand bx,00f0hpush cx mov cl,4 shr bx,clpop cxmov ah,table1[bx]mov bx,cxand bx,000fhmov al,table1[bx]mov bx,cxpop cxretTEST4 endp题3.36设已在地址F000:0000H开始的内存区域安排了100个字节的无符号8位二进制数.请编写一个程序求它们的和,并转换为对应十进制数的ASCII码串.答:;从F000:0000H开始100个byte无符号数相加TEST6 procpush cxpush axpush simov ax,0f000hmov es,axxor bx,bxxor si,sixor ax,axmov cx,100ADD2:mov al,es:[si]add bx,axinc siloop ADD2pop sipop axpop cxretTEST6endp......Dec_ASC db ' $';在数据区;Name:Convert1function: Hex convert to Dec ;Input: BX=a word of Hex ;Output: DS:Dec_ASCConvert1 procpush axpush cxpush dx mov ax,bx xor dx,dx; DX=负数的个数TEST7 procpush cx push ax push si mov ax,0f000h mov es,ax xor bx,bx xor si,si xor ax,ax xor di,di xor dx,dxmov cx,1024mov cx,2710hdiv cx 2710H=10000 add ax,30hmov dec_asc[0],almov ax,dx xordx,dx movcx,3E8h div cx;[0]二万位 ;3E8H=1000 add ax,30hmov dec_asc[1],almov ax,dxmov cl,64hdiv cl;[1]二千位 ;64H=100 add al,30hmov dec_asc[2],almov al,ahmov ah,0mov cl,0ah;[2]二百位;0A=10 div cladd ax,3030hmov dec_asc[3],almov dec_asc[4],ahpop dx;[3]二十位 ;[4]=个位 pop cxpop axretConvert1 endp题3.37设已在地址F000: 0000H 开始的内存区域安排了1024个16位有符号数.请编写 个程序统计其中的正数、负数和零的个数,并分别转换为对应的十进制数的ASCII 码串. 答: ;从F000:0000H 开始1024个 Word 有符号数统计;output Di=0 的个数 ; Bx=正数的个数Nextl:mov ax,es:[si]cmp ax,0jnz check_P inc di jmp next2 check_p:shl ax,1jnc ADD_P inc dx jmp next2 ADD_P:inc bx nex⑵inc si inc si loop Next1pop si pop ax pop cx retTEST7 endp分别call convert1,并保存到不同的地方即可;题3.38设从地址F000: 0000H开始的内存区域是缓冲区, 存放了一组单字节的正数或负数, 以0结尾.请编写一个程序确定其中最大的正数和最小的负数.答:;从F000:0000H开始以0结尾的单字节正数负数统计;output bh=最大的正数; bl=最小的负数TEST8 proc xor bx,bx xor si,si mov ax,0F000h mov es,axnext9:mov al,es:[si]cmp al,0jz exit9test al,80hjnz Neg_1 cmp al,bh jb next7 xchg al,bh next7:inc sijmp next9Neg_1:cmp al,bljg next8xchg al,bl next8:inc sijmp next9 exit9:retTEST8 endp题3.39设从地址F000: 0000H开始的1K字节内存区域是缓冲区.请写一个可收集该区域内所有子串“ OK〞开始地址的程序答:;从F000:0000H开始1K字节内存区域,统计子串“OK〞开始地址;output 开始地址=ADDRESSTEST9 proc。

80X86汇编语言电子教案(8-输入输出程序设计)

80X86汇编语言电子教案(8-输入输出程序设计)

3 I/O程序设计举例
例 发声子程序SOUND
已知设备控制寄存器的端口地址为61H
7 6 54 321
端口61H
1/0
表示不由震荡 器产生声音
0 0
2号定时器门控
控制其它外部设备
﹠ 放大器
控制原理
扬声器
使用61H寄存器的第1位交替为0和1 当第1位由0变1 延迟一会 又由1变0 脉冲门先打开 后关上 产生一个 脉冲电流 脉冲电流被放大后 送到扬声器使之发出声音
第八章 输入/输出程序设计
典型的计算机结构包括
中央处理机 存储器 外部设备
中央处 理机
总线控 制逻辑
系 统 总 线
存储器 接口 … 接口
大容量
存储器 I/O



I/O

设备
外部设备 是实现人机交互和机间通信为目的的一些机电设备 例如 键盘 显示器 等
计算机系统通过硬件接口及I/O控制程序对外设进行控制 使其完成I/O操作
(AH)=25H (AL)=中断类型号, DS:DX=中断程序的入口地址 执行: INT 21H 功能: 将DS:DX指定的中断程序入口放入AL 的中断类型号所在的中断向量的位置
取中断向量 入口
(AH)=35H (AL)=中断类型号,
执行: INT 21H
功能: 将AL 指定的中断类型在向量表中存放的 入口地址取出放入ES:BX中 (见书上P296例8.4)
1 I/O端口地址
为了存取接口上的寄存器 系统给这些寄存器分 配专门的存取地址 这样的地址称为端口地址
书上P284的表8.1列出了部分端口地址 注意
在Intel 80X86系列 CPU 的系统中 I/O端口地址 和存储单元地址分别编址 占用不同的地址空间 80X86的I/O地址空间可为64KB 端口地址范围 0000 FFFFH 虽然386及后继机型可有32位端口 但整个I/O 空间不允许超过64KB

80x86汇编课程设计

80x86汇编课程设计

80x86汇编课程设计一、教学目标本课程的教学目标是使学生掌握80x86汇编语言的基本语法、指令系统、编程方法和调试技巧。

通过本课程的学习,学生将能够:1.理解汇编语言的基本概念和特点,包括寄存器、内存、栈等概念。

2.掌握80x86汇编语言的指令系统,包括数据传输、算术运算、逻辑运算、控制流等指令。

3.学会使用汇编语言编写程序,包括程序的框架、调试和优化。

4.能够运用汇编语言解决实际问题,提高计算机的运行效率。

二、教学内容本课程的教学内容主要包括以下几个部分:1.汇编语言的基本概念和特点,如寄存器、内存、栈等。

2.80x86汇编语言的指令系统,包括数据传输、算术运算、逻辑运算、控制流等指令。

3.汇编语言的编程方法,包括程序的框架、调试和优化。

4.汇编语言在实际问题中的应用,如性能优化、嵌入式系统等。

三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法,包括:1.讲授法:讲解汇编语言的基本概念、指令系统和编程方法。

2.案例分析法:分析典型的汇编语言程序,让学生了解汇编语言在实际问题中的应用。

3.实验法:让学生动手编写汇编语言程序,培养实际操作能力。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:选用权威、实用的汇编语言教材,为学生提供系统性的学习资料。

2.参考书:提供汇编语言相关的高级参考书籍,帮助学生深入理解知识点。

3.多媒体资料:制作课件、视频等多媒体资料,提高学生的学习兴趣。

4.实验设备:准备计算机实验室,让学生进行汇编语言编程实践。

五、教学评估本课程的评估方式将包括平时表现、作业和考试等几个方面,以确保评估的客观性和公正性,并全面反映学生的学习成果。

具体评估方式如下:1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和理解程度,占总评的20%。

2.作业:布置相应的汇编语言编程作业,评估学生的编程能力和应用能力,占总评的30%。

80X86汇编语言电子教案(2-全部)

80X86汇编语言电子教案(2-全部)

要求1了解计算机系统的基本构成2的编程结构特别是CPU内部的寄存器组以及存储器的编址与寻址等相关内容119714004它是位微处理器21972800816KB319748080它是为多种应用而设计的第二代微处理器也是第一个通用的微处理器寻址能力达64KB11978年Intel8086它是一个位微处理器有条地址线寻1MB2Intel 8088是3802861982位微处理器有址线寻址空间16MB180386位操作通用位拥有根数据线条寻址空间高达4GB配有少量高速缓存2804868KB1月推出数据线位地址线位内部寄存器32位具有两个独立的超高速缓存2月推出数据线位地址线位内部寄存器位一两大部分硬件三个主要组成部分用连接软件系统软件软件是为了运行管理和维护计算机而编制的各种程序的总和系统软件核心是操作系统OS的任务是执行存放在存储器中的指令序列一CPU除了要完成算术逻辑操作外还需要负之间的数据传送任务开始为了使存储器速度更好地与运算器的速度相匹配在芯片中引入了高速缓冲存储器其就功能而言还是属于存储器除了有高速缓冲存储器之外主要有以下三部分组成ALU控制逻辑工作寄存器ALU进行算术和逻辑运算控制逻辑负责对全机的控制工作包括从存储器中取指指令的译码分析从存储器中取操作数发出执行指令的所有命令结果存入存储器以及对总线和的传送控制等工作寄存器息包括操作数地址操作数及运算的中间结果等二80寄存器可以分为的寄存器的寄存器在汇编程序设计时用到的寄存器的寄存器一般应用程序中不用而由系统程序所用的寄存器例如80386的系统地址寄存器控制寄存器测试寄存器等本节只介绍程序可见的寄存器的寄存器可以分为通用寄存器专用寄存器和段寄存器SS FS GSEAX EDX EFLAGS8086 / 8088它位的1通用寄存器位通用寄存器有数据寄存器AX BX CX DX 一般可用于传送和暂存数据保存算术逻辑运算中的操作数和运算结果可以存放地址位存器它们均有各自的名称可独立存取这样能有效地处理字和字节信息指针及变址寄存器SP BP SI DI存放某个存储单元地址的偏移或存放数据但是只能以字16位为单位使用堆栈指针寄存器以及其后继机型具有图中所示的完整的寄存器其通用寄存器有EBX ECX EDX ESP EBP EDI它们可以保存不同宽度的数据例数据AX数据AH AL保存数据及其后继机型中所有的通用寄存器可以存放数据也可以存放地址2专用寄存器的专用寄存器包括IP SP FLAGS 给出将要执行的指令在代码段中的偏移SP它用来存放栈顶的偏移地址FLAGS标志寄存器又称程序状态寄存器PSW 主要用于反映CPU的状态和运算结果的某些特征位专用寄存器EIP ESP EFLAGS位寄存器中标志寄存器的内容图中未标明的位暂不用奇偶标志15 12 11 10 9 8 7 6 5 4 3 2 1 0…32…IOPL NT VM RF AC VIF VIP ID 应用程序不必关心或修改这些位的状态因而我们不再对这些标志位加以说明下面介绍以下一些标志位的作用操作数低1表示有符号数运算结果意义但其值是确定的同样的无符号数运算时OF SF 无实际意义但其值也是确定的无符号运算时OF 无实际意义这时计算机是按有符号运算来标志有符号数补码运算时如下情况1正数正数负数负数负数正数否则OF 01运算结果型标志OF0 SF0 CF 1 AF 1 ZF0 PF1 0FFFFH8000H有符号OF 1 SF0 CF 1 AF0 ZF0 PF1 8576 在计算机中的8位表示85补01010101B 55H76补01001100B 4CH补码的表示范围85+76=161>127超出范围OF12状态控制标志DF在串处理指令中控制处理信息的方向使用TF用于调试时的单步操作正常工作不产生陷阱每条指令执行后产生陷阱由系统控制计算机IF中断请求屏蔽位3段寄存器段寄存器也是一种专用寄存器它们专用于存储器寻址用来直接或间接地存放段地址的段寄存器有及其后继机型增加了两个附加段寄存器有关段寄存器的使用见下节内容存储器是用来存放程序数据的记忆装置一存储单元的地址和内容D存储器以字节8bit为单位存储信息7456一存储单元的地址D每个字节单元有一个地址从编号顺序加为了正确地存放或取得信息每一个字节单元给以一个唯一的存储器地址称为物理地址在机器里地址是用来表示的它是无符号整数地址的十六进制数D地址用二进制无符号数表示写成十六进制D位二进制无符号数可表示216个地址十六进制表示用四位0000H ~ FFFFH0000000100020003……000E000F00100011……001E001F00200021……002E002FFFE0FFE1……FFEE FFEFFFF0FFF1……FFFE FFFF位它可访问的字00000H FFFFFH位它可访问的地000000H FFFFFFH8038680486位它可访问的地址单元范围为00000000H FFFFFFFFHPentium 的地址总线宽度为位它可访问的地址单元范围为000000000H FFFFFFFFFH8086/8088 位字80386Pentinum 机的字长位双字由个字节组成的字为D位字由连续的两个字节组成低位字节存入低地址高位字节存入高地址高高低低原则双字四倍字单元地址依照原则存储字节我们已经学习了存储单元的编址那么存储单元的内容如何表示呢二存储单元的内容存储单元中存放的信息称为该存储单元的内容表示为地址例如存储单元的存放形式如右56780H34H 则可以表示为56780H34H若地址为56781H的字节存储单元的内容为56H则可以表示为56780H字5634H可见同一地址既可以是字节地址也可以是字地址甚至是双字地址等这要根据实际使用时数据的位数确定中的内容我们也采用这种表示方式如R二实模式下存储器寻址只能在实模式下工作外其他微处理器均可在实模式或保护模式下工作1MB位其最大1MB实际上实模式就是为而设计的工作方式实模式要解决的问题是位字长的机器提供位地址解决的方法为存储器的分段寻址1存储器地址的分段分段管理目的D20位字长可表示的地址范围为0000H ~FFFFH64K位的地址空间呢分段管理原理D1逻辑段号逻辑段内地址分段原则1每个逻辑段的起始地址必须是的倍数即从小段开始2每个逻辑段的最大长度为64K分段实质将位来表示例如20的表示12345H10000H2345H 1000H162345H 12340H0005H 1234H160005H 12345H 1000H2345H1234H0005H位物理地址段地址每一小段的位起始地址段值段基址段内偏移地址段内相对于段起始地址的位偏移量段内偏移有效地址EA逻辑地址段地址偏移地址位物理地址分段管理的特点♦存储单元物理地址具有唯一性例题3017000A单元地址是多少若段地址和偏移地址是3015 3010007A呢解3017000A3017A3015002A3017A3010007A3017A2段寄存器的引用采用存储器地址分段寻址程序设计中不使用物理地址只需采用段值和偏移来指定需要存取的存储单元808680286中的段寄存器有四个如下代码段存放当前正在运行的程序数据段存放当前运行程序所用的数据堆栈段定义了堆栈所在的区域段寄存器是一个辅助的数据区X86的段寄存器有六个如下包括上述四个段寄存器附加段是一个辅助的数据区附加段是一个辅助的数据区除非专门指定一般情况下各段在存储器中的分配是由操作系统负责的每个段可以独立占用区各段也允许重叠8086♦64KB那么就要在两个或多个数据段中存取数据当需要改变被访问数据段时内的段值通常情况下在指令中不指明所需的段寄存器这由段寄存器的引用约定来保持程序设计与执行的一致性所谓段寄存器引用约定就是相对于不同的存储器操作引用相应的段寄存器形成物理地址例如取指令在代码段中寻址CS IP堆栈操作在堆栈段中寻址SS或SS BP源数据串在数据段中寻址DS SI目的数据串在附加段中寻址ES DI其他数据存取通常在数据段中寻址DS EA另外程序员有权选择段寄存器即使用段超越前缀例如在存取一般存储器操作数时段寄存器不一定是DS它可以是CS ES SS二保护方式下存储器寻址1实模式下的寻址空间为1MB而供16MB80386及其后继机型均提供大的地址空间系统首先要解决的问题是如何寻址2引出保护模式更重要的原因是为支持多任务处理在保护方式下机器可提供多任务的管理机多道运行的程序之间必须相互隔离使得一个应用程序的缺陷或故障不会破坏系统也不会影响其他引入保护模式保护方式存储器寻址简介1逻辑地址实模式地址段址偏移编程时未直接给定存储单元的物理地址物理地址通过计算得到保护方式地址选择器偏移选择器存放在段寄存器中但不直接表示段基地址而是由操作系统通过一定的方法取得段基址再加偏移得到物理地址在保护方式下计算物理地址更复杂+段基地址2描述符其内容由系统设置不由用户建立作用描述段的大小段在中的位置控制和状态信息组成基地址界限访问权附加字段四部分其中1基地址指定段的起始地址2界限存放段的长度3访问权段在系统中的功能并给出该段的一些控制信息4附加段表示该段的一些属性保护方式下的地址转换可以大致描述如下系统按选择器的内容根据指定的途径可以找到所选段对应的描述符值确定所要找的存储单元所在的段再加上逻辑地址中指定的偏移地址就可以找到相应的存储单元我们以后所讲的内容都是基于实模式下的编程。

汇编语言程序设计课后答案

汇编语言程序设计课后答案

汇编语言程序设计课后答案天龙百度@n维空间提供第二章(更新完毕~)1。

在80x86微机的输入输出指令中,i/o端口号通常就是由dx寄存器提供更多的,但是有时也可以在指令中轻易选定00---ffh的端口号。

何况,可以轻易由指令选定的i/0端口数~解答:有256个~~书上有原话~~可以找到~~2。

存有两个16十一位字节1ee5h和2a3ch分别存放在80x86微机的存储器的000b0h 和000b3h单元中,Poissons图则表示出来它们在存储器里的放置情况。

解答:如下图.第一个络子为000b0h字单元,注意,是字单元~~第五个格子为000b3h字单元~e51e3c2a唉,羞愧,学计算机的,竟然连个表格也搞不好!3.图在书上,我就不图画了,太麻烦~~轻易请问吧~解答:30022h字节单元内容:abh30024h字节单元内容:efh30021h字单元内容:ab34h30022h字单元内容:cdabh4.对了,看这个的人.,肯定都有那本书,所以,以后我就不抄题目哈~~~答疑:这三个物理地址都就是3017ah,刚好说明了相同的段地址和偏转地址对应同一物理地址~~5.解答:cs+ip第一个字的物理地址为:0aaa40h6.答疑:图,真的不晓得怎么画,等待我想要办法~~条件标志of,sf,zf,cf,的值依次为:0,0,0,07。

下列操作可使用那些寄存器?(1)乘法和加法ax,bx,cx,dx,当然,除了这几个通用寄存器的多寡位了,如ah,al,.等~~(2)循环计数cx(3)乘法和除法dx,ax,ah,al(4)保存段地址cs,ds,es,ss(5)表示运算结果为oflags(6)将要执行的指令地址ip(7)将要从堆栈抽出数据的地址bp,sp,ss天龙百度@n维空间提供8。

可以用以命令存储器地址的寄存器存有:bx,sp,bp,di,cs,ds,si,es,ss,ip9。

一一对应;5--a4--b2--c3--d12--e9--f11--g10--h13--i8--j7--k6---l1--m15--n14--o第三章1。

80X86汇编语言电子教案(5-循环与分支程序设计)

80X86汇编语言电子教案(5-循环与分支程序设计)

一汇编语言程序设计基本步骤二程序的基本结构形式顺序结构的程序执行时按语句的书写顺序依次执行转移分支和循环因此对于有先后关系的语句程序设计时其先后次序是至关重要的顺序结构一般为简单程序顺序片段会在所有程序中存在1X和位无符号数16X Y值的程序分析1如何定义数据段X Y运算结果用双字空间存储2如何实现无符号数乘法1用加法指令实现无符号数乘法23解12CSEG SEGMENT1设位无符号数写一个求表达式16X Y值的程序实现无符号数乘法1设位无符号数写一个求表达式16X Y值的程序思考是有符号数1数据段的定义是否需要改变2对于这三种指令号数乘法的实现有何不同循环是一种重复循环通常由四部分组成1初始化部分234常有两种1Do-Until由循环指令实现2由转移指令实现说明(1) 由循环指令实现循环时ECX ZF标志这时计数值调整和条件测试在循环指令中完成例如使用LOOP LOOPZ/LOOPNZ 由转移指令实现循环时通常以条件转移指令为循环控制部入口以无条件转移指令为循环体结束件控制法循环可以嵌套明确循环控制部分和调整部分防止死循环特殊循环结构在循环体内条件判断出口能有多个出口循环控制部分控制循环何时结束1循环次数已知例LOOP2循环次数已知但可能提前结束例LOOPZ/LOOPNZ3循环次数不定据具体情况而定合理选择循环控制条件是循环程序设计的关键题意屏幕显示如下2把制的形式显示在屏幕上2把制的形式显示在屏幕上分析位十六进制数码因此BX位之后加上一个数一个十六进制数码对应字母的码值算法的基本思想ASCII A~F2把制的形式显示在屏幕上程序主体rotate: 完成什么功能;0-9ASCII 30H-39H作用 ;A-F ASCII 41H-46H作用3 53将正数数组的正确位置数据段部分3 5353535算法的基本思想ARRAY_HEAD-2-1K NN循环次数已知但可能提前结束代码段部分1数组中元素与插入值的比较指令在何处2控制循环结束的指令在哪里3边界条件如何体现功能3将正数数组的正确位置4试编制一程序从键盘输入一行字符要求第一个键入的字符必须是空格如不是则退出是则开始接收键入的字符并顺序存放在首地址为BUFFER的缓冲区中空格符不存入直到接收到第二个空格符时退出程序题意C空格是第一个字符是空格符是空格符代码段部分LEA BXMOV FLAG0NEXT MOV AH01HINT21HFLAG01HFOLLOWALEXITFLAG1 FOLLOWCMP ALEXIT[BX]EXIT 1判定第一个接收字符的指令语句在哪里2循环结束条件是什么循环结构思路采用冒泡排序算法使用双重循环内层循环每次比较相邻的两个数据次序不对则交换外层循环控制内层循环次数以及负责内层循环的初始化5将首地址为字的数组从大到小实现排序多重循环21循环可以嵌套多重循环的设计方法同单重循环但应分别考虑各重循环控制条件数据段部分代码段部分CX 内层循环计数器也CX 该程序如何解决它们冲突的循环结束条件是否可以更改作业P175。

80x86汇编语言程序设计教程答案

80x86汇编语言程序设计教程答案

80x86汇编语言程序设计教程答案【篇一:《80x86汇编语言程序设计》教案及答案(第二版)】汇编语言程序设计》(第2版)沈美明、温冬婵编著教案编写时间:2007年8月18日前言1. 汇编语言是计算机能提供给用户的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。

2. 汇编语言程序设计是高等院校电子计算机硬、软件及应用专业学生必修的核心课程之一。

它不仅是计算机原理、操作系统等其它核心课程的必要先修课,而且对于训练学生掌握程序设计技术、熟悉上机操作和程序调试技术都有重要作用。

3. 本教材共有十一章,其内容安排如下:(1). 第一、二章为汇编语言所用的基础知识。

(2). 第三章详细介绍80x86系列cpu的指令系统和寻址方式。

(3). 第四章介绍伪操作、汇编语言程序格式及汇编语言的上机过程。

(4). 第五、六章说明循环、分支、子程序结构和程序设计的基本方法。

(5). 第七章说明宏汇编、重复汇编及条件汇编的设计方法。

(6). 第八章叙述输入/输出程序设计方法,重点说明中断原理、中断过程及中断程序设计方式。

(7). 第九章说明bios和dos系统功能调用的使用方法。

(8). 第十~十一章分别说明图形显示、发声及磁盘文件存储的程序设计方法,同时提供各种程序设计方法和程序实例。

附:教学参考书1. 沈美明、温冬婵编著,ibm–pc汇编语言程序设计(第2版),清华大学出版社,2001年(教材)2. 沈美明、温冬婵编著,ibm–pc汇编语言程序设计,清华大学出版社,1991年3. 沈美明、温冬婵编著,ibm–pc汇编语言程序设计—例题习题集,清华大学出版社,1991年6月4. 沈美明、温冬婵、张赤红编著,ibm–pc汇编语言程序设计—实验教程,清华大学出版社,1992年5. 周明德,微型计算机ibm pc/xt(0520系列)系统原理及应用(修订版),清华大学出版社,19916. 郑学坚、周斌,微型计算机原理及应用(第二版),清华大学出版社,19957. 王士元、吴芝芳,ibm pc/xt[长城0520] 接口技术及其应用,南开大学出版社,19908. 杨素行,微型计算机系统原理及应用,清华大学出版社,19959. 戴梅萼、史嘉权,微型计算机技术及应用—从16位到32位(第二版),清华大学出版社,199610. 张昆藏,ibm pc/xt微型计算机接口技术,清华大学出版社,199111. 孟绍光,李维星,高档微机组成原理及接口技术(80386/80486/pentium),学苑出版社,199312. 吴秀清,周荷琴,微型计算机原理与接口技术,中国科学技术大学出版社目录第 1 章基础知识 ....................................................................................................... .. (1)1.1 进位计数制与不同基数的数之间的转换 (1)1.2 二进制数和十六进制数的运算 ....................................................................................................... .. (2)1.3 计算机中数和字符的表示 ....................................................................................................... . (3)1.4 几种基本的逻辑运算 ....................................................................................................... (3)第 2 章 80x86计算机组织 ....................................................................................................... . (4)2.1 80x86微处理器 ....................................................................................................... . (4)2.2 基于微处理器的计算机系统构成 ....................................................................................................... . (4)2.3 中央处理机 ....................................................................................................... . (5)2.4 存储器 ....................................................................................................... (6)2.5 外部设备 ....................................................................................................... .. (7)第 3 章 80x86的指令系统和寻址方式 ....................................................................................................... .. (8)3.1 80x86的寻址方式 ....................................................................................................... (8)3.2 程序占有的空间和执行时间 ....................................................................................................... . (10)3.3 80x86的指令系统 .......................................................................................... .. (10)第 4 章汇编语言程序格式 ....................................................................................................... .. (26)4.1 汇编程序功能 ....................................................................................................... . (26)4.2 伪操作 ....................................................................................................... . (26)4.3 汇编语言程序格式 ....................................................................................................... .. (30)4.4 汇编语言程序的上机过程 ....................................................................................................... .. (33)第 5 章循环与分支程序设计 ....................................................................................................... . (35)5.1 循环程序设计 ....................................................................................................... . (35)5.2 分支程序设计 ....................................................................................................... . (36)5.3 如何在实模式下发挥80386及其后继机型的优势 (36)第 6 章子程序结构 ....................................................................................................... .. (37)6.1 子程序的设计方法 ....................................................................................................... .. (37)6.2 子程序的嵌套 ....................................................................................................... . (38)6.3 子程序举例 ....................................................................................................... .. (38)第 7 章高级汇编语言技术 ....................................................................................................... .. (39)7.1 宏汇编 ....................................................................................................... . (39)7.2 重复汇编 ....................................................................................................... . (40)7.3 条件汇编 ....................................................................................................... . (41)第 8 章输入/输出程序设计 ....................................................................................................... . (42)8.1 i/o设备的数据传送方式 ....................................................................................................... .. (42)8.2 程序直接控制i/o方式 ....................................................................................................... . (43)8.3 中断传送方式 ....................................................................................................... . (43)第 9 章 bios和dos中断 ....................................................................................................... . (46)9.1 键盘i/o ....................................................................................................... .. (46)9.2 显示器i/o ....................................................................................................... . (48)9.3 打印机i/o ....................................................................................................... . (49)9.4 串行通信口i/o ....................................................................................................... .. (50)第 10 章图形与发声系统的程序设计 ....................................................................................................... ........... 51 10.1 显示方 (51)10.2 视频显示存储器 ....................................................................................................... .................................. 51 10.3 ega/vga图形程序设计 ....................................................................................................... .................... 52 10.4 通用发声程序 ....................................................................................................... ...................................... 53 10.5 乐曲程序 ....................................................................................................... . (54)第 11 章磁盘文件存取技术 ....................................................................................................... ........................... 55 11.1 磁盘的记录方式 ....................................................................................................... .................................. 55 11.2 文件代号式磁盘存取 ....................................................................................................... .......................... 56 11.3 字符设备的文件代号式i/o ....................................................................................................... ................ 57 11.4 bios磁盘存取功能 ....................................................................................................... .. (58)附录:《ibm—pc汇编语言程序设计》习题参考答案 ............................................................................... 59 第一章.第二章.第三章.第四章.第五章.第六章.第七章.第八章.第九章.第十章.第十一章. 习题 ....................................................................................................... ................. 59 习................. 60 习题 ....................................................................................................... ................. 61 习题 ....................................................................................................... ................. 74 习题 ....................................................................................................... ................. 79 习题 ....................................................................................................... ................. 97 习题 ....................................................................................................... ............... 110 习题 ....................................................................................................... ............... 117 习题 ....................................................................................................... ............... 122 习题 ....................................................................................................... ............... 125 习题 ....................................................................................................... (136)错误!未指定书签。

80X86汇编语言电子教案(1-全部)

80X86汇编语言电子教案(1-全部)

第版温冬婵编著清华大学出版社IBM PC汇编语言程序设计沈美明等清华大学出版社汇编语言程序设计教程杨季文等清华大学出版社学时一计算机语言发展简史机器语言真正唯一能让直接识别的语言它是二进制编码表示的机器指令的集合及一组使用机器指令的规则能直接识别并遵照执行的指令称为机器指令目的程序或目标程序直接执行CPU其不尽相同1用(2200H)+(2201H)结果存放在中的程序片段用进制表示将中的数送到将(AL)+(2201H)和数送到将(2202H)优点目标程序小执行速度快效率高缺点表达的意义不直观编写阅读调试较困难高级语言面向人的语言有多种类型优点便于阅读易学易用不涉及硬件具有通用性缺点目标代码冗长占用内存多从而执行时间长效率不高不能对某些硬件进行操作汇编语言是一种符号语言与机器语言一一对应使用助记符表示相应的操作并遵循一定的语法规则与机器语言有类似的优缺点但比机器语言更易于为人们所理解汇编语言源程序下面是两个小例子例编写的例是用汇编语言编写的它们完成相同的功能即把a b的内c并在屏幕上显示出来CPU直接识别并执行这些程序通称为源程序因此所有源程序都必须翻译成目标程序后CPU执行高级语言程序汇编语言程序与机器语言程序的关系则专门负责完成将汇编语言源程序翻译成目标程序二汇编语言相对于高级语言的特点汇编语言是面向机器的语言它的指令语句与机器指令一一对应是机器指令的符号表示因此对于不同类型的CPU要求使用不同的汇编语言和汇编程序保持了机器语言的优点捷的特点可有效地访问控制计算机的各种硬件设备如磁盘存储器CPU端口等目标代码简短占用内存少执行速度快的程序设计语言硬件的功能并提高编程质量三汇编语言的应用对软件的执行时间或存储容量有较高要求的场合例如实时控制系统智能化仪器仪表及高性能软件需要提高大型软件性能的场合例如某些快速处理位处理等高效程序用汇编语言编写的与硬件关系密切要直接有效控制硬件的场合经常与高级语言配合使用是否采用汇编语言编程主要权衡软件的开发时间及软件的质量四为什么要学习汇编语言汇编语言是低级语言它能为程序员提供最广阔的编程舞台学好汇编语言就能够站在计算机运行程序的角度从计算机硬件的角度了解认识计算机系统它是嫁接软件和硬件的桥梁•学好汇编语言对今后可能涉及的计算机特别是单片机系统开发有极大帮助五如何学好汇编语言在接下来的学习过程中学习汇编语言程序设计和学习高级语言程序设计有所不同汇编程序更不能编写自己的应用程序为我们要为今后的编程作一个充分的知识储备例如的编程结构指令系统寻址方式指令功能和操作对象伪指令格式等所以希望同学们要有一定耐心把每节课内容学到手在理解的基础上记忆需要强调的是更重要的是记忆换句话说对于正确的东西暂时不能理解的也要记下来因为疑团总是在后面解开六学习目标及要求掌握汇编语言程序设计的基本概念机的基本结构编程结构掌握Intel 80X86CPU的指令系统及寻址方式学会使用DOS和BIOS功能调用及高级汇编语言技术掌握使用汇编语言设计编写调试和运行程序的方法汇编语言预备知识的复习通过前面的讲解我们知道计算机只能识别以二进制形式存在的机器语言无论是高级语言还是汇编语言最终都要转换为机器语言即二进制形式而且计算机内部数据的存放和运算都是二进制形式要学习汇编语言必须首先了解二进制而我们的惯性思维是十进制本节我们要复习1进位计数制2不同基数的数之间的转换特别是二进制十进制二进制十六进制之间的转换3不同基数的数的运算4机器数的表示重点掌握有符号数的补码表示一数制进制数a其含义为·r十进制1012.34 = 110+ 2 10+ 3 10+ 4二进制基数为2逢二进一= 1 2+ 1 + 1十六进制基数为16逢十六进一1001, 0001, 1000, 0111= 9 + 1 16+ 8 16+ 7 16八进制基数为8逢八进一例若要写一个八进制数197对否例同样的一串数字101若表示的数制不一样其含义也不一样如下101D=101B=101O=那么如何区分它们呢现对常用进制数归纳总结如下01070909,a,b,c,d,e,f,在计算机中为了区分不同数制的数据采用以下方法DO二进制转换直接计算求和1降幂法例27D = ? B2除法转换整数部分由除法得到的余数顺序产生由低到高的各位数码直至商为乘法转换小数部分由乘法得到整数顺序产生由高到低的各位数码直至小数部分为0例如12位一组用十六进制数码表示反之十六进制每位扩展为4位二进制数码十六进制与二进制的转换表见书P4表1.11+1=0 进位1三运算逻辑运算按位操作运算NOT运算AND A B A ∧B 运算ORA B A ∨B 运算XOR∀B例X=00FFH Y=5555H求四数机器数的表示计算机中的数用二进制表示分为符号数有符号数的符号也用二进制位表示例如8位二进制符号位=01有符号数的补码表示1正数的补码形式绝对值的二进制数形式符号位02负数的补码形式2n绝对值的补码n80X86中为机器字长快速得到负数补码的两种方法a先得出其绝对值对应的二进制形式然后对该二进按位变反最后再将1b先得出其绝对值对应的二进制形式然后将该二进制最右边为的位不变其所有左边位按位变反例位[-46]=1[46]= 0010 1110按位求反1101 0010 0D2H2[46]1101 0010 0D2H所以[-46]=11010010B0D2H特殊值的补码= 1111 1111 =0FFH例写出下列数据的补码表示12[-39H]3[26 ]4例试比较两个二进制数01111111B的大小例写出下列数据的补码表示12[-39H]3[26 ]4例试比较两个二进制数01111111B的大小解有符号数2数的符号扩展无符号数只要在最高位前添足够的0即可有符号数补码形式表示进行符号位的扩展时在最高位前添足符号位正数添0负数添1例如0D2H8位补码视为有符号数则其符号扩展为FFD2H16位视为无符号数则其符号扩展为00D2H16位3数的表示范围补码的表示范围-位无符号数4补码的加法和减法补码表示的数具有以下特性求补例如[117]补的补码例下列各数均为十六进制表示的位二进制数请说明当它们分别被看做用补码表示的带符号数或无符号数时它们所表示的十进制数是什么1D8 2FF解1有符号数[11011000]即是的补码无符号数2162有符号数-1无符号数255求补运算在补码的加减运算中很有用加法规则[X+Y]减法规则[X-Y]符号位参加运算能自动得到正确补码结果例如十进制32257 1110 0111 25的补码(1)0000 01115BCD码采用二进制编码的十进制简称BCD码BCD码位二进制数编码表示1位十进制数常用的是8421BCD码6字符表示法码表示字符见书 1.3五数据种类计算机中若干位二进制信息可表示一个存储单元地址I/O程序和数据在汇编语言程序中有指令操作码操作数等数值数据如二进制数十进制数十六进制数逻辑数据逻辑变量通常按位定义码等表示的信息其位数一般是的倍数因此汇编语言的基本数据类型有位半字节字节字双字四倍字字符串BCD码等1位计算机存储信息的基本单位2半字节4个连续的二进制数位组成可以表示1个8421码1位十六进制数3字节连续的二进制数位组成字节最低位(右边)称为第0位最高位左边称为第7位7 6 5 4 3 2 1 0一个字节可以表示4字2个连续字节组成一个字5双字2个连续字组成低16位为低字高16位为高字6四字4个连续字组成7字符串由字符构成的一个线形数组通常每个字符用一个字节表示其它的多倍字和多倍字节的数据作业P14 1.1 (1) (3) 1.4 (1) (3)。

汇编语言程序设计_第2章 80x86编程的硬件基础(参考答案)

汇编语言程序设计_第2章  80x86编程的硬件基础(参考答案)

第2章80x86编程的硬件基础本章要点:80x86的寄存器的分类、作用以及有关寄存器的特定用法,内存及其分段,逻辑地址和物理地址,I/0端口地址。

一、单项选择题2.1.1 80x86的寄存器中,8位的寄存器共有(C)个。

A. 4B. 6C. 8D. 102.1.2 总是指向下一条要执行的指令,由此实现程序的自动执行的寄存器是(B)。

A. BPB. IPC. SPD. IR2.1.3 标志寄存器用来保存算术逻辑运算的结果状态,其中用于表示当前运算结果是否为0的标志位是(D)。

A. CFB. OFC. SFD. ZF2.1.4 80x86CPU执行算术运算时,FLAGS共有(B)个标志位受影响。

A. 5B. 6C. 7D. 92.1.5 一个16位相对位移的范围是(C)。

A. -128~127B. 0~65535C. 8000H~7FFFHD. 8000H~FFFFH2.1.6 如果某一存储单元的物理地址为12345H,则它的逻辑地址为(D):0345H。

A. 12000HB. 0012HC. 0120HD. 1200H2.1.7 通常我们所说的32位机,是指这种计算机的CPU(C)。

A. 由32个运算器组成B. 包含32个寄存器C. 能够同时处理32位二进制数D. 一共有32个运算器和控制器2.1.8 下列寄存器组中,用于提供段内偏移地址的寄存器组是(B)。

A. AX,BX,CX,DXB. BX,BP,SI,DIC. SP,BP,IP,DXD. CS,DS,ES,SS2.1.9 在80x86系统中,约定用于形成堆栈段数据物理地址的寄存器有(B)。

A. DS,DX,BXB. SS,BP,SPC. SS,BX,BPD. DS,BP,SP2.1.10在程序的运行过程中,确定下一个指令的物理地址的计算表达式是(C)。

A. D S×16+SIB. E S×16+DIC. CS×16+IPD. S S×16+SP二、填空题2.2.1 在80x86的16位寄存器中,可以用来指示存储器地址的有_10__个,它们分别是__BX BP SI DI IP SP DS CS ES SS____________________;既可以用来指示存储器地址又可以用来存放操作数的有__5__个,它们分别是__BX BP SI DI SP____________。

(完整版)(整理)《80x86汇编语言程序设计》教案及答案.

(完整版)(整理)《80x86汇编语言程序设计》教案及答案.

(完整版)(整理)《80x86汇编语言程序设计》教案及答案.《汇编语言程序设计》教案附:习题参考答案《IBM-PC汇编语言程序设计》(第2版)沈美明、温冬婵编著教案编写时间:2007年8月18日前言1.汇编语言是计算机能提供给用户的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。

2.汇编语言程序设计是高等院校电子计算机硬、软件及应用专业学生必修的核心课程之一。

它不仅是计算机原理、操作系统等其它核心课程的必要先修课,而且对于训练学生掌握程序设计技术、熟悉上机操作和程序调试技术都有重要作用。

3.本教材共有十一章,其内容安排如下:(1).第一、二章为汇编语言所用的基础知识。

(2).第三章详细介绍80x86系列CPU的指令系统和寻址方式。

(3).第四章介绍伪操作、汇编语言程序格式及汇编语言的上机过程。

(4).第五、六章说明循环、分支、子程序结构和程序设计的基本方法。

(5).第七章说明宏汇编、重复汇编及条件汇编的设计方法。

(6).第八章叙述输入/输出程序设计方法,重点说明中断原理、中断过程及中断程序设计方式。

(7).第九章说明BIOS和DOS系统功能调用的使用方法。

(8).第十~十一章分别说明图形显示、发声及磁盘文件存储的程序设计方法,同时提供各种程序设计方法和程序实例。

附:教学参考书1.沈美明、温冬婵编著,IBM–PC汇编语言程序设计(第2版),清华大学出版社,2001年(教材)2.沈美明、温冬婵编著,IBM–PC汇编语言程序设计,清华大学出版社,1991年3.沈美明、温冬婵编著,IBM–PC汇编语言程序设计—例题习题集,清华大学出版社,1991年6月4.沈美明、温冬婵、张赤红编著,IBM–PC汇编语言程序设计—实验教程,清华大学出版社,1992年5.周明德,微型计算机IBM PC/XT(0520系列)系统原理及应用(修订版),清华大学出版社,19916.郑学坚、周斌,微型计算机原理及应用(第二版),清华大学出版社,19957.王士元、吴芝芳,IBM PC/XT[长城0520] 接口技术及其应用,南开大学出版社,19908.杨素行,微型计算机系统原理及应用,清华大学出版社,19959.戴梅萼、史嘉权,微型计算机技术及应用—从16位到32位(第二版),清华大学出版社,199610.张昆藏,IBM PC/XT微型计算机接口技术,清华大学出版社,199111.孟绍光,李维星,高档微机组成原理及接口技术(80386/80486/Pentium),学苑出版社,199312.吴秀清,周荷琴,微型计算机原理与接口技术,中国科学技术大学出版社目录第 1 章基础知识 (5)1.1进位计数制与不同基数的数之间的转换 (5)1.2二进制数和十六进制数的运算 (6)1.3计算机中数和字符的表示 (7)1.4几种基本的逻辑运算 (7)第 2 章80X86计算机组织 (8)2.180X86微处理器 (8)2.2基于微处理器的计算机系统构成 (8)2.3中央处理机 (9)2.4存储器 (10)2.5外部设备 (11)第 3 章80X86的指令系统和寻址方式 (12)3.180X86的寻址方式 (12)3.2程序占有的空间和执行时间 (14)3.380X86的指令系统 (14)第 4 章汇编语言程序格式 (31)4.1汇编程序功能 (31)4.2伪操作 (31)4.3汇编语言程序格式 (35)4.4汇编语言程序的上机过程 (38)第 5 章循环与分支程序设计 (40)5.1循环程序设计 (40)5.2分支程序设计 (41)5.3如何在实模式下发挥80386及其后继机型的优势 (41)第 6 章子程序结构 (43)6.1子程序的设计方法 (43)6.2子程序的嵌套 (44)6.3子程序举例 (44)第7 章高级汇编语言技术 (46)7.1宏汇编 (46)7.2重复汇编 (47)7.3条件汇编 (48)第8 章输入/输出程序设计 (49)8.1I/O设备的数据传送方式 (49)8.2程序直接控制I/O方式 (50)8.3中断传送方式 (50)第9 章BIOS和DOS中断 (53)9.1键盘I/O (53)9.2显示器I/O (55)9.3打印机I/O (56)9.4串行通信口I/O (57)第10 章图形与发声系统的程序设计 (58)10.1显示方式 (58)10.2视频显示存储器 (58)10.3EGA/VGA图形程序设计 (59)10.4通用发声程序 (60)10.5乐曲程序 (61)第11 章磁盘文件存取技术 (62)11.1磁盘的记录方式 (62)11.2文件代号式磁盘存取 (63)11.3字符设备的文件代号式I/O (64)11.4BIOS磁盘存取功能 (65)附录:《IBM—PC汇编语言程序设计》习题参考答案 (66) 第一章.习题 (66)第二章.习题 (67)第三章.习题 (68)第四章.习题 (81)第五章.习题 (86)第六章.习题 (104)第七章.习题 (117)第八章.习题 (124)第九章.习题 (129)第十章.习题 (132)第十一章.习题 (143)第 1 章基础知识【教学目的】本章内容是本课程的基础,通过本章学习,使学生明确汇编语言程序设计的学科性质、基本内容和学习意义,掌握数制的转换、数据的编码,了解本门课程的教学要求和学习方法。

80x86汇编语言程序设计

80x86汇编语言程序设计

2019/8/3
80x86汇编语言程序设计 数字电路课程设计与综合实训(江西现代职业技术学院)
三、焊料 铅与锡熔形成合金(即铅锡焊料)后,具有一系列铅和锡 不具备的优点:
熔点低。各种不同成 分的铅锡合金熔点均低于 铅和锡的熔点,利于焊接。
机械强度高,抗氧化。 表面张力小,增大了 液态流动性,有利于焊接 时形成可靠接头。
2019/8/3
手动送锡电烙铁
80x86汇编语言程序设计 数字电路课程设计与综合实训(江西现代职业技术学院)
温 控 式 电 烙 铁
2019/8/3
80x86汇编语言程序设计 数字电路课程设计与综合实训(江西现代职业技术学院)
2019/8/3
热风拔焊台
80x86汇编语言程序设计 数字电路课程设计与综合实训(江西现代职业技术学院)
2019/8/3
80x86汇编语言程序设计 数字电路课程设计与综合实训(江西现代职业技术学院)
2.手工锡焊基本操作
一、焊接操作姿势
电烙铁拿法有三种。
焊锡丝一般有两种拿法。
2019/8/3
80x86汇编语言程序设计 数字电路课程设计与综合实训(江西现代职业技术学院)
使用电烙铁要配置烙铁架,一般放置在工作台右前 方,电烙铁用后一定要稳妥放与烙铁架上,并注意导线 等物不要碰烙铁头。
温度比焊料熔化温度高50℃较为适宜。
3 用烙铁对焊点加力加热是错误的。 会造成被焊件的损伤,例如电位器、开关、接插件的
焊接点往往都是固定在塑料构件上,加力的结果容易造成 元件失效。
2019/8/3
80x86汇编语言程序设计 数字电路课程设计与综合实训(江西现代职业技术学院)
3 手工焊接技术要点 一、印制电路板安装与焊接

参考答案 80X86汇编语言程序设计 第二版 (王成耀 著) 人民邮电出版社 课后答案

参考答案 80X86汇编语言程序设计 第二版 (王成耀 著) 人民邮电出版社 课后答案
网 案 答 后 课
file:///C|/Users/bruce/Desktop/80x86汇编语言程序设计习题答案/80x1.htm[2010/1/4 0:18:50]
第3章
第3章
3.1 (1)SS (2)CS (3)DS (4)FS (5)SS (6)DS (7)DS (8)ES 3.2 (1)正确 (2)类型不匹配 (3)两个操作数不能同时是内存操作数 (4)没有[esp][eax*3]这种操作数形式 (5)正确 (6)CS不能作为目的操作数 (7)类型不确定 (8)没有[sp]这种操作数形式
(3) movsx eax, al
add eax, ebx
file:///C|/Users/bruce/Desktop/80x86汇编语言程序设计习题答案/80x2.htm[2010/1/4 0:18:55]
第3章
3.12 将DX:AX中的双字数右移 Nhomakorabea位。3.13 指令 AL CF OF SF ZF
loop next
done:
(3) jcxz done
next: mov ax, [si]
cmp ax, es:[di]
pushf add si, 2 add di, 2 popf loope next
(2)压缩BCD码:1624H;非压缩BCD码:x1x6x2x4H。
网 案 1.6 (1)字符'1'的ASCII码;十进制数31的压缩BCD码;十进制数1的非压缩BCD码;十进制数49的
十六进制表示。

(2)十进制数-1的8位二进制补码表示;带符号数255的16位二进制补码表示;无符号数255的8位
(4)SS:SP表示堆栈段的栈顶地址,ESP的高16位为0;

80X86汇编语言电子教案(3-2-全部)

80X86汇编语言电子教案(3-2-全部)

POP BX 执行后 (BX) = 2107H
POP BX 执行过程堆栈图示
—白燕—
例:假设一个指令序列: PUSH X ; X 必须是字变量 PUSH ES POP Y ; Y 必须是字变量 执行前:(X)=1234H, (SS)=0FFA0H,
ES)=2367H, (SP)=0100H,
试画出堆栈的变化情况
—白燕—
答案: 地

初始堆栈:
由 (SP)=100H



栈底


PUSH X
(SP)=00FEH 34H
12H
100H

(X)=1234H
栈底

PUSH ES
(SP)=00FCH 67H
23H
(SP)= 00FEH 34H
ES=(2367H)
12H

栈底

POP Y
Y 67H
23H
—白燕—
5 PUSHA/PUSHAD

MOV BX, OFFSET BLOCK
LEA BX, BLOCK
操作数 长度
16 16 32 32
地址 长度 16 32 16 32
执行的操作
计算所得的16位有效地址存入16位目的寄存器32 位有效地址 截取低16位存入16位目的寄存器 16位有效地址 零扩展后存入32位目的寄存器 计算所得的32位有效地址存入32位目的寄存器
必须注意
存入寄存器的值是由SRC计算出的有效地址 值 而不是该地址所在的存储单元的内容
—白燕—
下面举例说明LEA BX, BLOCK 与MOV BX, BLOCK的区别
例 假设BLOCK的偏移量是0100H BLOCK =3412H
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《汇编语言程序设计》教案附:习题参考答案《IBM-PC汇编语言程序设计》(第2版)沈美明、温冬婵编著教案编写时间:20XX年8月18日前言1.汇编语言是计算机能提供给用户的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。

2.汇编语言程序设计是高等院校电子计算机硬、软件及应用专业学生必修的核心课程之一。

它不仅是计算机原理、操作系统等其它核心课程的必要先修课,而且对于训练学生掌握程序设计技术、熟悉上机操作和程序调试技术都有重要作用。

3.本教材共有十一章,其内容安排如下:(1).第一、二章为汇编语言所用的基础知识。

(2).第三章详细介绍80x86系列CPU的指令系统和寻址方式。

(3).第四章介绍伪操作、汇编语言程序格式及汇编语言的上机过程。

(4).第五、六章说明循环、分支、子程序结构和程序设计的基本方法。

(5).第七章说明宏汇编、重复汇编及条件汇编的设计方法。

(6).第八章叙述输入/输出程序设计方法,重点说明中断原理、中断过程及中断程序设计方式。

(7).第九章说明BIOS和DOS系统功能调用的使用方法。

(8).第十~十一章分别说明图形显示、发声及磁盘文件存储的程序设计方法,同时提供各种程序设计方法和程序实例。

附:教学参考书1.沈美明、温冬婵编著,IBM–PC汇编语言程序设计(第2版),清华大学出版社,20XX年(教材)2.沈美明、温冬婵编著,IBM–PC汇编语言程序设计,清华大学出版社,1991年3.沈美明、温冬婵编著,IBM–PC汇编语言程序设计—例题习题集,清华大学出版社,1991年6月4.沈美明、温冬婵、张赤红编著,IBM–PC汇编语言程序设计—实验教程,清华大学出版社,1992年5.周明德,微型计算机IBM PC/XT(0520系列)系统原理及应用(修订版),清华大学出版社,19916.郑学坚、周斌,微型计算机原理及应用(第二版),清华大学出版社,19957.王士元、吴芝芳,IBM PC/XT[长城0520] 接口技术及其应用,南开大学出版社,19908.杨素行,微型计算机系统原理及应用,清华大学出版社,19959.戴梅萼、史嘉权,微型计算机技术及应用—从16位到32位(第二版),清华大学出版社,199610.张昆藏,IBM PC/XT微型计算机接口技术,清华大学出版社,199111.孟绍光,李维星,高档微机组成原理及接口技术(80386/80486/Pentium),学苑出版社,199312.吴秀清,周荷琴,微型计算机原理与接口技术,中国科学技术大学出版社目录第 1 章基础知识41.1进位计数制与不同基数的数之间的转换41.2二进制数和十六进制数的运算61.3计算机中数和字符的表示61.4几种基本的逻辑运算7第 2 章80X86计算机组织72.180X86微处理器72.2基于微处理器的计算机系统构成82.3中央处理机82.4存储器102.5外部设备11第 3 章80X86的指令系统和寻址方式113.180X86的寻址方式113.2程序占有的空间和执行时间133.380X86的指令系统13第 4 章汇编语言程序格式294.1汇编程序功能294.2伪操作304.3汇编语言程序格式334.4汇编语言程序的上机过程36第 5 章循环与分支程序设计385.1循环程序设计385.2分支程序设计395.3如何在实模式下发挥80386及其后继机型的优势39第 6 章子程序结构406.1子程序的设计方法406.2子程序的嵌套426.3子程序举例42第7 章高级汇编语言技术427.1宏汇编427.2重复汇编447.3条件汇编44第8 章输入/输出程序设计458.1I/O设备的数据传送方式458.2程序直接控制I/O方式468.3中断传送方式46第9 章BIOS和DOS中断499.1键盘I/O499.2显示器I/O519.3打印机I/O529.4串行通信口I/O53第10 章图形与发声系统的程序设计5410.1显示方式5410.2视频显示存储器5410.3 EGA/VGA 图形程序设计5510.4 通用发声程序5610.5 乐曲程序57第 11 章 磁盘文件存取技术5711.1 磁盘的记录方式5811.2 文件代号式磁盘存取5911.3 字符设备的文件代号式I/O6011.4 BIOS 磁盘存取功能61附录:《IBM —PC 汇编语言程序设计》习题参考答案61第 一 章.习题61第 二 章.习题62第 三 章.习题63第 四 章.习题77第 五 章.习题82第 六 章.习题100第 七 章.习题113第 八 章.习题119第 九 章.习题125第 十 章.习题128第 十一 章.习题138第 1 章 基础知识【教学目的】本章内容是本课程的基础,通过本章学习,使学生明确汇编语言程序设计的学科性质、基本内容和学习意义,掌握数制的转换、数据的编码,了解本门课程的教学要求和学习方法。

【重点难点】二进制数及其与其它数制的转换、补码及其运算。

【课 时 数】3学时。

1.1 进位计数制与不同基数的数之间的转换1.1.1 二进制数1. 十进制数:(Decimal)(数后面加D 或省略表示的是十进制数)(1). 十进制数表示为:a n a n -1…a 0.a -1a -2…a -m 其含义如下:i mn i i m m 2211001n 1n n n 10a 10a 10a 10a 10a 10a 10a N •=•++•+•+•++•+•=∑-=--------ΛΛ1). 基数为102). 10个数码0 、1、2、3、4、5、6、7、8、93). 逢10进1(2). 权:相应于式中每位数字的10 k 称为该位数的权。

(3). 数的值:每位数字乘以其权所得到的乘积之和即为该数的值。

即如上述多项式展开后所得到的和。

2. r 进制数:(1). r 进制数表示为:a n a n -1…a 0.a -1a -2…a -m 其含义如下:i mn i i m m 2211001n 1n n n r r a r a r a r a r a r a r a N •=•++•+•+•++•+•=∑-=--------ΛΛ1). 基数为r2). r 个数码0 、1、2、……、 r-13). 逢r 进1(2). 权:相应于式中每位数字的r k 称为该位数的权。

(3). 数的值:每位数字乘以其权所得到的乘积之和即为该数的值。

即如上述多项式展开后所得到的和。

3. 二进制数:(数后面加B 表示二进制数)(1). 二进制数表示为:a n a n -1…a 0.a -1a -2…a -m 其含义如下:i mn i i m m 2211001n 1n n n 22a 2a 2a 2a 2a 2a 2a N •=•++•+•+•++•+•=∑-=--------ΛΛ1). 基数为22). 2个数码0 和13). 逢2进1(2). 权:相应于式中每位数字的2 k 称为该位数的权。

(3). 数的值:每位数字乘以其权所得到的乘积之和即为该数的值。

即如上述多项式展开后所得到的和。

4. 十六进制数:(Hexadecimal)(数后面加H 表示十六进制数)(1). 十六进制数表示为:a n a n -1…a 0.a -1a -2…a -m 其含义如下:i mn i i m m 2211001n 1n n n H 16a 16a 16a 16a 16a 16a 16a N •=•++•+•+•++•+•=∑-=--------ΛΛ1). 基数为162). 16个数码0 、1、2、3、4、5、6、7、8、9、A 、B 、C 、D 、E 、F(或a ~ f)3). 逢16进1(2). 权:相应于式中每位数字的16 k 称为该位数的权。

(3). 数的值:每位数字乘以其权所得到的乘积之和即为该数的值。

即如上述多项式展开后所得到的和。

1.1.2 二进制数和十进制数之间的转换1. 二进制数转换为十进制数:根据上面的二进制数多项式按权展开求和即为十进制数。

2. 十进制数转换为二进制数(1). 降幂法:首先写出要转换的十进制数,其次写出所有小于此数的各位二进制权值,然后用要转换的十进制数减去与它最相近的二进制权值,如够减则减去并在相应位记以1;如不够减则在相应位记以0并跳过此位;如此不断反复,直到该数为0为止。

(2). 除法1). 十进制整数转换:采用“除2 (基)取余”法进行转换,即把十进制整数除以2,取出余数1或0作为相应二进制数的最低位,把得到的商再除以2,再取出余数1或0作为相应二进制数的次低位。

由此类推,继续上述过程直至商为0止,最后一次的余数为二进制数的最高位,依次所得到的余数序列就是转换成的二进制数。

2). 十进制小数转换:采用“乘2 (基)取整”法进行转换,即先将十进制小数乘以2,取其整数1或0作为相应二进制小数的最高位,然后将乘积的小数部分再乘以2,并再取其整数作为次高位。

依次重复上述过程,直到小数部分为0或达到要求的精度为止。

1.1.3 十六进制数及其与二进制、十进制数之间的转换1. 十六进制数的表示:(参见1.1.1节的第4步)以下是几个概念:(1). 位(bit)。

bit(Binary digit 的缩写)是量度信息的最小单位,1比特为二进制的一位包含的信息量。

(2). 字节(Byte)。

作为一个单位来处理的一串二进制数位,通常由8位二进制数位组成一个字节。

一个字节可以代表一个数字、一个字母或一个特殊符号。

也是计算机存储容量的单位。

(3). 字(Word)。

在计算机中,一般称两个字节为一个字。

(4). 字长(Word Length)。

计算机的每个字所包含的位数称为字长。

字长是计算机的一项重要指标。

一般都选为字节的整数倍。

2. 十六进制数与二进制数之间的转换(1). 二进制数转换为十六进制数:从二进制数的小数点位置开始,整数部分向左,小数部分向右,每四位二进制数字为一组用一位十六进制数字表示,不足四位的用0补足,就得到一个相应的十六进制数。

(2). 十六进制数转换为二进制数:每一位十六进制数用四位二进制数表示,就形成相应的二进制数了。

3. 十六进制数与十进制数之间的转换(1). 十六进制数转换为十进制数:根据上面的十六进制数多项式按权展开求和即为十进制数。

(2). 十进制数转换为十六进制数:可类似于十进制数转换为二进制数的降幂法和除法来转换为十六进制数。

也可先将十进制数转换为二进制数,再将二进制数转换为十六进制数。

1). 降幂法:首先写出要转换的十进制数,其次写出所有小于此数的各位十六进制权值,然后用要转换的十进制数除以与它最相近的十六进制权值,并在相应位记以十六进制的商;再将余数除以下一位权值,并记下商和余数;如此不断反复,直到该数为0为止。

相关文档
最新文档