第4章 80X86汇编语言程序设计
微型计算机原理及应用:80X86汇编语言程序设计

Why not just read a good book on computer hardware and architecture,and avoid having to learn assembly language programming?
You may be working toward a degree in computer engineering.If so,there is a strong likelihood(very probably) that you will write embedded systems programs.
9
10
count=i+3;
mov ax,[2000h] add ax,3 mov [2002h],ax
a10020 050300 a30220
高级语言 汇编语言 机器语言 机器(处理器)
11
机器语言
•直接用机器指令(二进制代码或十六进制代码) 编写。
•每一条语句是一串二进制代码(操作码 操作数) •计算机唯一能够直接识别的语言
33 C0
B9 01 00 00 00
8B D1
011 11 000 010
41
;0100 0001
83 F9 0A
7E F3
C3
16
汇编语言
用助记符指令和符号表示机器指令中的操作码和 操作数。
汇编语言
源程序
汇编
目标程序
汇编程序
17
18
名词定义 汇编源程序
6
汇编语言程序设计在计算机应用中的地位
❖使用汇编语言的场合 执行时间/存储容量有较高要求 需要提高大型软件效率 软件要直接和有效控制硬件 没有合适的高级语言
第4章 80X86汇编语言程序设计

第4章 80X86汇编语言程序设计
(2)逻辑运算符
逻辑运算符有AND、OR、XOR和NOT,它们只能用于数字 表达式中。 例:MOV CL,36H AND 0FH 经汇编后:MOV CL,06H 逻辑运算符也是8086/8088的指令助记符,它们的区别: 前者在汇编时进行,而后者在指令执行时进行的。 例:AND DX,PORT_VAR AND 0FEH 后一个逻辑运算符AND在汇编时进行,若PORT_VAR为 81H,则汇编后表达式算出为80H.执行前一个指令助记符 AND时,将(DX)与80H相与,结果在DX中。
第4章 80X86汇编语言程序设计
(4)分析运算符
它们可以把存储器一些特征作为数值送回。 这些操作符有OFFSET,SEG,TYPE,SIZE及LENGTH。 OFFSET运算符可以得到一个标号或变量的偏移地址 例:MOV SI,OFFSET STRI1 ;代表将变量STRI1 LEA指令可以取 处的地址偏移量取到SI中. 动态的地址, 注意与 MOV SI,STRI1的差别. OFFSET只能取 静态的地址 但它与 LEA SI,STRI1类似. SEG运算符用来取存储单元的段值, 例: MOV AX,SEG STRI1 ;将变量STRI1所 MOV DS,AX ;在段值取到DS中
第4章 80X86汇编语言程序设计
4.1.2 汇编语言的程序格式
• 在实地址模式和虚拟8086模式下,按照逻辑 段组织程序,具有代码段、数据段、附加段 和堆栈段。 • 一个汇编语言源程序可以包含若干个代码段、 数据段、堆栈段或附加段,段与段之间的顺 序可随意排列。 • 需独立运行的程序必须包含一个代码段,并 指示程序执行的起始位置,一个程序只有一 个起始位置。 • 所有的可执行性语句必须位于某一个代码段 内,说明性语句可根据需要位于任一段内
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微机原理参考答案

80x86微机原理参考答案第一章计算机基础(P32)1-1电子管,晶体管,中小规模集成电路、大规模、超大规模集成电路。
1-2把CPU和一组称为寄存器(Registers)的特殊存储器集成在一片大规模集成电路或超大规模集成电路封装之中,这个器件才被称为微处理器。
以微处理器为核心,配上由大规模集成电路制作的只读存储器(ROM)、读写存储器(RAM)、输入/输出、接口电路及系统总线等所组成的计算机,称为微型计算机。
微型计算机系统是微型计算机配置相应的系统软件,应用软件及外部设备等.1-3写出下列机器数的真值:(1)01101110 (2)10001101(3)01011001 (4)11001110答案:(1)+110 (2)-13(原码) -114(反码)-115(补码)(3)+89 (4)-78(原码)-49(反码)-50(补码)1-4写出下列二进制数的原码、反码和补码(设字长为8位):(1)+010111 (2)+101011(3)-101000 (4)-111111答案:(1)[x]原=00010111 [x]反= 00010111 [x]补= 00010111(2)[x]原=00101011 [x]反= 00101011 [x]补= 00101011(3)[x]原=10101000 [x]反= 11010111 [x]补= 11011000(4)[x]原=10111111 [x]反= 11000000 [x]补=110000011-5 当下列各二进制数分别代表原码,反码,和补码时,其等效的十进制数值为多少?(1)00001110 表示原码14,反码14,表示补码为14(2)11111111 表示原码-127,反码-0,表示补码为-1(3)10000000 表示原码-0,反码-127,表示补码为-128(4)10000001 表示原码-1,反码-126,表示补码为-1271-6 已知x1=+0010100,y1=+0100001,x2=-0010100,y2=-0100001,试计算下列各式。
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汇编语言程序设计 第4章汇编语言程序格式

; 字节操作指令,将0作为1个字节送到地址OP1 + 1
MOV OP2 + 2, 0
; 字操作指令,将0作为1个字送到地址OP2 + 2
然而,下列两条指令是错误的:
MOV OP1, AX
; 类型不匹配
MOV OP2, AL
; 类型不匹配
若希望进行与变量类型不一致的操作,例如,对字变量实施字节操作,如何处理?
实际上,数据段之所以成为数据段,是由于DS指向它。由于程序运行时可以改变DS的值, 使得任何段都可以成为数据段。因此,当程序定义一个段后,需要告诉汇编器该段的段地址 在哪个段寄存器中。ASSUME就提供这种信息。
2020/9/5
80x86汇编语言程序设计
4.3 基本伪指令
6. 源程序结束伪指令
基本形式: END 地址
符号名
=
常数表达式
功能:给表达式指定一个等价的符号名。
说明:
(1)= 后的表达式只能是常数,对于字符或字符串,汇编时按整数处理。例如:
COUNT
=
20
MOV CX, COUNT
; 等价于MOV CX, 20
(2)EQU后的表达式可以是数值、字符串、寄存器名、指令助记符等。
(3)EQU不能重复定义,而 = 可重复定义,其作用域从定义点到重新定义之前。
ADDR2 DD
X
; ADDR2的高字为X的段地址,低字为X的偏移地址
2020/9/5
80x86汇编语言程序设计
4.3 基本伪指令
(4)MASM是强类型的。变量在定义后,其类型便被确定,使用时要注意类型匹配。例如:
OP1
DB
?, ?
OP2
DW
第4章 80X86汇编语言程序设计4.4

.MODEL SMALL .STACK .DATA SUM DW .CODE .STARTUP XOR MOV AGAIN: ADD LOOP MOV .EXIT 0 END
?
AX,AX ;被加数AX清0 CX,100 AX,CX ;从100,99,…,2,1倒序累加 AGAIN SUM,AX ;将累加和送入指定单元
JMP指令仅实现了转移到指定位置, Jcc指令则可根据条件转移到指定位置或不转移而 顺序执行后续指令序列。
单分支与双分支
Jcc条件满足? N Jcc条件满足? N 分支语句体 分支语句体1 Y JMP 分支语句体2
Y
A)单分支结构
B)双分支结构
1.单分支结构
例4.18 计算AX中符号数绝对值的程序段。 CMP AX,0 JGE NONNEG ;分支条件:AX≥0 NEG AX ;条件不满足,负数, ;执行分支体进行求补 NONNEG:MOV RESULT,AX ;条件满足, ;为正数,保存结果
子程序
CHECKSUMA PROC XOR AL,AL ;累加器清0 SUMA:ADD AL,[BX] ;求和 INC BX ;指向下一个字节 LOOP SUMA RET CHECKSUMA ENDP
END
2.用变量传递参数(同例4.28)
用COUNT,ARRAY和RESULT变量。主程序只要设置数据段DS,就 可以调用子程序;子程序直接采用变量名存取数组元素。 .MODEL SMALL .STACK .DATA COUNT EQU 10 ;数组元素个数 ARRAY DB 12H,25H,0F0H,0A3H,3,68H,71H DB 0CAH,0FFH,90H ;数组 RESULT DB ? ;校验和 .CODE .STARTUP ;含有DS←数组的段地址 CALL CHECKSUMB ;调用求和过程 .EXIT 0
微型计算机原理及应用:80X86汇编语言程序设计

4
C语言程序中嵌入80X86 CPU汇编语言程序例:
;返回DOS
28
完整的源程序构成
•对程序的说明(注释,;) •数据段定义(包括堆栈段) •代码段
规定段性质 设置段基值 程序体(针对解决具体问题的程序) 返回DOS
•汇编源程序结束标志 29
相关伪指令
伪指令(Pseudo Instruction)
不直接命令CPU去执行某一操作,而是告诉汇 编程序如何生成目标代码。它不对应CPU的任 一操作码,而是对应一段服务子程序。
void main (void)
{
char a, b;
_asm
{
mov ah,1
int 21h
mov a,al
~~~~~~~
}
}
5
C语言程序中嵌入AVR 单片机汇编语言程序例:
void main (void) {
unsigned char uc; #asm mov %uc, R0\n sleep \n ~~~~~~~~~ #endasm }
(difficult or inefficient to accomplish in C/C++)
that often include control software for peripheral interfaces and driver programs that use interrupts. Another application of assembly language in C/C++
80x86汇编语言程序设计 概述及解释说明

80x86汇编语言程序设计概述及解释说明1. 引言1.1 概述在计算机科学领域中,汇编语言是一种与计算机硬件直接交互的低级语言。
它通过使用特定的指令集和对应的操作码,与硬件进行通信和控制。
80x86汇编语言是一种针对Intel 8086微处理器系列的汇编语言。
本文将介绍80x86汇编语言程序设计的基本概念、语法规则以及开发环境与工具。
1.2 文章结构本文将按照如下结构进行介绍:- 引言部分(当前部分)将提供关于文章内容和结构的总体说明。
- 在第二部分中,我们将概述汇编语言的基本概念,并详细介绍80x86架构。
- 第三部分将重点介绍程序开发环境与工具,包括常用的编译、链接和调试工具,并提供搭建开发环境的指南。
- 第四部分将涵盖80x86汇编语言的基本概念和常用语法指南,包括数据类型和寻址方式、寄存器和标志位、以及指令集和汇编指令格式等内容。
- 第五部分我们将通过程序设计实例分享一些技巧,包括简单程序示例及解释、循环结构及优化技巧分享,以及数组与字符串处理技巧。
- 最后,在结论部分将总结回顾本文的主要内容,并对80x86汇编语言程序设计在未来的发展提出展望,同时引出一些问题供读者思考。
1.3 目的本文的目的是为读者提供一个全面且系统性的80x86汇编语言程序设计概述与解释说明。
通过阅读本文,读者将了解到80x86汇编语言的基本概念和语法规则,并掌握相关开发环境和工具的使用。
同时,通过实例和技巧分享,读者能够加深对80x86汇编语言程序设计的理解,并应用于实际项目中。
我们希望读者能够通过本文学习到更多关于80x86汇编语言程序设计方面的知识,并在日后的学习与工作中能够灵活运用这些知识。
2. 80x86汇编语言程序设计概述2.1 汇编语言简介汇编语言是一种低级的计算机编程语言,它使用助记符来代表计算机的机器指令。
与高级编程语言相比,汇编语言更接近计算机底层硬件的操作,可以对计算机进行更细粒度的控制和优化。
(完整版)(整理)《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 章基础知识【教学目的】本章内容是本课程的基础,通过本章学习,使学生明确汇编语言程序设计的学科性质、基本内容和学习意义,掌握数制的转换、数据的编码,了解本门课程的教学要求和学习方法。
第4章 8086汇编语言程序设计的基本方法-汇编语言程序设计教程-陆遥-清华大学出版社

4.6.1 宏定义、宏调用与宏 展开 4.6.2 宏定义中的指令标号 4.6.3 宏库的建立与使用
4.1 顺序程序设计
所谓顺序程序,是指完全按照源程序中指令的先 后次序,从头到尾依次执行每一条指令的程序结 构。
【例4.1】编写程序,计算下列算术表达式的值。
X =(A×B+C-D )/(E+F )
分析:本例的处理过程可用下面的程序流程图描述。
开始
N A↔B
A≤B ? Y
N A↔C
A≤C ? Y
N B↔C
B≤C ? Y
结束
图4.2 例4.3的程序流程图
【例4.4】设字节变量SCORE中存有某生某门课的百分制成 绩,请编写程序,将该百分制成绩转换为五级记分制成绩, 并将转换结果用大写字母A~E存入变量LEVEL中。五级成 绩定义为:A(SCORE≥90),B(90>SCORE≥80),C (80>SCORE≥70),D(70>SCORE≥60),E(60> SCORE)。
有时,一个循环的循环体中也包含一个循环,这 就形成了循环嵌套。如果嵌套深度为两层,则称 为双重循环,三层以上则称为多重循环。
【例4.8】设某班有40个学生,现平均分为5个小组(每小 组8人)参加某课程学习竞赛,以各小组的考试总分作为 排名依据。试编写程序,求各小组的考试总分。
分析:求5个小组的考试总分,需要用一个5次的计数循环; 而每个小组有8人,求其总分又需要一个8次的计数循环。 因此,这是一个典型的双重循环问题。 5个小组的竞赛成绩按组序(每组8个成绩数据)依次连续 地存储在一个一维数组中,求得的各组总分也存入一个数 组中。其处理流程如下图所示。
循环有两种类型:计数型循环和条件型循环。在 实际应用中,还有一种计数型与条件型相结合的 循环控制类型。
80x86汇编语言简单应用程序设计

串处理与80x86汇编语言程序设计 串处理与80x86汇编语言程序设计
80x86的基本串处理指令 80x86的基本串处理指令
字符串装入指令( LOAD String )— 字符串装入指令 字符串装入指令( 的格式如下: 的格式如下: LODSB 装入字节(Byte) ;装入字节(Byte) LODSW ;装入字(Word) 装入字(Word) 字符串装入指令把字符串中的一个“字符” 字符串装入指令把字符串中的一个“字符”装入到累加 AL/AX/EAX) 器(AL/AX/EAX)中 字节装入指令LODSB把寄存器 所指向的一个字节数据 把寄存器SI 字节装入指令LODSB把寄存器SI所指向的一个字节数据 装入到累加器AL中 然后根据方向标志DF复位或置位使 复位或置位使SI 装入到累加器AL中,然后根据方向标志DF复位或置位使SI 之值增1或减1 它类似于下面两条指令: 之值增1或减1。它类似于下面两条指令: MOV AL, [SI] AL, INC SI (DF = 0) 0) 或 DEC SI (DF = 1) 1)
80x86汇编语言程序设计

2021/7/26
44
二、设计整体方案 1、本设计的重要任务是准确判断第一时间抢答者的信 号并将其锁存。实现这一功能可用触发器或锁存器等。 在得到第一抢答信号后,应立即将其输入锁存,并使其 他组别的抢答信号无效。 2、当电路锁存第一抢答信号后,用编码、译码及数码 显示电路显示出抢答组别的符号。 3、若同时有两组或两组以上抢答,则所有的抢答信号无 效,显示器显示0字符。
2021/7/26
20
注意
由于焊丝成分中,铅占一定比例,众所周知铅是对 人体有害的重金属,因此操作时应戴手套或操作后洗手, 避免食入。
焊剂加热挥发出的化学物质对人体是有害的,如果 操作时鼻子距离烙铁头太近,则很容易将有害气体吸入。 一般烙铁离开鼻子的距离应至少不少于30厘米,通常以 40厘米时为宜。
这样容易造成虚焊。焊点与焊点的短路。 B:焊接要可靠,必须防止虚焊。以保证导电性能。虚焊
是指焊料与被焊物表面没有形成
2021/7/26
3
与引线浸润不好
虚焊现象 与印制版浸润不好
典型焊点外观示意图
2021/7/26
4
1.焊接工艺
1 焊接工具与材料 2 手工焊接基本操作 3 手工焊接技术要点
2021/7/26
CMOS电路对电源电压的要求相对比较宽松,设计电 源时,必须注意电源的负载能力,电压的稳定及波纹系 数等。
很明显,任何复杂的数字电路系统都可以逐步划分成 不同层次、相对独立的子系统,通过对
2021/7/26
34
子系统的逻辑关系、时序等的分析,最后可以选用合适 的数字电路器件来实现,将各子系统组合起来,便完成 了整个大系统的设计。 2. 数字系统设计的一般方法与步骤 (1)消化课题
16
微机原理与应用-80x86汇编语言程序设计

6、运算符的优先级
Ø 表达式计算顺序: l 先处理优先级别高的运算符 l 对于优先级相等的运算符,则按从左至右的顺序进行处理
Ø 优先级顺序:
l ()、[](优先级最高) l LENGTH、SIZE l PTR、THIS、SEG、OFFSET、TYPE l HIGH、LOW l *、/、MOD、SHL、SHR l +、l EQ、NE、LT、LE、GT、GE l NOT l AND l OR、XOR l SHORT(优先级最低)
l 非法地址表达式:地址+地址;地址*地址;地址/地址;常量地址;地址-地址(处在不同段中)
û ADDR1+ADDR2 û ADDR1*ADDR2 û ADDR1/2 û 100-ADDR1 û SEG1_A-SEG2_B (假设两个地址处在不同段中)
2、逻辑运算符
Ø 五种算术运算:
与AND、或OR、异或XOR、非NOT、逻辑左移SHL、逻辑右移SHR
Ø 例:
JMP …… LAB:……
SHORT LAB
5、数值返回操作符
(1)SEG、OFFSET
Ø 功能: l SEG操作符用于求一个标号或变量所在段的基地址 l OFFSET操作符则用于求标号或变量在段中的地址偏移量
Ø 例如,对于代码段中的一条指令:
2000H:1234H ADDR: INC CX ;段地址=2000H,偏移量 =1234H
Ø 功能:处理器的工作模式 Ø 分类:
l .8086:选择8086指令系统(缺省方式) l .286 :选择80286指令系统 l .286P:选择80286指令系统,且系统工作在保护模式下 l .386 :选择80386指令系统 l .386P:选择80386指令系统,且系统工作在保护模式下 l .486 :选择80486指令系统 l .486P:选择80486指令系统,且系统工作在保护模式下 l .586 :选择Pentium指令系统 l .586P: Pentium指令系 ,且系 工作在保 模式下 l .8087、.287、.387 :选择协处理器
80X86汇编语言电子教案(4-段定义伪操作)

要求12掌握汇编语言源程序格式3学会编写简单的汇编语言程序一汇编程序的主要功能令和宏指令组成本教材以编程序所提供的伪操作操作符以及宏指令若使用其他版本的汇编程序它们之间在大多数情况下兼容若有不同请查阅相关手册二汇编语言源程序的框架连续的字节单元ASSUME DS DATA SS STACK CS CODE子程序入口XOR AXMOV AXMOV DS AXMOV AXMOV ES AXMAIN ENDP编写的源程序要经过汇编程序转换成目标文件这时源程序要告知编译器数据区的定义指令系统的选择段的定义程序的开始和结束等信息这类工作由完成信息的指示性语句与指令语句的区别指令语句汇编程序对源程序进行汇编时将指令语句翻译成机器指令指令语句与机器指令一一对应机器指令在程序执行期间执行伪操作汇编程序对源程序进行汇编时由汇编程序执行伪指令语句其本身并不直接产生可供计算机硬件连续的字节单元ASSUME DS DATA SS STACK CS CODE子程序入口XOR AXMOV AXMOV DS AXMOV AXMOV ES AXMAIN ENDP构一个完整的源程序由几个段构成每段各有不同的功能数据段中存放着数据代码段中存放着程序堆栈段为保存数据提供了空间一个段由数目不等的语句行组成每行语句都是各种符号的组合符号之间由空格分隔开下面我们就来具体介绍伪操作伪操作又称伪指令的作用是指导汇编程序如何汇编源程序1处理器选择伪操作2段定义伪操作3程序开始和结束伪操作4数据定义及存储器分配伪操作5其他常用伪操作统每一种高档的机型又增加一些新的指令在写汇编语言程序时要选择处理器即选择汇编语言程序应该首先选择所采用的指令系统此类伪操作指令有12段使用设定语句段指派语句段寄存器值的装入方法3段组定义伪操作1格式说明1)为本段起始名字一定要有2)定位类型组合类型使用类型类别可以缺省3)为该段的起始和结束4)作为符号在程序中被引用时表示对应段的段值例定义用户堆栈stack_seg segmentdata_seg1 segment ;例段使用设定语句段指派语句格式段R : [段R : 段名…]作用向汇编程序明确下面程序中段和段的对应关系例说明从现在开始段一般出现在代码段中可执行汇编指令之前于指明段寄存器和段的对应关系一个汇编语言源程序至少有一个段伪指令格式中段名为Nothing段寄存器已有的指派不负责段寄存器的初始化始化方法各有特点的装入初始化1DS ES FS和的装入通过AXDSAXESMOV GSMOV FS2SS1) 程序装入法在程序执行过程中类似上述的装入方法的值进行修改的装入和堆栈的设置例MOV AX, STACK2 ; 设置;MOV SP, OFFSET TOP ; 修改参数时就相当于把这个段指定为堆栈段了或ESP的值或SS ESP指向堆栈段的栈顶完成堆栈段的设置例如系统会自动指定一个堆栈段格式一个复杂的程序通常由若干模块组成每个模块被单独汇编或编译成目标OBJ模块最后由连接程序LINKER把各自目标模块连接成一个完整的可执行程序连接程序如何将多个模块的多个段恰当地组合在一起呢通知汇编程序和连接程序如何建立和组合段定位类型定位类型表示对该段起始边界的要求可有种选择起始地址为字节型表示本段起始单元可以从任一地址开始=xxxx xxxx xxxx xxxx xxxxB起始地址为字类型表示本段起始地址可以是任何一个字的边界偶地址=xxxx xxxx xxx xxxx xxx0B起始地址为双字类型表示本段起始地址的十六进制的最低位是4的倍数xx00B起始地址为节类型表示本段起始地址必须从存储器的某一个节的边界开始1个字节=xxxx xxxx xxxx xxxx起始地址为页类型表示本段起始地址必须从存储器的某一个页的边界开始1个字节0000 0000B其中PARA为隐含值即如果省略”则汇编程序按处理组合类型组合类型指定段与段之间是怎样连接和定位的它指示连接程序如何将某段与其它段组合起来的关系连接程序不但可以将不同模块的同名段进行组合并可根据组合类型将各段顺序地或重叠地连接在一起其中有种组合类型可供选择表示该段为私有段在连接时不与其他模块中的同名分段合并组合类型的PRIVATE 表明连接时应把不同模块中属于该类型的同名同类别的段相继顺序地连成一个逻辑段运算时装入同一物理段中使用同一段基址连接的顺序与时用户所提供的各模块的顺序一致应当注意各模类型的同名同类别的各段的总长度不64KB类型同样处理只是组合后的该段用作堆栈当段定义中指明了STACK类型后说明堆栈段已经确定系统自动对段寄存器SS初始化在这个连续段的首址并初始化堆栈指针SP或ESP用户程序中至少有一个段用STACK类型说明否则需要用户SP或ESP表明连接时应将不同模块中属于该类型的同名同类别的各段连接成一段它们共用一个基地址且互相覆盖重叠在一起连接后段的长度取决于最长的COMMON段的长度不同模块的变量或标号使用同一存储区域便于模块间的通信位值如“AT 0930H”开始但是它不能用来指定代码段连接时应把本段装在被连接的其它所有段的最后高地址端若有几个段都指出了组合类型则汇编程序认为所遇的第组合类型其它段认为类型使用类型只适用于及后继机型USE16 使用位寻址方式时段长不超过64KB地位段地址和16位偏移地址位寻址方式时段长可达4GB位段地址和位偏移地址在实模式下应该使用USE16USE16类别名括起来类别名是由组成以表示该段的类别在连接时连接程序将各个程序模块中具有同样类别名段集中在一起形成一个统一的物理段典型的类STACK”“”“”“DATA2一个典型程序的段结构如下STACK SEGMENT PARA STACK位堆栈段定位类型为节起点组合为公用堆栈段类别名为SATCK语句语旬DATA SEGMENT PARA ‘DATA’位数据段定位类型为节起点不与其它段组合类别名为DATA语句16位代码段定位类型为节起点本段地址位于高地址段语句Tiny所有的数据和代码都放在一个段内其和数据都是近访问Small 所有的数据都放在的数据段内所有的代码段内数据和代码都是近访问它是一般程序的最常用模式2外还提供了一种新的较简单的段定义方法MODEL •作用用来说明存储器中是如何安放各个段的可以建立存储模型Tiny Small Medium 其中[模型选择Compact 所有代码都放在一个的代码段内数据则可放在多个段内代码是近访问数据则可以是远访问Large 代码和数据都可用多个段数据和代码都可以远访问Huge与模型相同但是它允许64KBFlat 允许用户使用位偏移量在下不允许使用这种模型该模型只能在式的操作系统下使用的段组数据是近访问而代码则可远访问允许用户指定三种选项高级语言接口操作系统和堆栈距离高级语言接口选项指明该程序是为哪一个高级语言程序书写的子程序操作系统选项说明程序运行于哪个操作系统下可用OS_DOS 堆栈距离选项可用FARSTACKDGROUPTINY SMALL MEDIUM FLAT时默认该值堆栈段和数据段不合并COMPACT LARGE时默认该值例.MODEL SMALL, C.MODEL LARGE,PASCAL,OS_DOS,FARSTACK相应简化段伪操作近和远数据段分开当使用简化段伪操作时必须在程序的开始使定义存储模型每一个新段的开始就是上一段的结束不必用ENDS作为段的结束符例START问题1简化段的属性是什么2如何取出简化段的段值的存储模型有关见书上的 4.1常用的符号当使用简化段定义时数据段只由将段名装入数据段寄存器例STARTMOV AX, @DATA MOV AX 4C00H 上例可以写为例START例STARTMOV AX, DGROUP MOV AX 4C00H 上有什么不同作为段值装入寄存器因在各存储器模型中汇编程序自动将各数据段组DGROUP 以便程序在访问各数据段时使DS 4.1段组定义伪操作格式段组名[段名作用允许用户自行指定段组例DSEG1 SEGMENT WORD PUBLIC ‘DATA’DATAGROUP GROUP DSEG1DSEG2ASSUME CS CSEG DS DATAGROUP START MOV AX DATAGROUPMOV DS AX段1程序开始伪操作格式NAME时标题NAME源文件名为模块名例如Name EXAM1下面才开始段的定义这两个伪操作不是必须的结束伪操作功能指示汇编程序源程序就此结束并且还可指示程序的开始地址开始地址由所跟标号标号常数指示注意系统装入程序时会根据标号的地址属性设置IP或EIP的值多个程序模块相连接时只有主程序模块的结束伪] 其他模块的结束伪操作则没有例如ASSUME DS DATA SS STACK CSMAIN PROC FAR子程序入口XOR AXMOV AXMOV DS AXMOV AXMOV ES AXMAIN ENDPCSEG ENDSEND MAIN作业。
80x86汇编语言子程序设计

过程与过程调用相关汇编语句
过程调用与返回指令
过程调用指令 段内直接调用的过程调用指令 段内间接调用的过程调用指令 段间直接调用的过程调用指令 段间间接调用的过程调用指令 过程调用指令属于“程序控制”指令组 过程调用指令不影响任何标志 过程调用指令所完成的操作: 将当前IP/EIP 内容(返回地址)压入堆栈 转移控制到被调用过程
过程与过程调用相关汇编语句
子程序的组织
汇编语言提供两条伪指令语句供组织一个过程的代码: 过程定义开始伪指令语句PROC 过程定义结束伪指令语句ENDP 过程定义开始伪指令语句放在一个过程的“体” (所 有内容)之前,过程定义结束伪指令语句放在一个过程的‚ 体‛之后,如同 一对括号括起一个过程的内容 过程定义开始伪指令语句的格式: 过程名 PROC [NEAR | FAR] 过程定义结束伪指令语句的格式: 过程名 ENDP ―[NEAR | FAR]‖用于指出一个过程的“类型” ,过程 的缺省类型为“NEAR‖ (近过程)
过程与过程调用相关汇编语句
作为一个面向数据处理应用设计的系列处理机,80x86 的 子程序支持机制是颇具特色的。它既考虑了子程序作为一个 软件产品的独立组成模块的软件工程需求,也考虑了其作为 一个独立模块内部构件的程序实现需求;既考虑了直接的子 程序调用的编程需要,也考虑了间接的子程序调用的编程需 求;既考虑了子程序返回时的简单控制转移,也考虑了使用 堆栈传递参数情况下返回控制时的堆栈平衡的需要。学生在 掌握这部分相关知识时,应当注意对之的系统把握。本节将 讨论以下几个问题:
过程与过程调用相关汇编语句
过程调用与返回指令
段间间接调用的过程调用指令 指令格式: CALL < 操作数> 指令中的<操作数>在16位机器中为“双字”类型, 只能是存储器操作数,存储器操作数的5种寻址方式均 可用;当操作数的寻址方式为“直接寻址”时,除非已 明确其类型为“双字” ,否则,应使用“DWORD PTR‖指定其类型;其它情况下,通常使用“DWORD PTR‖来指定其类型 8086/88机器完成的操作: (SP)- 2 →SP,(CS)→(SP) (SP)- 2 →SP,(IP)→(SP) (参数值高16位)→ CS (参数值低16位) → IP
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4章 80X86汇编语言程序设计
例4.2 完整段定义的源程序格式 STACK SEGMENT STACK ;定义堆栈段STACK DW 512 DUP(?) ;堆栈段的大小是1024 字节(512字)空间 STACK ENDS ;堆栈段结束 DATA SEGMENT ;定义数据段DATA STRING DB ‘Hello,Everybody !’,0DH,0AH,’$’ ;在数据段定义要显示的字符串 DATA ENDS ;数据段结束 CODE SEGMENT ‘CODE’ ;定义代码段CODE ASSUME CS:CODE,DS:DATA,SS:STACK;确定CS、 DS、SS指向的逻辑段 START:MOV AX,DATA ;设置数据段的段地址DS 第4章 80X86汇编语言程序设计 MOV DS,AX
第4章 80X86汇编语言程序设计
(2)字符串常量 用单引号引起来的字符或字符串也代表常数。 例:’A’,’BCDE’,汇编时被翻译成对应的 ASCII码 41H和42H,43H,44H,45H。
字符串最大长度为255个字符
第4章 80X86汇编语言程序设计
(3)符号常量 利用一个标识符表达的一个数值。常数若使用有意 义的符号名来表示,可以提高程序的可读性,同时 更具有通用性。 MASM提供等价机制,用来为常量定义符号名,符号 定义伪指令有“EQU”和“=”
第4章 80X86汇编语言程序设计
(5) 其它运算符
1)方括号[ ] 指令中用方括号表示存储器操作数,方括号里的内容表示操 作数的偏移地址。例如: MOV AX,[BX] ;将(BX)和(BX+1)指向的存储器两 个单元的内容送AX 2)段超越运算符“:” 运算符“:”(冒号)跟在某个段寄存器名(DS、ES、SS或 CS)之后表示段超越,用来指定一个存储器操作数的段属性 ,而不管其原来隐含的段是什么。例如:M0V AX,ES:[DI] ; 把ES段中由DI指向的字操作数送(AX)
;等价于MOV
AL,01010000B
逻辑和移位运算符与指令助记符相同,并有类似的运算功
ቤተ መጻሕፍቲ ባይዱ
能。汇编程序能够根据上下文判断它们是指令还是运算
符,前者进行代码翻译,后者汇编时计算其数值。
第4章 80X86汇编语言程序设计
(4) 关系运算符 用于比较和测试符号数值,MASM用FFFFH(补码 −1)表示条件为 真,用0000H表示条件为假。例如: MOV BX,((PORT LT 5) AND 20) OR ((PORT GE 5) AND 30) ;当PORT<5时.汇编结果为MOV BX,20 ;否则,汇编结果为MOV BX,30 (5) 高低分离符 取数值的高半部分或低半部分。 HIGH、LOW从一个字数值或符号常量中得到高、低字节,例如: MOV AH,HIGH 8765H ;等价于MOV AH,87H MASM 6.0引入的HIGHWORD,LOWWORD取一个符号常量(不是一般 的常量)的高字或低字部分,例如: DD_VALUE EQU 0FFFF1234H;定义一个符号常量 MOV AX,LOWWORD DD_VALUE ;等价于MOV AX,1234H
(2) 逻辑运算符
实现按位相与、相或、异或、求反的逻辑运算。例如: OR AL,03H AND 45H ;等价于OR AL,01H
第4章 80X86汇编语言程序设计
(3) 移位运算符 实现对数值的左移、右移的逻辑操作,移入低位或高位的 是0。
其格式为:SHL/SHR移位次数。例如:
MOV AL,0101B SHL(2*2)
4
5 6 7 8 9 10
* /
+ EQ − NE
MOD
GT
SHL
LT
SHR
GE LE
NOT AND OR XOR SHORT
第4章 80X86汇编语言程序设计
第4章 80X86汇编语言程序设计
TYPE运算符用来取存储器的单元类型,各单元类型对应值 如下: 存储器单元类型 对应值 DB(字节) 1 DW(字) 2 DD(双字) 4 NEAR -1 FAR -2 若BUFFER1存储区是用如下伪指令定义的: BUFFER1 DB 100 DUP(?) 则 TYPE BUFFER1等于1
1.常量 (1)数字常量 二进制常量,以B结尾 十进制常量,以D结尾或省略(汇编语言中默认无标记数为 十进制数) 十六进制常量,以H结尾,如0A8C6H.
第4章 80X86汇编语言程序设计
MASM提供基数控制,.RADIX伪指令可以改变默认进制。 伪指令格式: .RADIX n 要求:n为2~16范围内任何数值。 功能:把n表示的数值作为默认基数。 例如指令“.RADIX 16”,将缺省基数改为16
MOV DX,OFFSET STRING ;利用功能调用显示信息 MOV AH,9 INT 21H MOV AX,4C00H ;利用系统功能调用返回DOS INT 21H CODE ENDS ;代码段结束 END START;汇编结束,同时表明程序起始位置为标号 START处
第4章 80X86汇编语言程序设计
第4章 80X86汇编语言程序设计
LENGTH运算符用来计算一个存储区的单元(单元可以是字节, 字或双字)的数目。 注意:LENGTH返回的存储区必须用复制操作符DUP( )来定义, 否则返回值为1。 例:
若FEES被定义为:FEES
则 MOV 汇编后,MOV CX,1
DW
4,5,6
CX,LENGTH FEES
第4章 80X86汇编语言程序设计
SIZE运算符用来计算一个存储区的字节总数。 例: 若BUFFER2存储区是用如下伪指令定义的: BUFFER2 则: DW 200 DUP(0)
TYPE
LENGTH SIZE
BUFFER2
BUFFER2 BUFFER2
等于2
等于200 等于400
第4章 80X86汇编语言程序设计
4.1.3 汇编语言程序的开发过程
MASM LT401A.ASM/ ML LT401A.ASM 源程序编辑 .ASM 源程序汇编 .OBJ 目标文件链接
修改源代码
LINK 可执行文件调试 DEBUG LT401A.EXE 正确 .EXE
LT401A.OBJ
可执行文件
第4章 80X86汇编语言程序设计
第4章 80X86汇编语言程序设计
表4.1运算符 运算符类型 运算符号及说明
算术运算符 +(加) −(减) *(乘) /(除) MOD(取余) 逻辑运算符 AND(与) OR(或) XOR(异或) NOT(非) 移位运算符 SHL(逻辑左移) 关系运算符 高低运算符 SHR(逻辑右移)
EQ(相等) NE(不相等) GT(大于) LT(小于) GE(大于等于) LE(小于等于)
(5)合成运算符
用来建立或临时改变变量或标号的类型或存储器操作的存储单 元类型。包括:PTR、THIS、SHORT。 PTR运算符 用来指定或修改存储器操作数的类型,通常和伪指令BYTE、 WORD等连起来使用。 例:MOV MOV 而 MOV BYTE PTR[DI],0 WORD PTR[DI],0 [DI],0 ;类型不定
–标号:硬指令助记符 操作数,操作数;注释
–说明性语句 –名字 伪指令助记符 参数,参数„. ;注释
第4章 80X86汇编语言程序设计
4.1.2 汇编语言的程序格式
• 在实地址模式和虚拟8086模式下,按照逻辑段组织程序, 具有代码段、数据段、附加段和堆栈段。 • 一个汇编语言源程序可以包含若干个代码段、数据段、 堆栈段或附加段,段与段之间的顺序可随意排列。 • 需独立运行的程序必须包含一个代码段,并指示程序执 行的起始位置,一个程序只有一个起始位置。 • 所有的可执行性语句必须位于某一个代码段内,说明性 语句可根据需要位于任一段内
第4章 80X86汇编语言程序设计
第4章 80X86汇编语言程序设计
• 本章的内容有: –MASM宏汇编语句结构以及开发过程 –MASM汇编语言表达式、运算符 –程序段的定义和属性 –复杂数据结构 –宏汇编 –基本汇编语言程序设计 –子程序设计 –高级汇编语言程序设计
第4章 80X86汇编语言程序设计
4.1 MASM宏汇编语句结构以及开发过程
4.1.1 汇编语言程序的语句类型和格式 1.语句的类型
–硬指令语句(指令性语句) 是指能产生目标代码,CPU可以执行的,能完成特定功能 的语句,它主要由CPU指令组成。 –伪指令语句(指示性语句) 是一种不产生目标代码的语句,它仅仅在汇编过程中告诉 汇编程序应如何汇编。 • 定义变量,定义过程,给变量分配存储单元,给数字 或表达式命名等。所以伪指令语句是汇编程序在汇编 时用的,不产生机器码。 –宏指令语句 它是一个指令序列,汇编时凡有宏指令语 句的地方都将用相应的指令序列的目标代码插入。
第4章 80X86汇编语言程序设计
• 两种格式书写 • 第一种格式是从MASM 5.0开始支持的简化段定义格式(但其 中的两个指令 .STARTUP和 .EXIT是6.0版本才引入的)。 • 第二种格式是MASM 5.0以前版本就具有的完整段定义格式。
第4章 80X86汇编语言程序设计
.例4.1 简化段定义的源程序格式 MODEL SMALL ;定义程序的存储模式,小型程序一般采用小模式SMALL .STACK ;定义堆栈段 .DATA ;定义数据段 STRING DB ’Hello,Everybody !’,0DH,0AH,’$’ ;在数据段定义要显示的字符串 .CODE ;定义代码段 .STARTUP ;说明程序起始位置,并建立DS、SS内容(注1) MOV DX,OFFSET STRING ;指定字符串在数据段的偏移地址 MOV AH,9 INT 21H ;利用DOS功能调用显示信息 .EXIT 0 ;程序结束点,返回DOS(注2) END ;汇编结束(注3)