2016微机技术-第七章-汇编程序设计

合集下载

汇编语言程序设计经典课件

汇编语言程序设计经典课件

汇编语言程序设计经典课件1. 引言汇编语言是一种低级程序设计语言,通过使用特定的指令和寄存器对计算机硬件进行直接操作。

本课件旨在帮助读者理解并掌握汇编语言程序设计的基本概念和技巧。

2. 基本概念在开始学习汇编语言之前,有一些基本概念需要了解:2.1 计算机的工作原理•冯·诺依曼体系结构•控制器和算术逻辑单元(ALU) •存储器和寄存器2.2 汇编语言的基本原理•指令集和操作码•寄存器和内存•标志寄存器和条件代码在汇编语言中,数据的表示方式有以下几种:3.1 二进制表示法•正整数、负整数和零•浮点数3.2 十进制表示法•常见数据类型3.3 其他表示法•八进制、十六进制和ASCII码表示法汇编语言包含各种指令,用于执行不同的操作。

以下是一些常见的基本指令:4.1 数据传送指令•MOV指令•XCHG指令4.2 算术和逻辑指令•ADD指令•SUB指令•AND指令•OR指令•XOR指令4.3 跳转指令•JMP指令•JZ指令•JC指令5. 汇编语言的程序结构一个汇编语言程序通常包含以下几个部分:5.1 程序的入口和出口•程序的开始和结束•程序的返回指令5.2 子程序•什么是子程序•如何调用和返回子程序5.3 中断处理程序•什么是中断•如何编写中断处理程序6. 汇编语言的调试和优化6.1 调试工具•机器级调试工具•模拟器和调试器6.2 优化技巧•寄存器的使用•循环优化•数据对齐7. 汇编语言的应用领域汇编语言在很多领域都有广泛的应用,包括但不限于:7.1 嵌入式系统7.2 驱动程序开发7.3 游戏开发7.4 系统安全8. 结语汇编语言是一种能直接与计算机硬件交互的低级语言,它对于理解计算机的工作原理和进行底层编程非常重要。

本课件希望能够为读者提供一个系统而全面的汇编语言程序设计入门指南,并帮助读者在实践中灵活运用所学知识。

微机原理8086汇编程序设计.ppt

微机原理8086汇编程序设计.ppt

MOV BL,05H OR 30H
;35H→BL
MOV CX,NOT 00FFH
;0FF00H→CX
MOV DX,789AH XOR 000FH
;7895H→DX
13/),不等(NE),小于(LT),大于(GT), 小于等于(LE)及大于等于(GE)。
•运算结果成立时逻辑值为真,用0FFFFH表示;
汇编程序不区分大小写
3/96
汇编语言语句统一格式规定
指令性语句、伪指令语句和宏指令语句的统一格式:
[名字项] 操作项 [操作数项] [;注释项]
1.名字项:最多由21个字符组成。可由下列字符组成。
①字母A~Z、a~z
②数字0~9
③特殊符号?、·、@ 、- 、$等
注意:
➢ 名字项的第一个字符不可以是数字,必须是字母或特殊字
符,但是问号本身不能单独作为名字;
➢ 如果用到特殊符号,则它必须是首字符。
➢ 汇编语言的专用保留字、寄存器名、8088/8086汇编语言中
的指令助记符、伪指令名、表达式中使用的运算符和属性
运算符等均不能作为名字项,否则汇编会给出错误信息;
➢ 名字项在程序中不能重复定义。
4/96
名字项属性
(1) 段属性:可用SIG伪指令求出 此属性用于定义标号和变量的段起始地址。标号通常在代码 段CS中定义,变量通常在DS、ES和SS段中定义。
2 DATA SEGMENT;
数据段

3 DATA ENDS ;…………………………………堆栈段说明 4 STACK SEGMENT PARA STACK′STACK′;堆栈段

5 STACK ENDS
;……………………………………………………………代码段说明

汇编语言程序设计方法

汇编语言程序设计方法

C 名字前加 下划线
从右到左 调用程序

SYSCALL
从右到左 被调用程序

STDCALL 名字前加
下划线 (注)
被调用程序

PASCAL 名字变大写
BASIC 名字大写
FORTRAN 名字大写
从左到右 被调用程序

从左到右 被调用程序

从左到右 被调用程序

12
PROTO是过程声明伪指令,用于事先声明过程的结构。它的格 式如下:
结束处理部分
AGAIN: ADD AX,CX
;从20,19,……2,1倒序累加到AX
LOOP AGAIN ;每循环一遍,CX自动减1
MOV SUM,AX ;将累加和送入SUM单元
.EXIT 0
END
初始化部分
循环结束? 是 否
工作部分 修改部分 结束处理部分
7
二、用MASM 6.x循环控制伪指令实现循环结构
.CODE
.STARTUP
MOV AL, B
IMUL AL
MOV BX,AX MOV AL,A
;BX中为B的平方
IMUL C
MOV CX,4
IMUL CX
;AX中为4AC
.IF SWORD PTR BX>=AX ;比较B的平方和4AC的大小
MOV SIGN,1
;条件成立,SIGN得到1
.ELSE
MOV SIGN,0
.IF 条件表达式 ;条件为真(非0),执行分支体
分支体
[.ELSEIF 条件表达式
分支体
;前面IF条件为假,并且当前ELSEIF条件为真执行分支体
[.ELSE
;前面IF条件为假执行分支体

微机原理与接口技术汇编语言程序教案

微机原理与接口技术汇编语言程序教案

微机原理与接口技术汇编语言程序教案第一章:汇编语言概述1.1 汇编语言的概念让学生了解汇编语言的定义、特点和作用。

让学生掌握汇编语言的基本组成元素,如指令、寄存器、操作数等。

1.2 汇编语言的表示方法让学生了解汇编语言的指令格式和操作数表示方法。

让学生掌握汇编语言的助记符及其含义。

1.3 汇编语言与机器代码的关系让学生了解汇编语言与机器代码的转换过程。

让学生掌握汇编语言指令与机器代码之间的对应关系。

第二章:汇编语言的语法规则2.1 指令语句的语法结构让学生了解指令语句的构成,包括操作码、寄存器、操作数等。

让学生掌握不同类型指令的语法规则,如数据传输指令、算术运算指令等。

2.2 伪指令和宏指令让学生了解伪指令和宏指令的概念及其作用。

让学生掌握伪指令和宏指令的语法规则和使用方法。

2.3 汇编语言的程序结构让学生了解汇编语言程序的组成部分,如数据段、代码段、堆栈段等。

让学生掌握汇编语言程序的格式和编写规范。

第三章:汇编语言的编程技巧3.1 寄存器的使用让学生了解寄存器的作用和分类,如AX、BX、CX、DX等。

让学生掌握寄存器在汇编语言编程中的应用技巧。

3.2 数据传输指令让学生了解数据传输指令的用法,如MOV、PUSH、POP等。

让学生掌握数据传输指令在汇编语言编程中的应用技巧。

3.3 算术运算指令让学生了解算术运算指令的用法,如ADD、SUB、MUL、DIV等。

让学生掌握算术运算指令在汇编语言编程中的应用技巧。

第四章:汇编语言程序设计实例4.1 实例一:计算两个数的和让学生了解程序设计的基本步骤,如编写算法、选择寄存器等。

让学生掌握汇编语言编程的基本技巧,如数据传输、算术运算等。

4.2 实例二:排序算法(冒泡排序)让学生了解排序算法的原理和实现方法。

让学生掌握汇编语言编程中循环结构和条件判断的使用技巧。

4.3 实例三:字符串操作让学生了解字符串的基本操作,如字符串长度计算、字符串复制等。

让学生掌握汇编语言编程中字符串操作的相关指令和技巧。

微机原理_汇编语言程序设计

微机原理_汇编语言程序设计

汇编语言

汇编语言源程序
高级语言

面向算法、过程、对象,类似自然语言,可移植性 好,须经解释或翻译后才能被执行
程序设计的步骤和方法
程序设计的步骤 程序设计的方法 常用伪指令 汇编语言格式汇编言格式 指令格式:
标号:助记符 参数,参数;注释 名字 定义符 参数,…,参数;注释
伪指令格式:

转移指令和分支程序
控制转移类指令

无条件转移指令 条件转移指令 比较转移指令 循环转移指令 用cjne实现三分支 用 jmp @A+DPTR 实现多分支
分支程序

循环程序
循环程序结构 单循环程序

例1:多字节求和 例2:内部数据区清零
例3:50ms延时程序
微机原理及应用
MCS-51单片机
第七章 汇编语言程序设计
程序设计语言简介 程序设计的步骤和方法 转移指令和分支程序 循环程序 子程序及其调用 程序设计举例
程序设计语言简介
机器语言

计算机唯一能够识别和执行的语言 “符号语言”,用指令助记符代表机器语言指令 汇编
机器语言目标程序
• ASCII码二进制
• 以DPTR为指针 • 地址偏移量表 • 转向地址表
查表程序
• 以PC为指针
散转程序
• 转移指令表
多重循环程序

子程序及其调用
子程序调用与返回指令 子程序设计方法 子程序的调用过程与子程序嵌套 调用过程中的参数传递

通过寄存器传递 通过堆栈传递 通过数据指针(DPTR)传递
程序设计举例
算术运算程序
• 多字节加法 •多字节BCD码减法

汇编语言程序设计

汇编语言程序设计

汇编语言程序设计汇编语言是一种底层的计算机语言,它直接与计算机硬件交互,具有灵活性和高效性的特点。

在计算机科学领域,汇编语言程序设计是一门重要的学科。

本文将分析汇编语言程序设计的基本原理和应用,介绍其在实际项目中的应用以及相关的开发工具。

一、汇编语言程序设计的基本原理汇编语言是一种符号化的机器语言,通过使用助记符和标号来描述指令和数据。

它与计算机硬件非常接近,可以直接操作寄存器、内存和其他硬件资源。

汇编语言程序设计的基本原理包括指令的组成、寄存器的使用、内存的管理和流程控制等方面。

1.1 指令的组成汇编语言的指令由操作码和操作数组成。

操作码是指令的功能代码,用于定义指令要执行的操作。

操作数是指令的操作对象,可以是寄存器、内存地址或立即数等。

汇编语言提供了丰富的指令集,包括算术运算、逻辑运算、数据传输、控制转移等多种类型的指令。

1.2 寄存器的使用寄存器是计算机内部用于存储临时数据的高速存储器。

汇编语言通过寄存器来进行数据的传输和运算。

不同的计算机体系结构提供了不同数量和类型的寄存器。

常见的寄存器包括通用寄存器、指令指针寄存器和程序状态寄存器等。

1.3 内存的管理内存是计算机用于存储程序和数据的主要设备。

汇编语言可以通过直接指定内存地址来读取和写入数据。

内存管理的主要任务包括地址转换、数据的加载和存储、内存保护等。

汇编语言通过使用段寄存器和偏移地址的方式来管理内存。

1.4 流程控制汇编语言支持多种流程控制指令,包括条件跳转、无条件跳转、循环和子程序调用等。

通过这些指令,程序可以根据运行结果来选择不同的执行路径,实现复杂的逻辑功能。

流程控制是程序设计中的重要部分,对于优化程序性能和实现复杂算法非常关键。

二、汇编语言程序设计的应用汇编语言程序设计广泛应用于系统级编程、设备驱动、数字信号处理等领域。

以下是汇编语言程序设计在实际项目中的常见应用。

2.1 操作系统开发操作系统是计算机硬件与用户之间的接口,负责管理硬件资源和为应用程序提供服务。

汇编语言程序设计第七章 循环结构程序

汇编语言程序设计第七章  循环结构程序

2. LOOPE/LOOPZ 条件重复控制指令
指令汇编格式: LOOPE/LOOPZ AGAIN
操作: (1) CX CX-1
(2) 若CX≠ 0且ZF=1,则使控制转到AGAIN 标识的循环入口处,继续下一次循环,否则退出循 环体,执行后续指令。
例 比较两个字符串是否相等。
STR1 DB
‘12345’
DSEG SEGMENT
DATA DB
10,20,30,80,100,90,120
CNT DW 7
ADR DW 0FFFFH
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG,ES:DSEG
START: MOV AX,DSEG MOV DS,AX
DATA1 00H
01H 00H 02H
: :
SI DATA2 00H
10H
50
00H

20H


:

:
DI SUM 00H
BX
00H
50
00H 50

00H

字 单
:
字 单

:

00H
00H
例7.1 设内存DATA1和DATA2开始分别存放50个无符 号字数据,编制程序将两个存储区对应字数据求和并存 入SUM开始的单元。
存储器中仅由字节或字组成的一组数据称为数据串。由字节组 成的数据串称为字节数据串,简称字节串;由字组成的数据串称为 字数据串,简称字串。一个数据串的长度最长不能超过64KB。
数据串操作指令的寻址方式为数据串寻址:
(1)指令中要处理的两个数据串应分别在数据段和附加段中定义。 (2)数据段中定义的数据串要用SI作指针;

16、32位微机原理、汇编语言和接口技术教程课后习题答案解析

16、32位微机原理、汇编语言和接口技术教程课后习题答案解析

《16/32 位微机原理、汇编语言及接口技术教程》部分习题参考解答第1 章微型计算机系统概述〔习题1.2 〕什么是通用微处理器、单片机(微控制器)、芯片、嵌入式系统?〔解答〕通用微处理器:适合较广的应用领域的微处理器,例如装在机、笔记本电脑、工作站、服务器上的微处理器。

单片机:是指通常用于控制领域的微处理器芯片,其内部除外还集成了计算机的其他一些主要部件,只需配上少量的外部电路和设备,就可以构成具体的应用系统。

芯片:称数字信号处理器,也是一种微控制器,其更适合处理高速的数字信号,内部集成有高速乘法器,能够进行快速乘法和加法运算。

嵌入式系统:利用微控制器、数字信号处理器或通用微处理器,结合具体应用构成的控制系统,其典型的特点是把计算机直接嵌入到应用系统之中。

〔习题1.5 〕说明微型计算机系统的硬件组成及各部分作用。

〔解答〕:也称处理器,是微机的核心。

它采用大规模集成电路芯片,芯片内集成了控制器、运算器和若干高速存储单元(即寄存器)处理器及其支持电路构成了微机系统的控制中心,对系统的各个部件进行统一的协调和控制。

存储器:存储器是存放程序和数据的部件。

外部设备:外部设备是指可与微机进行交互的输入()设备和输出()设备,也称设备。

设备通过接口与主机连接。

总线:互连各个部件的共用通道,主要含数据总线、地址总线和控制总线信号。

习题1.6 〕什么是总线?微机总线通常有哪3 组信号?各组信号的作用是什么?〔解答〕总线:传递信息的共用通道,物理上是一组公用导线。

3 组信号线:数据总线、地址总线和控制总线。

(1)地址总线:传输将要访问的主存单元或端口的地址信息。

(2)数据总线:传输读写操作的数据信息。

(3)控制总线:协调系统中各部件的操作。

习题1.7 〕简答如下概念:(1)计算机字长(2)取指-译码-执行周期(3)(4)中断(5)总线解答〕(1)处理器每个单位时间可以处理的二进制数据位数称计算机字长。

(2)指令的处理过程,即指处理器从主存储器读取指令(简称取指),翻译指令代码的功能(简称译码),然后执行指令所规定的操作(简称执行)的过程。

课件汇编语言程序设计

课件汇编语言程序设计

汇编语言的应用领域
系统软件
汇编语言在系统软件领域的应用 非常广泛,如操作系统、设备驱
动程序等底层软件的编写。
游戏开发
在游戏开发中,汇编语言主要 用于实现游戏引擎和底层图形 渲染等关键技术。
嵌入式系统
在嵌入式系统中,由于硬件资源 有限,汇编语言常常被用于实现 系统内核和关键模块的优化。
安全领域
由于汇编语言的底层特性,它在 安全领域中也有着广泛的应用,
段的大小和起始地址可以 通过汇编指令进行定义和 修改。
ABCD
段是内存中连续的内存单 元的集合,通常用于存储 程序代码、数据等。
内存单元的访问通常通过 偏移量来实现,偏移量指 定了从段起始地址开始的 相对地址。
寻址模式
寻址模式是指确定如何访问内存单元或寄存器 中的数据的方式。
常见的寻址模式有直接寻址、间接寻址、基址 寻址、变址寻址等。
高效性
由于汇编语言与机器指令一一对应,因此其执行效率非常 高。
面向机器
汇编语言直接与计算机硬件打交道,因此其程序的可移植 性较差。
语言简洁
汇编语言的指令集较少,语法简单,易于学习和掌握。
汇编语言的历史和发展
01
早期的汇编语言
随着计算机的诞生和发展,人们开始使用汇编语言进行程序设计。早期
的汇编语言比较简单,主要用于编写操作系统和编译器等底层软件。
02
C语言可以通过调用汇编语言 编写的函数来实现与汇编语言 的交互。
03
C语言中的某些关键字和运算 符可以与汇编语言进行交互, 例如asm关键字和volatile关键 字。
Java语言与汇编语言的接口
01
Java虚拟机(JVM)可以解释和执行汇编语言编写 的代码。

微机原理汇编语言程序设计ppt课件

微机原理汇编语言程序设计ppt课件
汇编后源操作数被翻译为:3F00H, 所以上述指令与以下指令等价: AND AX, 3F00H
烧伤病人的治疗通常是取烧伤病人的 健康皮 肤进行 自体移 植,但 对于大 面积烧 伤病人 来讲, 健康皮 肤很有 限,请 同学们 想一想 如何来 治疗该 病人
4.2.3.3 表达式—分析运算符
分析运算符包括:SEG、OFFSET SEG:取变量/标号的段地址 OFFSET:取变量/标号的偏移地址
烧伤病人的治疗通常是取烧伤病人的 健康皮 肤进行 自体移 植,但 对于大 面积烧 伤病人 来讲, 健康皮 肤很有 限,请 同学们 想一想 如何来 治疗该 病人
4.2.3.3 表达式
表达式由标号、常量、变量等加上必要的运算符构成 有数字表达式和地址表达式两种 汇编时按优先规则对表达式进行计算,计算出具体的数值
ASSUME DS:DATA, ES:EXTRA代码段 CODE ENDS
MAIN PROC FAR
; ----------------------------------------------
MOV AX, DATA
END MAIN
MOV DS, AX
烧伤病人的治疗通常是取烧伤病人的 健康皮 肤进行 自体移 植,但 对于大 面积烧 伤病人 来讲, 健康皮 肤很有 限,请 同学们 想一想 如何来 治疗该 病人
4.2.3.1 常量
常量操作数:
数值常数:11001000B,0FA21H,329D(329) 字符常数:‘ABCD’ (41H 42H 43H 44H)
例:
MOV AX, 0FA21H VAR DB 329 STR DB ‘ABCD’
烧伤病人的治疗通常是取烧伤病人的 健康皮 肤进行 自体移 植,但 对于大 面积烧 伤病人 来讲, 健康皮 肤很有 限,请 同学们 想一想 如何来 治疗该 病人

微型计算机汇编语言程序设计

微型计算机汇编语言程序设计

22
第2节 汇编语言源程序的格式
汇编语言程序设计
运算符之五:合成运算符
例 N1 DB 15H,36H N2 DW 1122H,3344H LO: MOV AX,WORD PTR N1 ;使N1转换成AX类型 MOV BL, BYTE PTR N2 ;使N2转换成BL类型 MOV [BX],10H

汇编语言格式
DATA SEGMENT ;定义数据段
DATA1 DB 0F8H,60H, 0ACH,74H,3BH;被加数 DATA2 DB 0C1H,36H,9EH,0D5H,20H;加数 DATA ENDS CODE SEGMENT START: MOV AX,DATA MOV DS,AX MOV CX,5 MOV SI,0
23
第2节 汇编语言源程序的格式
汇编语言程序设计
运算符之五:合成运算符
2. THIS 【格式】变量/标号 EQU THIS 类型/距离 【功能】将EQU THIS右边的类型/距离属性,赋给左边的
变量/标号,该变量或标号的段地址和偏移地址与下
一个存储单元的地址相同。(同一段存储空间) 【例】 FIRST EQU THIS BYTE TABLE DW 200 DUP(?) FIRST的偏移地址值与 TABLE的偏移地址值相同,区 别在于FIRST变量为字节类型,TABLE为字类型。 汇编语言程序设计
6
第2节 汇编语言源程序的格式
汇编语言程序设计
操作数
变量
变量通常指存放在存储单元中的值,程序运行中可以修 改。所有的变量都具有三个属性。 ⑴段值(SEGMENT)
⑵段内偏移地址(OFFSET)
⑶类型(TYPE)
7
第2节 汇编语言源程序的格式

汇编语言程序设计知识

汇编语言程序设计知识

汇编语言程序设计知识汇编语言是一种低级语言,用于向计算机提供指令和数据。

掌握汇编语言程序设计知识,对于深入理解计算机体系结构和系统底层原理非常重要。

本文将为你介绍汇编语言程序设计的基本知识,并探讨其在实际应用中的应用。

一、汇编语言概述汇编语言是一种与机器语言直接对应的语言,每一条指令都可以直接被计算机硬件执行。

相比高级语言,汇编语言更加接近计算机底层,因此执行效率更高。

汇编语言通常包括指令集、寄存器和内存等概念。

1. 指令集汇编语言的指令集是由一系列指令组成的,这些指令可以直接被计算机执行。

指令集通常包括算术指令、逻辑指令、数据传输指令等,每个指令具有特定的功能和操作码。

2. 寄存器寄存器是计算机内部用于存储数据和执行操作的存储器。

在汇编语言中,寄存器用于进行数据传输、算术运算和逻辑操作等。

常见的寄存器包括通用寄存器、特殊寄存器和段寄存器等。

3. 内存内存是计算机用于存储指令和数据的地方。

在汇编语言中,程序员可以直接操作内存地址,进行数据的读取和存储。

通过合理地利用内存,可以提高程序的执行效率。

二、基本语法和数据表示在汇编语言中,程序员需要掌握基本的语法和数据表示方法,以编写正确的程序。

1. 语法汇编语言的语法是由指令、操作数和注释组成的。

指令是计算机执行的命令,操作数是指令所涉及的数据或寄存器。

注释用于解释程序的功能和作用。

2. 数据表示在汇编语言中,数据可以表示为二进制、十进制、十六进制等形式。

程序员需要根据实际需求选择适当的表示方式,并了解不同进制之间的转换方法。

三、程序设计实例为了更好地理解和应用汇编语言程序设计知识,我们将通过一个实例来演示程序设计的过程。

假设我们需要编写一个汇编程序,实现两个数相加的功能。

下面是程序的伪代码表示:```1. 将第一个数存储到寄存器A2. 将第二个数存储到寄存器B3. 将寄存器A和寄存器B的值相加,结果存储到寄存器C4. 将寄存器C的值存储到内存中```根据上述伪代码,我们可以编写如下的汇编程序:```MOV AX, num1 ; 将第一个数存储到寄存器AXMOV BX, num2 ; 将第二个数存储到寄存器BXADD AX, BX ; 将寄存器AX和寄存器BX的值相加MOV result, AX ; 将寄存器AX的值存储到result内存地址中```通过上述程序,我们实现了两个数相加的功能,并将结果保存在result变量中。

汇编语言程序设计教程PPT-第7章

汇编语言程序设计教程PPT-第7章
1
user32.dll 提供用户接口服务功能,包括创建窗口和传递消息等。
2
gdi32.dll 提供图形设备接口,实现文本及图形的显示操作。
3
第七章 Win32汇编语言程序设计
invoke 函数名 [,参数1] [,参数2]
invoke MessageBox, NULL, addr szgreet, addr sztilte, MB_OK
第七章 Win32汇编语言程序设计
第七章 Win32汇编语言程序设计
(3)窗口程序的主要代码分析(模块和句柄、注册窗口类、建立窗口、窗口过程)
(2)窗口程序的运行过程
Win32窗口程序实例: 消息传递机制 代码分析
7.4 汇编语言与VC++的混合编程
嵌入式汇编语言指令及编程方法
(1)嵌入式汇编指令
源程序结构、源程序的模式定义与段定义 在Win32环境下,应用程序可以寻址4GB空间。
API函数的使用(包含声明文件、调用API函数)
Win32汇编的编程环境(命令行编程环境、集成开发 环境)
7.1 Win32汇编语言程序设计基础
.386 ;指定可使用处理器指令集 .model flat, stdcall ;模式定义 option casemap:none ;指定汇编选项 <若干条include 语句> ;包含API函数和动态链接库头文件 .stack [堆栈段大小] ;定义堆栈段 .data ;数据段(定义初始化变量) <初始化变量定义> .data? ;数据段(定义未初始化变量) <未初始化的变量定义> .const ;定义常量段 <常量定义> .code ;定义代码段 <开始标号> <若干语句> end 开始标号 ;源程序结束

微机原理、汇编语言与接口技术 第七章 习题答案 人民邮电出版社(周杰英 张萍 郭雪梅 著)

微机原理、汇编语言与接口技术 第七章 习题答案 人民邮电出版社(周杰英 张萍 郭雪梅 著)

第7章输入/输出接口习题与参考答案这一章的习题与参考答案分为两大部分,一部分是输入输出概述及DMA控制器的习题与参考答案;另一部分是中断及中断控制器部分的习题与参考答案。

一、输入输出概述及DMA控制器的习题与参考答案1、请说明为什么输入接口的数据缓冲寄存器必须有三态输出功能而输出接口却不需要的原因。

解:输入接口的数据缓冲寄存器的输出端是直接接在数据总线上的,如果数据寄存器没有三态输出功能,则无论数据寄存器被寻址选中或未被选中,其数据都会被送上数据总线,若此时总线上真正要传送的数据与该输入缓存器的内容不一致时,就会发生总线冲突。

所以,输入接口的数据缓冲器必须有三态输出功能,以便当接口未被寻址选中时,其输出端处于高阻态,从而与总线隔离。

对于输出接口来说,是输入端与数据总线相连,而输出端是与外设相连,因此其输出不影响总线状态;另外,一个外设一般只与一个输出数据缓存器相连,因此输出接口的数据缓存器无须有三态输出功能。

2、8086/8088CPU中哪些寄存器可以用于I/O寻址?若I/O端口地址分别是10H和100H,分别写出向这两个端口写入73H的程序段。

解:8086/8088CPU内可以用于I/O寻址的寄存器为AL、AX和DX。

向端口10H写入73H的程序段为:MOV AL,73HOUT 10H,AL向端口10H写入73H的程序段为:MOV AL,73HMOV DX,100HOUT DX,AL3、图为7段显示器接口,显示器采用共阳极接法,试编写程序段,使AL中的一位十六进制数显示于显示器上。

输出锁存器地址为40H。

解:TABLE DB 3FH,06H,5BH,4FHDB 66H,6DH,7DH,07HDB 7FH,67H,77H,7CH,DB 39H,5EH,79H,71HLEA BX,TABLEXLA TOUT 40H,AL4、PC/XT机有哪些输入输出方式?各自的特点如何?DMA控制器应具备哪些功能?解:无条件方式:需要外设处于就绪状态,硬件简单;查询方式:CPU需要不断地查询外设是否就绪,浪费CPU时间,硬件较简单;中断方式:外设准备好后,向CPU发中断请求,请求CPU完成数据传输,外设与CPU 并行;硬件又比前两者复杂。

微机原理与汇编语言程序设计实验一

微机原理与汇编语言程序设计实验一

实验一汇编语言上机环境及基本操作一、实验目的及要求1.学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。

2.学会使用EDIT、MASM、LINK、DEBUG等软件工具。

3.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。

二、实验内容1.汇编语言源程序的建立本例中给出的程序是要求从内存中存放的10个无符号字节整数数组中找出最小数,将其值保存在AL寄存器中。

设定源程序的文件名为ABC。

DATA SEGMENTBUF DB 23H,16H,08H,20H,64H,8AH,91H,35H,2BH,7FHCN EQU $-BUFDATA ENDSSTACK SEGMENT STACK ’STACK’STA DB 10 DUP(?)TOP EQU $-STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: PUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV BX,OFFSET BUFMOV CX,CNDEC CXMOV AL,[BX]INC BXLP: CMP AL,[BX]JBE NEXTMOV AL,[BX]NEXT: INC BXDEC CXJNZ LPMOV AH,4CHINT 21HCODE ENDSEND START键入以下命令:C:\>EDIT ABC.ASM此时屏幕的显示状态如图1所示。

图1 用EDIT编辑ABC.AS M程序窗口程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出源程序进行修改。

2.将源程序文件汇编成目标程序文件一般情况下,MASM汇编程序的主要功能有以下3点:(1)检查源程序中存在的语法错误,并给出错误信息。

(2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。

(3)若程序中使用了宏指令,则汇编程序将展开宏指令。

第七讲微型计算机汇编语言及汇编程序

第七讲微型计算机汇编语言及汇编程序

标号和变量名的使用规则
组成:A-Z(不分大小写), 0-9, ? . _ $
不能以数字开头,句号(.)只能作为首字符 长度小于31个字符 不能与保留字(指令助记符、伪指令、预定义符号等)重名 不能重复定义 例如: 正确的:LP1, AGAIN, NEXT, _GO, OK_1 错误的:4M, LOOP, AAA, #HELP, +ONE
例:VAR DW 1,2,3,4,5
则 TYPE VAR = 2
LENGTH VAR = 5
SIZE VAR = 10
6)属性运算符——PTR
用来指定地址操作数的类型。 格式:<类型> PTR <地址操作数>
类型∈{BYTE, WORD, DWORD, NEAR, FAR}
BYTE、WORD、DWORD 用于描述数据存储单元(变量)地址
注释——以分号开头,可放在指令后,也可单独 一行。
注意注解的写法。要写指令(段)在程序中的 作用,而不要写指令的操作。
例如:以下为同一条指令写的注释 1)MOV CX,100 ;传送100到CX 2)MOV CX,100 ;循环计数器置初值
显然,第二种写法要比第一种写法要好。
汇编语言的一个实例: hello.asm
用EQU定义的符号未清除前,不能重新定 义。清除EQU定义可用PURGE伪指令。
用”=”定义的符号可在任何时候进行重定 义。
二者均不占用存储空间,仅是给符号赋值
例:FIVE EQU 5 COUNT EQU CX TEN EQU 10 DIST = BYTE PTR[SI+BP] GOTO = JMP
LEA BX, VAR
OFFSET只能取静态的偏移地址; LEA指令即可取静态的偏移地址,也可取动态的偏移地址。

微机原理7_汇编语言程序设计08

微机原理7_汇编语言程序设计08
第七章
汇编语言程序设计
1
7.1 汇编语言程序设计的一般步骤

汇编语言程序设计一般有以下几个步骤:p146 1.分析问题,确定算法 2.绘制流程图 3.根据流程图编制程序 4.调试程序
2


7.1.1 流程图
1.流程图的概念 流程图是由特定的几何图形、指向线、文字说明 来表示数据处理的步骤,形象描述逻辑控制结构 以及数据流程的示意图。流程图具有简洁、明了、 直观的特点。
32
lea si,num1+2 ;置被减数低位指针 lea di,num2+2 ;置减数低位指针 mov ah,‘+‘ ;预置结果为+ xor bx,bx ;置指针初值 mov cx,3 ;置循环次数 lop1: mov al,num1[bx] ;比较被减数S1和减数S2 cmp al,num2[bx] ;从高到低依次比较 je next1 ;相等比较下一位 jnc next2 ; 若S1>S2,转移 mov ah,‘-‘ ; 若S1<S2,修改结果为— xchg si,di ;指针交换 jmp next2 next1: inc bx ;指针指向下一位 loop lop1
25







LOP1:MOV AL,[BX] CMP AL,0 JGE JUS INC DX JUS: INC BX DEC CX JNZ LOP1 MOV RS,DX MOV AH,4CH INT 21H CODE ENDS END
26

例7.6:确定一个字变量中为1的最低位数。
Y 条件成立? N
分支语句体1
分支语句体2 后续操作
JMP
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第七章汇编语言程序设计7.1 概述汇编语言是一种面向机器的语言。

它是与计算机硬件密切关联的,因而熟悉计算机硬件是汇编语言程序员必须具备的条件。

1.汇编语言程序设计的基本步骤(1)描述问题(2)确定算法。

(3)绘制流程图。

(4)分配存储空间和工作单元。

(5)编写程序。

(6)上机调试。

2.编程环境从80286开始,微处理器有实模式和保护模式两种基本工作模式;为了解决80286中不能在保护模式下运行8086/8088应用程序的问题,从80386开始在保护模式中引入了虚拟8086工作方式。

7.2 分支程序设计分支程序就是根据不同的情况或条件执行不同功能的程序,它具有判断和转移功能,在程序中利用条件转移指令对运算结果的状态标志进行判断实现转移。

7.2.1 分支程序的结构形式分支程序结构有2种基本形式,即二路分支结构和多路分支结构,如图7.1所示。

两种结构的共同特点是:在某一特定条件下,只执行多个分支中的一个分支。

(A)二路分支结构 (B)多路分支结构图7.1 分支程序的结构形式7.2.2 二路分支程序设计方法例7.2.1有一函数,任意给定自变量X值(-128≤X≤127),当X≥0时函数值Y=1、当X<0时Y=-1;设给定的X值存入变量XX1单元,函数Y值存入变量YY1单元。

求函数Y值的程序如下所示:DATA SEGMENTXX1 DB XYY1 DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AL,XX1CMP AL,0JNS AA2MOV AL,-1JMP AA1AA2: MOV AL,1AA1: MOV YY1,ALMOV AH,4CHINT 21HCODE ENDSEND START7.2.3 多路分支程序设计方法常用的多路分支程序设计有三种方法,即逻辑分解法、地址表法和转移表法,下面举例说明。

例7.2.2某工厂有5种产品的加工程序1到5分别存放在WORK1,WORK2…WORK5为首地址的内存区域中,分别键入1,键入2…键入5转入选择其对应的加工程序。

下面用不同方法编制其程序。

(1)逻辑分解法CODE SEGMENTASSUME CS:CODESTART: MOV AH,1INT 21HCMP AL,31HJ Z WORK1CMP AL,32HJZ WORK2CMP AL,33HJ Z WORK3C MP AL,34HJ Z WORK4C MP AL,35HJ Z WORK5J MP WORK0WORK1: ┇WORK2: ┇WORK3: ┇WORK4: ┇WORK5: ┇WORK0: MOV AH,4CHI NT 21HCODE ENDSE ND START(2)地址表法表地址=表首址+(键号-1)×2DATA SEGMENTTABLE DW WORK1,WORK2,WORK3,WORK4,WORK5;地址表DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAM OV DS,AXL EA BX,TABLEM OV AH,1I NT 21HA ND AL,0FHD EC AL ;键号减一A DD AL,AL ;键号乘2S UB AH,AHA DD BX,AX ;形成表地址JMP WORD PTR[BX] ;转移WORK1: ┇WORK2: ┇WORK3: ┇WORK4: ┇WORK5: ┇┇MOV AH,4CHINT 21HCODE ENDSEND START7.3 循环程序设计7.3.1 循环程序的结构形式循环程序由五部分组成:1)初始化部分:它是循环的准备部分,为程序操作、地址指针、循环计数、结束条件等设置初始值。

2)循环工作部分:这是循环程序的核心部分,它以初始化部分设置的初值为基础,动态地执行功能相同的操作。

3)循环修改部分:与工作部分协调配合,修改循环工作部分的变量、指针等,为下次重复操作作准备。

4)循环控制部分:修改控制量用以判断和控制循环的走向,即根据控制量的状态标志条件,决定是继续循环还是退出循环。

5)循环结束部分:退出循环后,对循环结果进行处理部分。

常用的基本结构形式有两种,如图7.2和图7.3所示。

图7.2先执行后判断结构形式的特点是先执行循环工作部分,然后再判断循环是否结束。

所以这种循环结构称为不允许零次循环结构,即不论循环是否满足,至少要执行一次循环体工作部分。

图7.3 先判断后执行结构形式的特点是先判循环是否结束,若未结束就执行循环工作部分,否则退出循环。

因为这种循环结构有可能循环工作部分一次也不执行,所以这种循环结构称为允许零次循环结构。

图7.2 先执行后判断结构 图7.3 先判断后执行结构7.3.2 循环程序的设计方法例7.3.1某个数据段中,偏移地址1000H 单元开始连续存放255个8位无符号整数x 1、x 2、…x 254、x 255。

试写程序求这些数据的和,并其存入SUM1单元中。

8位无符号数在0~255之间,255个数的和一定是一个不超过16位二进制的数。

所以存放和的单元取字单元;求和运算采取16位累加求和方式,即先0送DH ,AX 为累加和,每次将内存的数取入DL 中后进行AX 与DX 相加。

1. 计数控制循环因该例是对255数相加求和,则取255为计数控制循环条件。

(1)先执行后判断结构形式的计数控制循环DATA SEGMENTO RG 1000HNUMBER1 DB x1,x2,…x254,x255SUM1 DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXLEA BX,NUMBER1MOV AX,0M OV DH,0MOV CL,255 ;计数初值AA1: MOV DL,[BX] ;取数A DD AX,DX ;求和I NC BX ;修改地址指针S UB CL,1 ;计数J NZ AA1 ;判转M OV SUM1,AX ;存和M OV AH,4CHI NT 21HCODE ENDSEND S TART2. 条件控制循环在例7.3.1中,如果末尾的数与其它数均不相同,则可取x255为结束循环的控制条件。

(1)先执行后判断结构形式的条件控制循环DATA SEGMENTO RG 1000HNUMBER1 DB x1,x2,…x254,x255SUM1 DW ?DATA ENDSCODE SEGMENTA SSUME CS:CODE,DS:DATASTART: MOV AX,DATAM OV DS,AXL EA BX,NUMBER1M OV AX,0M OV DH,0AA1: MOV DL,[BX] ;取数A DD AX,DX ;求和I NC BX ;修改地址指针C MP DL,x255J NZ AA1 ;判转M OV SUM1,AX ;存和M OV AH,4CHI NT 21HCODE ENDSE ND S TART设计循环程序时,一般有以下几个步骤:1)根据问题,确定是选取先执行后判断结构形式,还是先判断后执行结构形式。

2)必须选择恰当的循环条件来控制循环的运行和结束。

其中,计数器控制法适用于循环次数已知的情况,条件控制法适用于循环次数未知的情况。

3)根据重复执行的任务,确定适合于循环的工作部分。

4)根据循环程序控制方法的不同,来设置循环参数的初值。

5)考虑循环参数的修改部分,分析并确定参数的每次修改方法。

7.3.3 单重循环例7.3.3编制在CRT上显示“中”字形的源程序。

DATA SEGMENTNUMBER1 DB 0AH,0DH ;0AH、0DH分别是换行、回车的ASCII码D B ‘ A ’,0AH,0DH ;单引号内空白处共有6个空格D B ‘AAAAAAA’,0AH,0DHD B ‘A A A’,0AH,0DHD B ‘A A A’,0AH,0DHD B ‘AAAAAAA’,0AH,0DHD B ‘ A ’,0AH,0DHD B ‘ A ’,0AH,0DHDATA ENDSCODE SEGMENTA SSUME CS:CODE,DS:DATASTART: MOV AX,DATAM OV DS,AXLEA BX, NUMBER1M OV CX,65 ;计数初值为7×9+2AA1: MOV DL,[BX]I NC BXM OV AH,2I NT 21HL OOP AA1M OV AH,4CHI NT 21HCODE ENDSE ND START7.3.4 多重循环所谓多重循环程序即循环体中又包含循环结构。

例7.3.7编制键入一个3~9间的数字,输出一个用“*”组成的三角形的源程序。

例如键入5,输出的三角形如下所示。

** ** * ** * * ** * * * *下面我们采用正计数法来编制此源程序。

CODE SEGMENTA SSUME CS:CODESTART: MOV AH,1I NT 21HC MP AL,33HJ C STARTC MP AL,3AHJ NC STARTA ND AL,0FHM OV BL,AL ;外循环计数控制值送BLM OV BH,0 ;为内循环计数控制作准备AA1: MOV DL,0AHM OV AH,2I NT 21HM OV DL,0DHM OV AH,2I NT 21HI NC BH ;设置内循环计数控制值C MP BL,BH ;判断循环是否结束J NC AA2M OV AH,4CHI NT 21HAA2: XOR CL,CL ;设置内循环计数控制初值0AA3: MOV DL,’* ’M OV AH,2I NT 21HI NC CL ;内循环计数加一C MP CL,BH ;判断内循环是否结束J NZ AA3J MP AA1 ;返回外循环CODE ENDSE ND START7.4 子程序设计采用子程序结构具有简化程序设计过程;节省程序设计时间;缩短程序的长度;节省存储空间;增加程序的可读性;便于对程序的修改和调试;方便程序的模块化和结构化的程序设计等优点。

为了使所编制的子程序做到通用性,在设计子程序时,同时要建立子程序的文档说明。

子程序的说明文件一般应包括以下几项内容:1)子程序名:一般取具有象征意义的标识符,供调用子程序时使用。

2)子程序的功能:说明子程序完成的具体任务。

3)子程序占用的寄存器和工作单元:说明子程序执行时需要使用哪些寄存器;子程序执行后,哪些寄存器的内容被改变,哪些寄存器的内容保持不变。

4)子程序的输入参数:说明子程序运行所需的参数以及存放位置。

相关文档
最新文档