IBM—PC(80x86)汇编语言与接口技术-第5章 循环与分支程序设计

合集下载

汇编语言第五、六章:循环与分支程序设计

汇编语言第五、六章:循环与分支程序设计
②程序开始时,执行如下指令
PUSH DS MOV AX,0 PUSH AX ③用户程序结束时,用RET指令
程序结束的方法
(2)使用DOS功能调用的“INT 21H”指令,实现 用户程序结束,返回DOS
方法:在程序结束前,使用如下指令 MOV AH,4CH INT 21H
注意:一般情况下,使用第2种方法结束用户程序。
3.与简化段定义有关的预定义符号
汇编程序给出了与简化段定义有关的一组预定义符号,它们可在程 序中出现,并由汇编程序识别使用。有关的预定义符号如下:
(1)@code 由.CODE 伪指令定义的段名或段组名。 (2)@data 由.DATA 伪指令定义的段名,或 由 .DATA 、.DATA?、.CONST和 .STACK所定义的段组名。 (3)@stack 堆栈段的段名或段组名。
第一节:循环结构
初始化
循环体
修改部分 Y
控制条件 N
结束
循环的初始状态
循环的工作部分 及修改部分
计数控制循环 条件控制循环
ห้องสมุดไป่ตู้
第五章第循一环章与基分础支知程识序设计
第五章第循一环章与基分础支知程识序设计
循环程序设计
根据条件重复执行一段指令就构成了循环程序结构 。
例:将ARRAY数组中的50个数求和,并将和存入字变量S中 。
……
00110001
16. 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 (ROL DX,1) 0 0 0 0 0 0 0 1 (AND)
00000000 + 0 0 1 1 0 0 0 0 (ADD)
00110000
binbuf 30 31 30 30 30 30 31 30 30 30 31 31 30 30 30 30 返回

80x86汇编语言程序设计、第5章循环与分支程序.

80x86汇编语言程序设计、第5章循环与分支程序.

合肥学院计算机科学与技术系何立新《汇编语言程序设计》大家做一个题目试编一程序,求三个带符号字数据中的最大值,并将最大值存入MAX字单元中。

设三个带符号数分别在三个字变量X、Y、Z中存储。

合肥学院计算机科学与技术系程序如下: DATA 何立新《汇编语言程序设计》 DATA CODE START: MOV MOV SEGMENT X DW Y DW Z DW MAX DW ENDS SEGMENT 00ABH –5 200 ? CMP AX , Z JG EXIT L2: MOV AX, Z JMP EXIT L1: CMP AX,Z JLE L2 ;X>Z? ASSUME DS:DATA,CS:CODE AX,DATA DS,AX EXIT:MOV MAX,AX MOV AH,4CH INT 21H MOV CMP JG MOV AX,X AX,Y L1 AX,Y ;Y>Z?;X>Y? CODE END ENDS START
合肥学院计算机科学与技术系何立新《汇编语言程序设计》第五章作业
P209 5.1, 5. 2, 5. 3 交电子档,每人建立一个文件夹,命名为:学号-姓名。

由学习委员统一收齐后,建立一个以班级命名的文件夹,压缩后发到我的邮箱:hlxinwxy@。

IBM-PC汇编语言(⑤ 循环与分支程序设计)

IBM-PC汇编语言(⑤ 循环与分支程序设计)

ch5
mov rol mov and add cmp jl add printit: mov mov int dec jnz ……
; ’0’~’9’ ASCII 30H~39H
; ’A’~’F’ ASCII 41H~46H
2013-6-27
安徽理工大学 计算机科学与技术系
李敬兆
《汇编语言》 第5章
安徽理工大学 计算机科学与技术系
李敬兆
《汇编语言》 第5章
第五章
循环与分支程序设计
ch5
2013-6-27

1. 2.
教学重点
掌握基本程序结构――顺序结构、循环结 构、分支结构及其汇编语言程序设计 熟悉常见程序设计问题:



数据范围判断(0~9、A~Z、a~z) 字母大小写转换; 字符串传送、比较等操作 求最大最小值、数据求和、统计字符个数 数组排序,查找,插入,删除
;------------mov bx,offset ASCII ;BX指向ASCII码表 mov al,hex ;AL取得一位16进制数,正是ASCII码表中位移
ch5
2013-6-27
安徽理工大学 计算机科学与技术系
李敬兆
《汇编语言》 第5章
例 代码转换
and al,0fh ;只有低4位是有效的,高4位清0
data ends code segment main proc far
ch5
2013-6-27
安徽理工大学 计算机科学与技术系
李敬兆
《汇编语言》 第5章
例 代码转换
assume cs:code,ds:data start:
push ds xor ax,ax push ax mov ax,data mov ds,ax

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)错误!未指定书签。

第五章 循环与分支程序

第五章  循环与分支程序

8
单分支程序设计
例2:计算AX的绝对值 SUB ax, 0 jge nonneg ;条件满足(AX≥0)? neg ax ;条件不满足,求补 nonneg: mov result, ax ;条件满足 ;
9
单分支程序设计
例3:将AX中存放的无符号数除以2,如果是奇数, 则加1后除以2 test ax,01h ;测试AX最低位 jz even1 ;最低位为0:AX为偶数 add ax,1 ;最低位为1:AX为奇数,需要加1 even1:rcr ax,1 ;AX←AX÷2
分析题意,确定算法。找出合理的算法与适当的数据 结构 根据算法画出流程图 根据流程图编写程序 上机调试程序
汇编语言程序的结构组成
顺序结构 分支结构 循环结构 子程序的结构
4
《汇编语言》 汇编语言》
5.2 分支程序
目标
分支程序的结构及设计
双分支程序的结构及设计 多分支程序的结构及设计 单分支程序的结构及设计
算法
二分查找 地址址表实现多分支
6
分支程序的结构
分支程序
分支程序根据条件是真或假决定执行与否 判断的条件是各种指令,如SUB、CMP、TEST等执行后 形成的状态标志 转移指令Jcc和JMP可以实现分支控制
分支程序的结构形式
单分支 双分支 多分支
7
单分支程序设计
例1:计算X-Y的绝对值 mov ax,X sub ax,Y jns nonneg ;条件满足(X-Y≥0)? neg ax ;条件不满足,求补 nonneg: mov result,ax ;条件满足
11
双分支程序设计
例2:寄存器AL中是字母Y或y,则令AH=0;否则 令AH=-1 cmp al,’Y’ ;AL是大写Y否? jz next ;是,转移 cmp al,’y’ ;AL是小写y否? jz next ;是,转移 mov ah,-1 ;不是Y或y,AH=-1,结束 jmp done ;一定要跳过另一个分支体 next:mov ah,0 ;是Y或y,AH=0,结束 done:...

汇编第5章循环与分支程序设计26页

汇编第5章循环与分支程序设计26页
Y
DO-UNTIL 结构
初始化:设置循环的初始状态 循环体:循环的工作部分及修改部分 控制条件:计数控制
特征值控制 地址边界控制
例:把 BX 中的二进制数以十六进制的形式显示在屏幕上
BX
1 2 3 4
……
mov rotate: mov
rol mov and add cmp jl add printit: mov mov int dec jnz ……
ax, n array_head-2, 0ffffh si, 0
array_end [si], ax insert bx, array_end [si] array_end [si+2], bx si, 2 short compare
array_end [si+2], ax
x
array_head
array_end
( ( 0×10)+1 )×10+2 )×10+5
exit:
jmp newchar ……
例:从键盘接收十六进制数并存入 BX
1af
…… mov bx, 0
31 61 66
newchar: mov ah, 1
;键盘输入
int 21h
sub al, 30h
jl exit
; <0退出
cmp al, 10
程序结构:
顺序结构
循环结构
分支结构
子程序结构
… 复合结构:多种程序结构的组合
编制汇编语言程序的步骤:
(1) 分析题意,确定算法 (2) 根据算法画出程序框图 (3) 根据框图编写程序 (4) 上机调试程序
1. 循环程序设计
初始化
初始化

80x86汇编语言程序设计

80x86汇编语言程序设计80x86汇编语言程序设计是一门专门研究如何使用汇编语言在80x86架构的计算机上编写程序的学科。

80x86架构是Intel公司开发的一种微处理器架构,它包括了8086、80286、80386、80486等处理器,以及后来的Pentium系列。

汇编语言是一种低级语言,它与机器语言非常接近,通常用于编写性能要求极高的程序或者进行底层系统开发。

汇编语言基础汇编语言的指令与机器指令一一对应,但使用助记符来代替二进制代码,使得程序更加易于编写和理解。

汇编语言的基本元素包括指令、寄存器、内存地址和立即数。

- 指令:是汇编语言的基本操作单位,用于执行特定的操作,如数据传输、算术运算、逻辑运算等。

- 寄存器:是CPU内部的存储单元,用于快速存取数据。

80x86架构有多个寄存器,包括通用寄存器、段寄存器、指令指针寄存器等。

- 内存地址:是存储在RAM中的数据的位置,汇编语言可以通过内存地址访问和操作数据。

- 立即数:是指令中直接给出的数值,不需要通过寄存器或内存地址访问。

汇编语言指令80x86汇编语言提供了丰富的指令集,用于执行各种操作。

以下是一些基本的指令类型:- 数据传输指令:如MOV(移动数据)、PUSH(将数据压入堆栈)、POP(从堆栈中弹出数据)等。

- 算术指令:如ADD(加法)、SUB(减法)、MUL(乘法)、DIV(除法)等。

- 逻辑指令:如AND(逻辑与)、OR(逻辑或)、NOT(逻辑非)、XOR (逻辑异或)等。

- 控制流指令:如JMP(无条件跳转)、JE(等于时跳转)、JNE(不等于时跳转)、LOOP(循环)等。

汇编程序结构一个典型的汇编程序包括以下部分:1. 程序声明:声明程序的名称和起始点。

2. 数据定义:定义程序中使用的数据和常量。

3. 代码段:包含程序的指令和逻辑。

4. 堆栈段:用于存储临时数据和调用函数时的参数。

5. 常量段:定义程序中使用的常量。

6. 外部引用:引用其他程序或库中的代码和数据。

总汇编语言循环分支程序设计

总汇编语言循环分支程序设计简介总汇编语言是一种低级语言,用于编写计算机的机器指令。

循环和分支结构是编写程序时经常使用的控制结构。

本文将介绍总汇编语言中循环和分支结构的设计和实现,并给出一些示例代码来帮助读者更好地理解。

循环结构循环结构允许我们重复执行一段代码,直到满足特定条件为止。

在总汇编语言中,有两种常用的循环结构:计数器控制循环和条件控制循环。

计数器控制循环计数器控制循环中,我们使用一个计数器来确定循环执行的次数。

下面是一个示例代码片段,展示了如何使用计数器控制循环:MOV CX, 5 ; 设置循环次数为5L1:; 循环体代码; ...LOOP L1 ; 循环次数减1,如果不为0,则跳转到标签L1继续循环在上面的代码中,我们使用MOV指令将值5赋给CX寄存器,作为循环次数。

然后,我们使用LOOP指令在每次循环结束后将CX寄存器的值减1,并检查其是否为0。

如果不为0,则跳转到标签L1处,继续执行循环体代码。

条件控制循环条件控制循环中,我们使用一个条件来确定循环是否继续执行。

总汇编语言提供了多个指令来实现条件判断,例如CMP、JMP、JE等。

以下是一个示例代码片段,展示了如何使用条件控制循环:MOV CX, 10 ; 设置循环次数L1:; 循环体代码; ...DEC CX ; 循环次数减1CMP CX, 0 ; 比较循环次数与0JNE L1 ; 如果循环次数不为0,则跳转到标签L1继续循环在上面的代码中,我们使用MOV指令将值10赋给CX寄存器,作为循环次数。

然后,在每次循环结束后,我们使用DEC指令将CX寄存器的值减1,并使用CMP指令与0进行比较。

如果循环次数不为0,则使用JNE指令跳转到标签L1处,继续执行循环体代码。

分支结构分支结构允许我们在特定条件下选择不同的执行路径。

在总汇编语言中,我们可以使用条件判断指令(如CMP、JMP、JE等)来实现分支结构。

单一条件分支单一条件分支结构中,根据特定条件的真假选择不同的执行路径。

[计算机]IBM-PC汇编语言程序设计

sub2 sub3
sub3
PROC 、、 RET ENDP
PROC 、、 RET ENDP
注意返回DOS语句位置
code ENDS END begin
h
9
5.1 循环程序设计
5.1.1 循环程序的结构形式
开始
初始化
循环的初始状态
循环体
循环的工作部分及修改部分
控制条件
计数控制 特征值控制 地址边界控制
ADD AL, 30H ;转变为数字的ASCII
CMP AL, 3aH ;大于3aH, 则应转变
JL print
;为数字0~9的ASCII
ADD AL, 07H ;为字母A~F的ASCII
print: MOV DL,AL ;送 ASCII字符到DL
MOV AH, 2 ;显示DL中的字符
INT 21H
datarea ends
mov cx,0 mov bx,addre mov ax,bx again: test ax,0ffffh jz exit jns shift inc cx shift: shl ax,1 jmp again exit: mov count,cx ret
h
16
例5.4 将正数n插入一个已整序的字数组的正确位置。
循环体 循环条件判断? N
Y
直到型循环 (直到条件成立退出循环)
h
6
分支结构形式
Y N
两个分支
、、、 CMP AL, BL JG great
AL≤BL处理
JMP exit great: AL>BL处理 exit: 、、、
、、、
h
7
N Y
Y
三个分支
分支结构形式

大学_《微型计算机原理及应用》(吴宁著)课后习题答案下载

《微型计算机原理及应用》(吴宁著)课后习题答案下载《微型计算机原理及应用》(吴宁著)内容提要目录第1章计算机基础1.1 数据、信息、媒体和多媒体1.2 计算机中数值数据信息的表示1.2.1 机器数和真值1.2.2 数的表示方法——原码、反码和补码1.2.3 补码的运算1.2.4 定点数与浮点数1.2.5 BCD码及其十进制调整1.3 计算机中非数值数据的信息表示1.3.1 西文信息的表示1.3.2 中文信息的表示1.3.3 计算机中图、声、像信息的表示1.4 微型计算机基本工作原理1.4.1 微型计算机硬件系统组成1.4.2 微型计算机软件系统1.4.3 微型计算机中指令执行的基本过程 1.5 评估计算机性能的主要技术指标1.5.1 CPU字长1.5.2 内存储器与高速缓存1.5.3 CPU指令执行时间1.5.4 系统总线的传输速率1.5.5 iP指数1.5.6 优化的内部结构1.5.7 I/O设备配备情况1.5.8 软件配备情况习题1第2章 80x86/Pentium微处理器2.1 80x86/Pentium微处理器的内部结构 2.1.1 8086/8088微处理器的基本结构2.1.2 80386CPU内部结构2.1.3 80x87数学协处理器2.1.4 Pentium CPU内部结构2.2 微处理器的主要引脚及功能2.2.1 8086/8088 CPU引脚功能2.2.2 80386 CPU引脚功能2.2.3 Pentium CPU引脚功能2.3 系统总线与典型时序2.3.1 CPU系统总线及其操作2.3.2 基本总线操作时序2.3.3 特殊总线操作时序2.4 典型CPU应用系统2.4.1 8086/8088支持芯片2.4.2 8086/8088单CPU(最小模式)系统 2.4.3 8086/8088多CPU(最大模式)系统 2.5 CPU的工作模式2.5.1 实地址模式2.5.2 保护模式2.5.3 虚拟8086模式2.5.4 系统管理模式2.6 指令流水线与高速缓存2.6.1 指令流水线和动态分支预测2.6.2 片内高速缓存2.7 64位CPU与多核微处理器习题2第3章 80x86/Pentium指令系统3.1 80x86/Pentium指令格式3.2 80x86/Pentium寻址方式3.2.1 寻址方式与有效地址EA的概念 3.2.2 各种寻址方式3.2.3 存储器寻址时的段约定3.3 8086/8088 CPU指令系统3.3.1 数据传送类指令3.3.2 算术运算类指令3.3.3 逻辑运算与移位指令3.3.4 串操作指令3.3.5 控制转移类指令3.3.6 处理器控制类指令3.4 80x86/Pentium CPU指令系统3.4.1 80286 CPU的增强与增加指令 3.4.2 80386 CPU的增强与增加指令 3.4.3 80486 CPU增加的指令3.4.4 Pentium系列CPU增加的指令 3.5 80x87浮点运算指令3.5.1 80x87的数据类型与格式3.5.2 浮点寄存器3.5.3 80x87指令简介习题3第4章汇编语言程序设计4.1 程序设计语言概述4.2 汇编语言的程序结构与语句格式 4.2.1 汇编语言源程序的框架结构4.2.2 汇编语言的语句4.3 汇编语言的伪指令4.3.1 基本伪指令语句4.3.2 80x86/Pentium CPU扩展伪指令 4.4 汇编语言程序设计方法4.4.1 程序设计的基本过程4.4.2 顺序结构程序设计4.4.3 分支结构程序设计4.4.4 循环结构程序设计4.4.5 子程序设计与调用技术4.5 模块化程序设计技术4.5.1 模块化程序设计的特点与规范4.5.2 程序中模块间的关系4.5.3 模块化程序设计举例4.6 综合应用程序设计举例4.6.1 16位实模式程序设计4.6.2 基于32位指令的实模式程序设计 4.6.3 基于多媒体指令的实模式程序设计 4.6.4 保护模式程序设计4.6.5 浮点指令程序设计4.7 汇编语言与C/C 语言混合编程4.7.1 内嵌模块方法4.7.2 多模块混合编程习题4第5章半导体存储器5.1 概述5.1.1 半导体存储器的分类5.1.2 存储原理与地址译码5.1.3 主要性能指标5.2 随机存取存储器(RAM)5.2.1 静态RAM(SRAM)5.2.2 动态RAM(DRAM)5.2.3 随机存取存储器RAM的应用5.3 只读存储器(ROM)5.3.1 掩膜ROM和PROM5.3.2 EPROM(可擦除的PROM)5.4 存储器连接与扩充应用5.4.1 存储器芯片选择5.4.2 存储器容量扩充5.4.3 RAM存储模块5.5 CPU与存储器的典型连接5.5.1 8086/8088 CPU的'典型存储器连接5.5.2 80386/Pentium CPU的典型存储器连接 5.6 微机系统的内存结构5.6.1 分级存储结构5.6.2 高速缓存Cache5.6.3 虚拟存储器与段页结构习题5第6章输入/输出和中断6.1 输入/输出及接口6.1.1 I/O信息的组成6.1.2 I/O接口概述6.1.3 I/O端口的编址6.1.4 简单的I/O接口6.2 输入/输出的传送方式6.2.1 程序控制的输入/输出6.2.2 中断控制的输入/输出6.2.3 直接数据通道传送6.3 中断技术6.3.1 中断的基本概念6.3.2 中断优先权6.4 80x86/Pentium中断系统6.4.1 中断结构6.4.2 中断向量表6.4.2 中断响应过程6.4.3 80386/80486/Pentium CPU中断系统6.5 8259A可编程中断控制器6.5.1 8259A芯片的内部结构与引脚6.5.2 8259A芯片的工作过程及工作方式 6.5.3 8259A命令字6.5.4 8259A芯片应用举例6.6 82380可编程中断控制器6.6.1 控制器功能概述6.6.2 控制器主要接口信号6.7 中断程序设计6.7.1 设计方法6.7.2 中断程序设计举例习题6第7章微型机接口技术7.1 概述7.2 可编程定时/计数器7.2.1 概述7.2.2 可编程定时/计数器82537.2.3 可编程定时/计数器82547.3 可编程并行接口7.3.1 可编程并行接口芯片8255A7.3.2 并行打印机接口应用7.3.3 键盘和显示器接口7.4 串行接口与串行通信7.4.1 串行通信的基本概念7.4.3 可编程串行通信接口8251A7.4.3 可编程异步通信接口INS82507.4.4 通用串行总线USB7.4.5 I2C与SPI串行总线7.5 DMA控制器接口7.5.1 8237A芯片的基本功能和引脚特性 7.5.2 8237A芯片内部寄存器与编程7.5.3 8237A应用与编程7.6 模拟量输入/输出接口7.6.1 概述7.6.2 并行和串行D/A转换器7.6.3 并行和串行A/D转换器习题7第8章微型计算机系统的发展8.1.1 IBM PC/AT微机系统8.1.2 80386、80486微机系统8.1.3 Pentium及以上微机系统8.2 系统外部总线8.2.1 ISA总线8.2.2 PCI局部总线8.2.3 AGP总线8.2.4 PCI Express总线8.3 网络接口与网络协议8.3.1 网络基本知识8.3.2 计算机网络层次结构8.3.3 网络适配器8.3.4 802.3协议8.4 80x86的多任务保护8.4.1 保护机制与保护检查8.4.2 任务管理的概念8.4.3 控制转移8.4.4 虚拟8086模式与保护模式之间的切换 8.4.5 多任务切换程序设计举例习题8参考文献《微型计算机原理及应用》(吴宁著)目录本书是普通高等教育“十一五”国家级规划教材和国家精品课程建设成果,以教育部高等学校非计算机专业计算机基础课程“基本要求V4.0”精神为指导,力求做到“基础性、系统性、实用性和先进性”的统一。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ax,data
ds,ax ; 把数据段段地址送ds
ax,number ; 把number送ax
ax,0
; (ax)=0?
finish
; 为零则退出
ax,1
; 把ax左移1位
compa
; cf为0则跳转
one
; cf为1则one加1

compa
; 循环
ax,4c00h
21h
; 返回DOS
start
例:从键盘接收十进制数并存入 BX
第5章 循环与分支程序设计
• 【课前思考】 1. 编制一个汇编语言程序分哪几步? 2. 循环程序有哪两种基本结构?由几部分
组成? 3. 设计算法时对可能出现的边界情况如何
考虑? 4. 如何设置逻辑尺? 5. 什么是起泡排序算法? 6. 如何理解数组排序算法中采用的折半查
找法? 7. 如何使用跳跃表法实现CASE结构?
【难重点】 • 循环控制条件的选择。 • 考虑循环算法时注意可能出现的边界情况。 • 静态地预置逻辑尺。动态地修改标志位。 • 多重循环程序设计时应分别考虑各重循环的控
制条件及其程序实现,相互之间不能混淆。另 外,应该注意在每次通过外层循环再次进入内 层循环时,初始条件必须重新设置
• 起泡排序算法是多重循环程序设计中的一种常 用方法
ax, n array_head-2, 0ffffh si, 0
array_end [si], ax insert bx, array_end [si] array_end [si+2], bx si, 2 short compare
array_end [si+2], ax
x
array_head
【学习指南】
• 掌握汇编编程的四个步骤至关重要。
学会正确分析理解题意并确定合适的数 据结构及算法、画程序流程框图、选取正 确有效的指令编写程序、最后应当掌握运 用调试手段进行调试。
• 学习多重循环程序设计前应熟练掌握单层 循环程序设计的各种实现方法及实现细节, 如对可能出现的边界情况的处理等。
• 学习起泡排序算法、折半查找法、跳跃表 法之前,应首先理解传统实现方法。
; ’0’~’9’ ASCII 30H~39H ; ’A’~’F’ ASCII 41H~46H
• 例5.2 统计字单元number中二进制数位值 为1的个数,统计结果存放在变量one中。
统计1的个数,只能逐位进行测试。如 果被测数据为0,则不必进行统计。否则可 采用移位操作,判断移到CF标志中的结果 来累计1的个数。使用左移指令,每移一位 低位补0,所以测试数据变为0,就可结束 统计。这是一个先判断,后执行的循环程 序,而且循环次数是不定的。
1. 循环程序设计
初始化
初始化
控制条件 N
Y
循环体
DO-WHILE 结构
循环体 N 控制条件
Y
DO-UNTIL 结构
初始化:设置循环的初始状态 循环体:循环的工作部分及修改部分 控制条件:计数控制
特征值控制 地址边界控制
例:把 BX 中的二进制数以十六进制的形式显示在屏幕上
BX
1 2 3 4
……
data segment
number dw 1669H
one
db 0
data ends
code start: compa:
finish: code
segment assume
mov mov mov cmp jz shl jnc inc jmp mov int ends end
cs:code, ds:data
( ( 0×10)+1 )×10+2 )×10+5
exit:
jmp newchar ……
• 例5.3 将正数N插入一个已整序的字数组的正 确位置。该数组的首地址和末地址分别为 ARRAY_HEAD和ARRAY_END,其中所有 数均为正数且已按递增的次序排列。 由于数组的首地址和末地址都是已知的, 因此数组长度是可以确定的。但是,这里只 要求插入一个数,并不一定要扫描整个数组, 所以可以用找到应插入数的位置作为循环的 结束条件。此外,为空出要插入数的位置, 其前的全部元素都应前移一个字(即向地址 增大的方向移动一个字,这里的前后是指程 序运行的方向为前,反之则为后)。所以算 法上应该从数组的尾部向头部查找,可逐字 取出数组中的一个数K与N作比较
• 数组排序算法中可以采用折半查找法来提高查 找效率。
• CASE结构可以使用跳跃表法实现。
循环程序设计 分支程序设计
程序结构:
顺序结构
循环结构
分支结构
子程序结构
… 复合结构:多种程序结构的组合
编制汇编语言程序的步骤:
(1) 分析题意,确定算法 (2) 根据算法画出程序框图 (3) 根据框图编写程序 (4) 上机调试程序
例:将正数 n 插入一个已整序的正数字数组
x
dw
array_head dw
array_end dw
n
dw
? 3,5,15,23,37,49,52,65,78,99 105 32
…… mov mov mov compare: cmp jle mov mov sub jmp insert: mov ……
array_end
n
-1 3 5 15 23 37 49 52 65 78 99 105 32
125
……
mov newchar: mov
int sub jl cmp jg cbw
bx, 0 ah, 1 21h al, 30h exit al, 9 exit
31 32 35
;键盘输入
; <0退出 ; >9退出
xchg mov mul xchg add
ax, bx cx, 10 cx ax, bx bx, ax
mov rotate: mov
rol mov and add cmp jl add printit: mov mov int dec jnz ……
ch, 4 cl, 4 bx, cl al, bl al, 0fh al, 30h al, 3ah printit al, 7h dl, al ah, 2 21h ch rotate
• 【学习目标】
• 了解并掌握循环程序的构造方法,尤其是对 循环控制条件的设置以及可能出现的边界情 况的考虑。
• 掌握起泡排序算法这种多重循环程序设计中 的常用方法。交换标志位的设置在此算法中 更能提高效率。
• 学会在数组排序算法中采用折半查找法来提 高查找效率。学会使用跳跃表法实现CASE结 构。
相关文档
最新文档