第三章 80868088汇编语言程序设计
- 格式:ppt
- 大小:897.50 KB
- 文档页数:48
第三章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。
对地址的运算仅有+(加)、-(减)运算符。
三、汇编语言语句格式汇编语言程序由若干语句组成。
汇编语言语句类型:指令语句—完成操作功能,能编排(比翻译简单)成机器语言代码(即80x86指令系统的指令);伪指令语句—为汇编程序在编排源程序时提供有关信息;宏指令语句—分为宏定义和宏调用语句,编排时用宏定义代替宏调用语句。
汇编语言语句通用格式:[名字项] 操作项[操作数项] [;注释项]1、名字项组成:可由字母、数字、特殊字符(?、.、@、_、$)组成,数字不能作首字符,.只能作首字符。
类型:标号、变量。
(1)标号组成:①语句标号--由名字+冒号(“:”)组成;②过程名、段名等—只由名字组成。
属性:段属性—标号(定义时)所在段的起始地址;偏移属性—标号与所在段起始地址间字节数;类型属性—表明引用它时的特性,段内引用为NEAR,段间引用为FAR。
(2)变量组成:在除代码段外的段中定义,只由名字组成。
属性:段属性—变量(定义时)所在段的起始地址;偏移属性—变量与所在段起始地址间字节数;类型属性—表明为它所保留的主存字节数,DB/DW/DD/DQ/DT对应1/2/4/8/10字节。
思考:标号与变量的主要区别?指令中变量的数据类型如何表示?2、操作项组成:可为指令、伪指令或宏指令的助记符。
说明:指令助记符可带指令前缀。
示例:D_SEG SEGMENTNUM1 DB 10 DUP(10) ;数据定义NUM2 DW 20 DUP(0, 4 DUP(2))NUM3 DB 10H, 5 DUP(?)NUM4 DB ‘STRING’D_SEG ENDS ;假设DS指向D_SEG段MOV AX, SEG NUM1 ;等价于AX←(DS)MOV BX, SEG NUM2 ;AX与BX值相同MOV SI, OFFSET NUM1 ;NUM1相对于段的偏移量→SI MOV DI, OFFSET NUM2 ;等价于LEA DI, NUM2MOV AH,TYPE NUM2 ;2→AHMOV BH,LENGTH NUM2 ;20→BH(指最外层参数)MOV AL,LENGTH NUM3 ;1→AL(指第一个参数)MOV CL, SIZE NUM2 ;20*2→CLMOV CH, SIZE NUM4 ;1*1→CH(4)属性运算符PTR格式:<类型> PTR表达式PTR功能:用新类型取代表达式默认的数据类型PTR说明:①表达式为MEM操作数或变量时,类型可为BYTE、WORD、DWORD,表达式为标号时,类型可为NEAR、FAR;②仅改变数据类型属性,且仅在本语句有效。
8086/8088汇编语言程序设计课程设计设计背景汇编语言是计算机科学与技术专业中非常重要的一门课程,它是高级语言之后的一个阶段。
在本课程中,学生需要掌握8086/8088汇编语言的语法和应用。
为了更好地掌握汇编语言的使用,需要进行一定的课程设计练习。
设计目的本课程设计旨在帮助学生深入了解汇编语言的编写和实践操作,从而更好地掌握该技能。
该课程设计的主要目的包括:•加深学生对汇编语言的理解。
•培养学生的编程思维和动手能力。
•通过实践操作,让学生能够在以后的工作和学习中使用汇编语言编写程序。
设计内容本课程设计的主要内容包括以下几个部分:1. 编写程序学生需要使用8086/8088汇编语言编写程序。
编写过程中,需要注意程序的逻辑和语法。
程序可以有选择的使用一些特定的指令进行优化,以达到更高的执行效率。
2. 调试程序学生需要使用调试软件对编写的程序进行调试,以保证程序的正确性。
在调试过程中,需要注意调试工具的使用方法和操作步骤。
3. 撰写实验报告学生需要撰写课程设计实验报告,该报告需要包括以下主要内容:•设计目的和内容简介•程序设计思路和步骤•调试过程和结果分析•程序运行效果展示•总结和反思设计要求为了完成本课程设计任务,需要满足以下要求:1. 完成程序编写完成程序编写的任务,保证程序的正确性和合理性。
程序逻辑要清晰,格式化整齐,运行效率要高。
程序注释要清晰,要有比较好的可读性。
2. 良好的调试过程良好的调试过程是保证程序正确性的基础。
学生需要使用调试工具对程序进行调试,确保程序的正常运行。
在调试过程中,需要注意操作的步骤和方法。
3. 撰写实验报告实验报告需要各个方面都能全面体现学生的工作。
在撰写实验报告时,请注意实验报告的格式和内容要求,注意语言的规范性和格式的整齐性。
报告需要按时上交。
结束语本课程设计是学生在汇编语言学习的过程中,进行实践的重要环节,通过这个过程,学生能够更加全面的掌握汇编语言编程的技能。
第3章汇编语言程序设计2第3章汇编语言程序设计⏹3.1 概述⏹3.2 汇编语言源程序的格式⏹3.3 伪操作命令⏹3.4 DOS 和BIOS 调用⏹3.5 汇编语言程序设计举例33.3 伪操作命令⏹与CPU 指令的区别:⏹CPU 指令对应CPU 的一种操作⏹产生目标代码,由CPU 执行⏹伪操作是给汇编程序的命令⏹不产生代码,由汇编程序处理43.3 伪操作命令⏹3.3.2 数据定义伪操作⏹3.3.3 符号定义伪操作⏹3.3.4 段定义伪操作⏹3.3.5 过程定义伪操作⏹3.3.7 宏处理伪操作53.3.2 数据定义伪操作⏹作用:⏹定义变量类型⏹赋初值⏹[变量名] 伪操作操作数[,操作数...]3.3.273.3.2 数据定义伪操作⏹2. DW (Define Word)⏹定义变量类型为WORD ⏹低字节在前,高字节在后⏹AB DB ’AB ’;41H,42H ⏹ABDW DW ’AB ’;42H,41H ⏹OFFAB DW AB;AB 的偏移地址83.3.2 数据定义伪操作⏹ABC DB 0,1,?,?,?⏹LPI DW ?,54,?⏹BUFFER DW 3,4,$+393.3.2 数据定义伪操作⏹3. DD (Define Doubleword)⏹定义变量类型为DWORD ⏹ABDD DD ’AB ’;42H,41H,00H,00H ⏹ADRS DD TABLE ;偏移地址,段地址103.3.2 数据定义伪操作⏹4.DQ (Define Quadword)⏹定义变量类型为QWORD ⏹NUM DQ 0011223344556677H ⏹;77H,66H,55H,44H,33H,22H,11H,00H113.3.2 数据定义伪操作⏹5. DT (Define Tenbytes)⏹定义变量类型为TBYTE ⏹10个字节的压缩BCD 数⏹DECML DT 1234567890H ⏹;90H,78H,56H,34H,12H,00,00,00,00,00123.3.2 数据定义伪操作⏹重复操作符DUP ⏹n DUP(初值[,初值...])⏹BUFF DB 10 DUP(?)⏹ZERO DW 30 DUP(0)⏹MASK DB 5 DUP(’OK!’)133.3.2 数据定义伪操作⏹错误定义:⏹ERR1:DW 99⏹ERR2DB 25*60⏹ERR3DD ’ABCD ’出存储器中变量的存储结构A400153.3.3 符号定义伪操作⏹作用:⏹符号重命名⏹或定义新的类型⏹EQU 、=163.3.3 符号定义伪操作⏹1. EQU⏹名字EQU 表达式⏹给表达式的值赋名字#define ⏹程序简洁,便于维护⏹不允许同一符号重复定义17⏹例如:PORT EQU 3F8H ⏹在程序中可使用⏹MOV DX, PORT ⏹对DX 进行赋值,实际上PORT 就是一个常量。
3.1 指令的基本格式一、指令构成微计算机的指令系统通常由几十种或百余种指令组成(可见表2-1)。
每种指令又由两个字段(Field)构成:l.操作码(OP-Code)字段该字段指示计算机所要执行的操作类型,由一组二进制代码表示,在汇编语言中又用助记将(Mnemonic)代表。
8086执行指令时,首先将操作码从指令队列取入执行部件EU中的控制单元,经指令译码器识别后,产生执行本指令操作所需的时序性控制信号,控制计算机完成规定的操作。
2.操作数(Oprand)字段该字段则是指出指令执行的操作所需的操作数。
在操作数字段中,可以是操作数本身,或是操作数地址或是操作数地址的计算方法。
微计算机中此字段通常可有一个或两个,称前者为单操作数指令,称后者为双操作数指令。
而双操作数又分别称为源操作数src (source)和目的操作数dst(destination)。
在指令执行之前,src和dst均为参加运算处理的两个操作数,指令执行之后,在dst中则存放运算处理的结果。
指令的基本格式如下:二、80868086的指令长度可在1~6字节的范围,如图3-1所示。
其中B l和B0为基本字节,B3~B6将根据不同指令作相应的安排。
表3-1 8086指令格式(1)B1字节各字段定义如下:OP--指令操作码。
D--表示方向。
D=1寄存器为目的,D=0寄存器为源。
W--表示字节或字处理方式。
W=0为字节指令,W=1为字指令。
(2)B2字节各字段定义如下:MOD--给出指令的寻址方式。
8086的一条指令中,最多可使用两个操作数,它们不能同时位于存储器中,最多只能有一个是存储器操作数。
当MOD=11时为存储器方式,即有一个操作数位于存储器中;MOD=00,没有位移量;MOD01,只有低8位位移量,需将符号扩展8位,形成16位;MOD=10有16位位移量。
当MOD=1l时,为寄存器方式,两个操作数均为寄存器。
REG--表示指令中只有一个操作数,这个操作数为寄存器,可见表3-1,表中左部示出寄存器对应的编码。
(完整版)(整理)《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 章基础知识【教学目的】本章内容是本课程的基础,通过本章学习,使学生明确汇编语言程序设计的学科性质、基本内容和学习意义,掌握数制的转换、数据的编码,了解本门课程的教学要求和学习方法。
第二章答案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到0采用STC可置CF到1采用CLD可置DF到0采用sTD可置DF到1采用CLI可置IF到0采用STI可置IF到1另外,在某些指令执行过程中会改变部分标志的状态;题2.5 请说说标志CF和标志OF的差异。