汇编语言程序设计第五章
- 格式:ppt
- 大小:282.50 KB
- 文档页数:46


第五章汇编语言程序设计
5·1编程将片内40H一60H单元中内容送到以3000H为首的存特区中。
答:按题目要求编程如下:MOVRl,#40H
MOVR0,#20H
MOVDPTR,#3000H
LI:MOVA,@Rl
MOVX@DPTR,A
INCR1
INCDPTR
DJNZR0,Ll
5.2编写计算下列算式的程序。
①23H+45H+ABH+03H=
②CDH十l5H-38H-46H=
③1234H+8347H=
④ABl23H-43ADCH=
答:按题目要求编程如下:
①MOVA,#23HADDA,#45H
ADDA,#0ABH
XCHA,B;相加后有溢出处理
ADDCA,#00H
XCHA,B
ADDA,#3H;结果A中是低位,B中是高位
②MOVA,#0CDHADDA,#15H
SUBBA,#t38H
SUBBA,#46H
③MOVA,#34HADDA,#047H
MOV40H,A
MOVA,#12H
ADDCA,#83H
MOV4lH,A;结果40H中是低位,41H中是高位
④CLRCMOVA,#23H
SUBBA,#0DCH
MOV40H,A
MOVA,#0B1H
SUBBA,03AH
MOV41H,A
MOVA,#0AH
SUBBA,#04HMOV42H,A;结果40中是低位,42H中是高位
5·3编程计算片由RAM区5OH~57H八个单元中数的算术平均值,结果存放在5AH中。
答:在本题计算中要求8个单元的和小于255。按题目要求编程如下:MOVR0,#50H
MOVR1,#8
MOVA,#0
LI:ADDA,@R0
INCR0
DJNZR1,L1
MOVB,#8
DIVAB
MOV5AH,A
5·4编写计算下列的程序,设乘积和平方结果均小于255。a,b值分别存在300H和3002H单元中,结果存于片外3000H单元中。25,a=b
①Y=a*b,ab
(a+b)2+10,(a+b)2<10
②Y=(a+b)2,(a+b)2=10
(a+b)2-10,(a+b)2>10
答:按题目要求编程
《汇编语言程序设计》教案
附:习题参考答案
《汇编语言程序设计》(第4版)
钱晓捷 主编
前 言
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系列)系统原理及应用(修订版),清华大学出版社,1991
6. 郑学坚、周斌,微型计算机原理及应用(第二版),清华大学出版社,1995
模拟试题八
一. 选择题。(单项选择,30分)
1. 下面说法正确的是( )
A. 8086/8088为20位CPU。
B. 不同的逻辑段的段地址有可能相同。
C. 同一个逻辑段内所有单元的段地址相同,而偏移地址各不相同。
D. SP寄存器指示下一条要执行的指令的偏移地址。
2. 下列寄存器是16位的是( )。
A. IF B. SP C. EIP D. BL
3. 已知(AL)=41H,(AH)=5AH,CPU执行SUB AL,AH指令后,标志寄存器各位的值正确的是( )
A. SF=1,ZF=0,CF=1,OF=0
B. SF=0,ZF=0,CF=1,OF=0
C. SF=1,ZF=0,CF=0,OF=1
D. SF=0,ZF=1,CF=0,OF=1
4. 完成将CX寄存器清零,并且使进位标志CF置零,错误的指令是( )。
A. SUB CX,CX C. XOR CX,CX
B. MOV CX,0000H D. AND CX,0000H
5. 下面的数据传送指令中,错误的操作是( )。
A. MOV DS,AX C. XCHG BX,[BX]
B. MOV DX,[1000H] D. MOV [AX],1000H
6. 已知(AL)=88H。如果该数是一个有符号数,它的十进制值为X;如果它是一个压缩的BCD码,它的十进制值为Y,则( )
A. X=120,Y=-120 C. X=-120,Y=120
B. X=120,Y=-88 D. X=-120,Y=88
7. 宏ADD3定义如下:
ADD3 Macro A, B, C
ADD A,B
ADD A,C
ENDM
先要实现1+2+3,则下列代码正确的是:( )
第五章 汇编语言程序设计
难点和重点
1. 变量通过伪指令DB、DW、DD、DQ、DT来定义
DB定义的是字节变量,DW定义的是字变量;DD定义的是双字变量,DQ定义的是长字变量;DT定义的是一个十字节变量。当变量为DW和DD类型时,才可以作为地址表达式,此时应遵循以下规则:
(l)当用DW定义地址表达式时,地址表达式中的变量名称表示该变量的第一个存储单元的偏移地址。
(2)当用DD定义地址表达式时,低位字用于预置偏移地址,高位字用于预置段地址。
(3)地址表达式中的变量或标号可与常数值相加减。对于变量来说运算结果的类型不变;对标号来说,运算结果仍表示原标号所在段中的偏移地址。
(4)变量或标号不能与变量或标号相加,但可相减,结果是没有属性的纯数值。
2.源程序模块
一个源程序模块能允许包括多个代码段和其它段,也允许多次使用ASSUME语句,重新约定段寄存器和段的关系。但 ASSUME语句并不意味着汇编后这些段地址已经装入相应的段寄存器中了,除了CS寄存器以外,其它各个段寄存器的实际值,还要用MOV指令来赋值,例如:
┆
MYCODE SEGMENT
ASSUME CS:MYCODE,DS:MYDATA,ES:MYEXTRA,SS:MYSTACK
START:MOV AX , MYDATA
MOV DS , AX
MOV AX , MYEXTRA
MOV ES , AX
MOV AX , MYSTACK
MOV SS , AX
┆
MYCODE ENDS
然而,也不能只用赋值语句而将ASSUME语句省略,这样汇编程序就找不到所定义的各个段。
3.跳转表法
当程序是CASE结构,即需引出多个分支时,最好利用跳转表法。其主要设计思想是:首先将n个选择项所对应的n个分支程序的标号存放在一个数据表(即跳转表)中,然后判别程序是否满足第一个条件,若满足就根据分支程序标号在跳转表中存放的地址将程序转入相应的分支;否则继续判别下个条件是否满足,……。下面程序主要实现一组选择项(5个)存于AL寄存器中,要根据AL中为1的位将程序分别转移到相应的分支: BRANCH SEGMT