IBM—PC(80x86)汇编语言与接口技术-第6章 子程序结构
- 格式:ppt
- 大小:469.00 KB
- 文档页数:36
80x86IBMPC及兼容计算机卷I和卷II汇编语言设计与接口技术第三版课程设计背景在计算机科学和工程领域内,汇编语言是一门重要的基础课程。
它是一种底层语言,通常用于编写计算机程序或者以编写高级语言程序的底层。
在此背景下,本文将讲述在80x86IBMPC及兼容计算机卷I和卷II汇编语言设计与接口技术第三版这门课程中设计的内容。
前言本文旨在介绍学习80x86IBMPC及兼容计算机卷I和卷II汇编语言设计与接口技术第三版这门课程的学生需要完成的课程设计,同时提供一些指导或建议,并将展示与该课程设计相关的示例代码。
课程设计要求学生需要设计一个小型的程序,要求包括以下要素:1.输入:程序应该从键盘上接收一个字符或字符串。
2.处理:程序应该将输入的字符或字符串进行反转。
3.输出:程序应该将反转后的字符或字符串输出到屏幕上。
实现思路在汇编语言中,字符和字符串被存储为ASCII码,每个字符对应一个8位(1字节)的整数。
反转字符或字符串的最简单方法是将其存储在内存中并将其逐个翻转。
程序的基本逻辑是这样的:1.从键盘读取字符或字符串并存储到内存中。
2.计算字符串长度。
3.反转字符串。
4.输出字符串。
代码实现以下是用NASM编写的汇编语言代码:section .datamsg db 'Please enter a string: ', 0result db 'The reverse of this string is: ', 0 buffer db 30length db 0section .bsssection .textglobal _start_start:; 输出提示消息,并读取用户输入mov eax, 4mov ebx, 1mov ecx, msgmov edx, 23int 0x80mov eax, 3mov ebx, 0mov ecx, buffermov edx, 30int 0x80; 计算字符串长度mov esi, buffermov edi, esixor eax, eaxloop1:cmp byte[edi], 0je loop2inc eaxinc edijmp loop1loop2:mov length, eaxdec edi; 反转字符串xor esi, esimov eax, lengthloop3:cmp esi, eaxjae loop4mov bl, byte[buffer+esi]mov byte[buffer+esi], byte[edi]mov byte[edi], blinc esidec edijmp loop3loop4:; 输出结果mov eax, 4mov ebx, 1mov ecx, resultmov edx, 28int 0x80mov eax, 4mov ebx, 1mov ecx, buffermov edx, 30int 0x80; 退出程序mov eax, 1xor ebx, ebxint 0x80以上代码分为三个部分:1..data:在该部分中定义需要使用的字符串和缓冲区变量。
6.1 下面的程序段有错吗?若有,请指出错误。
CRAY PROCPUSH AXADD AX, BXRETENDP CRAY答:程序有错。
改正如下:CRAY PROCADD AX, BXRETCRAY ENDP ;CRAY是过程名,应放在ENDP的前面6.2 9BHF7H57H80HF0A0:00B0H先PUSH,SP-2再PUSH,SP-2POP, SP+26.2 题堆栈及SP内容的变化过程已知堆栈寄存器SS的内容是0F0A0H,堆栈指示器SP的内容是00B0H,先执行两条把8057H 和0F79BH分别入栈的PUSH指令,然后执行一条POP指令。
试画出示意图说明堆栈及SP 内容的变化过程。
答:变化过程如右图所示:6.3 分析下面的程序,画出堆栈最满时各单元的地址及内容。
;********************************************S_SEG SEGMENT AT 1000H ;定义堆栈段DW 200 DUP (?) ;200*2=190HTOS LABEL WORDS_SEG ENDS;********************************************C_SEG SEGMENT ;定义代码段ASSUME CS: C_SEG, SS: S_SEGSTART: MOV AX, S_SEG(FLAGS)(AX)T_ADDR0000(DS)1000:0184:0186:0188:018A:018C:018ESP:01866.3 题堆栈最满时各单元的地址及内容MOV SS, AXMOV SP, OFFSET TOSPUSH DSMOV AX, 0PUSH AX┇PUSH T_ADDRPUSH AXPUSHF┇POPFPOP AXPOP T_ADDRRET;-------------------------------------------------------------------------- C_SEG ENDS ;代码段结束;******************************************END START ;程序结束答:堆栈最满时各单元的地址及内容如右图所示:6.4 分析下面的程序,写出堆栈最满时各单元的地址及内容。
第3章 80X86的指令系统和寻址方式本章主要讲授:本章主要讲授:80X8680X86的数据类型、寻址方式、指令格式、指令系统(数据传送指令、算术运算指令、逻辑运算指令、串操作数指令、控制转移指令、处理机指令和高级语言指令)和80486指令等。
通过本章的学习,注意下面几方面的内容:一、掌握80X86的数据类型;二、掌握80X86的寻址方式;三、掌握80X86的指令系统及它们的一些使用实例。
四、了解保护属性检查指令、高级语言指令以及Cache 管理指令等。
习题精解1.已知DS DS==2000H 2000H,,BX BX==0100H 0100H,,SI SI==0002H 0002H,存储单元,存储单元,存储单元[20100H][20100H][20100H]~~[20103H][20103H]依次存放依次存放12 34 56 78H 56 78H,,[21200H][21200H]~~[21203H][21203H]依次存放依次存放2A 4C B7 65H 2A 4C B7 65H,说明下列每条指令执行后,说明下列每条指令执行后AX 寄存器的内容。
(1)MOV AX AX,,1200H (2)MOV AX AX,,BX (3)MOV AX AX,,[1200H] (4)MOV AX AX,,[BX] (5)MOV AX AX,,[BX+1100H] (6)MOV AX AX,,[BX + SI] (7)MOV AX AX,,[BX][SI+1100H]参考答案:根据物理地址形成公式:物理地址=段基址×根据物理地址形成公式:物理地址=段基址×161616+有效地址,得:+有效地址,得:(1)1200H(2)0100H(3)4C2AH(4)3412H(5)4C2AH(6)7856H(7) 65B7H分析:本题主要考查点是数据寻址方式,寻址方式就是指令中用于说明操作数所在地址的方法,或者是寻找操作数有效地址的方法。
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)错误!未指定书签。
《汇编语言程序设计》教学大纲一、课程简介本课程是计算机科学与技术专业的专业基础必修课,信息管理与信息系统专业的选修课。
总学时数为54,实验课时22,在一个学期内完成,学分3(具体学时分配见附表)。
本课程的预修课程有:计算机导论,计算机组成与体系结构。
本课程主要内容有:计算机基础知识,80X86计算机的组织,80X86的指令系统和寻址方式,汇编语言与汇编程序,循环与分支程序设计,子程序结构,高级汇编语言技术,输入/输出程序设计,BIOS和DOS中断等内容。
二、教学目的与任务通过本课程的学习,要使学生对Intel80X86微处理器及以它为CPU的微型计算机系统的基本工作原理、体系结构、指令系统、汇编语言程序设计、存储器、输入/输出技术、中断系统和系统功能调用等各个方面的原理有较详尽的理解,能利用微型计算机的硬件特性设计简单的应用系统,并提高在软件设计中分析问题和解决问题的能力。
通过学习本课程,要求本专业学生能理解IBM PC 及其兼容机汇编语言程序设计的方法和技术,熟练掌握Intel 80X86微处理器的指令系统,能编写难度适中的汇编语言程序。
同时,进一步加深对计算机基本工作原理的理解,为进一步学好微机接口技术、单片机等课程打下良好的基础。
三、教学内容与基本要求第一章基础知识(4课时)教学内容:数的表示与数字间的转换,数的运算,带符号数的表示方法及码制,计算机中字符编码,数据处理类型,几种基本逻辑运算等。
基本要求:要求学生理解进位计数制的概念,熟练掌握二、十六进制之间的转换,熟练掌握计算机中带符号数及原码、反码、补码的表示方法和加减运算。
掌握计算机中西文及汉字字符编码的原理以及计算机内部数据处理类型的理解。
教学难点:熟练掌握计算机中数的原码、反码、补码的表示方法,计算机内部数据类型的理解。
第二章 80X86计算机的组织(4课时)教学内容:微型计算机总体结构,存储器系统,中央处理机,包括80X86CPU的特点、典型CPU的结构框图、寄存器结构,地址形成,程序状态字以及堆栈等。