IBM-PC汇编语言程序设计第13章 高级宏汇编语言技术

合集下载

IBMPC汇编语言程序设计第5版课程设计

IBMPC汇编语言程序设计第5版课程设计

IBMPC汇编语言程序设计第5版课程设计一、引言IBM PC机可以说是计算机发展史上的里程碑,随着计算机技术的发展,计算机硬件和软件得到了前所未有的发展。

IBM PC机的出现改变了人们的生活方式,它不仅是一种计算机,更是一种文化。

汇编语言是计算机语言中最接近硬件的语言,它是一种用途广泛的编程语言。

在计算机科学和工程领域,汇编语言是编写高效、优化程序的必备语言。

本文将介绍IBM PC机的汇编语言程序设计第5版课程设计。

二、课程设计目标1.通过学习IBM PC机的汇编语言,掌握基本的编程技能2.熟悉汇编程序的运行机制,了解程序性能优化方法3.掌握汇编语言中基本的指令、寄存器和内存访问方式4.实践中应用知识,提高编程能力和思考问题的能力三、课程设计内容1.汇编语言基础知识–汇编程序的结构和组成部分–汇编语言的语法和指令–寄存器和内存访问方式–DOS环境下的汇编语言程序开发2.汇编语言高级编程技术–程序性能优化方法–基于中断和子程序的程序设计–DOS调用BIOS和DOS的API函数3.课程设计实践–前期设计、开发和调试汇编语言程序的能力–开发和实现一个汇编语言程序,具体任务根据学生兴趣定制四、课程设计实验任务1.实现一个计算器程序,能进行加、减、乘、除和开方运算,并输出运算结果。

2.模拟银行账户管理系统,实现账户开户、存款、取款、查询、销户等基本功能。

3.实现一个简单的2048游戏,能够实现基本操作,如上下左右滑动、得分计算、游戏结束等。

五、课程设计评分1.作业成绩占50分,包括实验报告和实验代码。

2.课堂表现占20分,包括课堂提问、讨论、思维活动等。

3.期末考试占30分,主要考察汇编语言知识的掌握程度。

六、结语本文介绍了IBM PC机的汇编语言程序设计第5版课程设计,包括课程设计目标、内容、实验任务和评分。

通过学习该课程,可以掌握基本的编程技能和汇编程序运行机制,提高编程能力和思考问题的能力。

最后,希望学生们能够通过本课程,取得优秀的成绩。

汇编语言IBM-PC绪论

汇编语言IBM-PC绪论
程序可读性差
由于缺乏高级语言的抽象,汇 编语言程序难以理解和维护。
与机器语言紧密相关
汇编语言直接对应于机器语言 的指令,因此执行效率高。
依赖特定处理器架构
每种处理器架构都有其对应的 汇编语言。
汇编语言的应用领域
系统软件
操作系统、编译器等核心软件通常使用汇编语言 编写,以提高执行效率。
游戏开发
某些游戏引擎和图形渲染部分可能使用汇编语言 优化性能。
IBM-PC汇编语言的编程模型
编程模型
IBM-PC汇编语言的编程模型包括程 序计数器、堆栈指针、寄存器等,这 些是汇编语言编程的基本概念。
程序结构
一个典型的IBM-PC汇编语言程序包 括程序头、程序主体和程序尾,其中 程序主体包含程序的指令序列。
03
IBM-PC汇编语言编程基础
汇编语言的基本语法
调试和优化汇编程序
调试汇编程序
掌握使用调试工具进行程序调试的方法,如设置断点、单步执行、查看寄存器和内存等,以便找出程 序中的错误和问题。
优化汇编程序
了解如何优化汇编程序的性能,如使用更快的指令、减少内存访问次数、优化循环结构等,以提高程 序的执行效率。
应用实例和案例分析
文件加密程序
通过编写一个简单的文件加密程序,了 解如何使用汇编语言实现加密算法,并 熟悉文件操作的相关指令和伪指令。
分支结构
使用跳转指令实现程序的 分支控制。例如,JMP、 JZ、JNZ等。
循环结构
使用循环指令实现程序的 循环控制。例如,LOOP、 LOOPZ、LOOPNZ等。
04
IBM-PC汇编语言进阶编程
子程序和中断的使用
子程序
子程序是一种封装特定功能的代码块,可以在程序中多次调 用。使用子程序可以减少代码重复,提高代码可维护性和可 读性。在IBM-PC汇编语言中,子程序的定义和调用需要使用 特定的伪指令。

《汇编语言程序设计》第十二章:高级汇编语言技术

《汇编语言程序设计》第十二章:高级汇编语言技术
;对STUDENT不分配存储单元 对 不分配存储单元 ;NAME字段,偏移量为0,缺省值为 个空格 字段,偏移量为 缺省值为 缺省值为6个空格 字段 ;NUM字段,偏移量为6,缺省值为’000’ 字段,偏移量为 ,缺省值为’ 字段 ;MATH字段,偏移量为9 字段,偏移量为 字段 ;CHINESE字段,偏移量为10 字段,偏移量为 字段 ;ENGLISH字段,偏移量为11 字段,偏移量为 字段 ;SUM字段,偏移量为12 字段,偏移量为 字段
若有如下定义: 若有如下定义: S STUDENT <’ZHANG’,’001’,,,,> 则会出现汇编错误提示“ 则会出现汇编错误提示“Field cannot be overridden”。 。 因为NAME是多重字段不能被修改。 是多重字段不能被修改。 因为 是多重字段不能被修改
利用DUP伪指令可以定义结构类型的数组。 伪指令可以定义结构类型的数组。 利用 伪指令可以定义结构类型的数组 例如: 例如: ARRAY1 STUDENT 10 DUP(< >);定义 定义STUDENT类型的数组,数组的大小为 类型的数组, 定义 类型的数组 数组的大小为10 ARRAY2 STUDENT 3 DUP(<’ZHANG’,,,,,>);定义数组 定义数组ARRAY2,数组中每个元素 定义数组 , ;的NAME字段初始值改为’ZHANG’ 字段初始值改为’ 的 字段初始值改为
;字段为’001’,其余字段为缺省值 字段为’ 字段为 其余字段为缺省值
S3 STUDENT<’LI’,,90,90,90,>;定义变量 ,NAME字段为’LI’,MATH字段、 定义变量S3, 字段为’ , 字段、 定义变量 字段为 字段
;CHINESE字段和 字段和ENGLISH字段都为 ,NUM字段和 字段都为90, 字段和SUM字段为缺省值。 字段为缺省值。 字段和 字段都为 字段和 字段为缺省值

第13章 高级宏汇编语言技术

第13章  高级宏汇编语言技术
13.1 结构
13.2 记录 13.3 宏汇编 13.4 重复汇编 11.5 条件汇编
第 1页
汇编语言程序设计
第 13 章 高级宏汇编语言技术
13.1 结构
MASM支持结构,其直接引用高级语言的结构数据概念。 13.1.1 结构的定义 结构名 STRUC 【例】 定义一个与时间有关的结构。 TIMERS STRUC YEAR_STR DB 'CURRENT DATE:','$' YEAR DW ? MONTH DB ? DAY DB ? TIME_STR DB 'CURRENT TIME:','$' HOUR DB ? MINUTE DB ? SEC DB ? TIMERS ENDS
COSEG SEGMENT ASSUME CS:COSEG,DS:DATA,SS:STACK1 START:MOV AX,DATA MOV DS,AX ┇ PUSH4 ;宏指令语句 + PUSH AX + PUSH BX + PUSH CX + PUSH DX ┇ EXCHANGE DA_W01,DA_W02,CX ;宏指令语句 + MOV CX, DA_W01 + XCHG CX, DA_W02 + MOV DA_W01,CX ┇ COSEG ENDS END START
;设置代码段 【例】宏指令使用的过程 : 注意:宏指令的使用不会减少程序的目标代码长度 ;宏定义 PUSH4 MACRO PUSH AX PUSH BX PUSH CX PUSH DX ENDM EXCHANGE MACRO MEM1,MEM2,REG MOV REG,MEM1 XCHG REG,MEM2 MOV MEM1,REG ENDM ;设置数据段 DATA SEGMENT DA_W01 DW 1234H DA_W02 DW 5678H DATA ENDS ;设置堆栈段 STACK1 SEGMENT PARA STACK DW 20H DUP(?) STACK1 ENDS

IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学.

IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学.

I B M-P C汇编语言程序设计(第二版)课后习题答案(清华大学.------------------------------------------作者xxxx------------------------------------------日期xxxx您正在查看 "ibm-pc汇编语言程序设计(第二版课后习题答案" 分类下的文章IBM-PC汇编语言程序设计(第二版课后习题答案(清华大学出版社(沈美明,温冬蝉著第三章答案1-222006-11-02 22:56IBM-PC汇编语言程序设计(第二版课后习题答案(清华大学出版社(沈美明,温冬蝉著答案1。

.(1立即寻址没有(2直接寻址 7237H(3使用BX的寄存器寻址没有(4使用BX的间接寻址 637DH(5使用BX的寄存器相对寻址 0D5F0H(6 基址变址寻址 8E18H(7相对基址变址 004FH2。

根据下列要求,写出相应的汇编指令。

(1ADD DX,BX(2 ADD AL,[BX][SI](3 ADD [BX][0B2H], CX(4 MOV AX,2A59H ADD [0524H] ,AX(5 ADD AL ,0B5H3。

(1寄存器间接寻址MOV BX,OFFSET [BLOCK][0AH]MOV DX ,[BX](2寄存器相对寻址MOV SI,OAHMOV DX,[BLOCK][SI](3基址变址寻址MOV BX ,BLOCKMOV SI,OAHMOV DX,[BX][SI]没人来看,还是要写~~4。

现有(DS=2000H,(BX=0100H,(SI=0002H,(20100=12H,(20101=34H,(20102=56H,(20103=7 8H,(21200=2 AH,(20201=4CH,(21202=B7H,(21203=65H,试说明下列各条指令执行完后,AX寄存器的内容。

(1MOV AX,1200H 1200H(2 MOV AX,BX 0100H(3 MOV AX,[1200] 4C2AH 注意,是字单元!!(4MOV AX,[BX] 3412H 同上(5MOV 1100[BX] 4C2AH(6 MOV AX,[BX][SI] 7856H(7 MOV AX,1100[BX][SI] 65B7H5。

IBM-PC汇编语言程序设计实验报告

IBM-PC汇编语言程序设计实验报告

目录实验1 利用DEBUG调试汇编语言程序段 (1)实验2 初级程序的编写与调试实验(一) (5)实验3 初级程序的编写与调试实验(二) (14)实验4 汇编语言程序上机过程 (19)实验5 分支程序实验 (22)实验6 循环程序实验 (26)实验7 子程序实验 (30)实验1 利用DEBUG调试汇编语言程序段一.实验目的1.熟悉DEBUG有关命令的使用方法;2.利用DEBUG掌握有关指令的功能;3.利用DEBUG运行简单的程序段。

二.实验环境PC微机DOS操作系统、Windows操作系统三.实验内容1.进入和退出DEBUG程序;1)开始—运行,输入cmd,点确定进入命令窗口2)在命令窗口中输入dubug进入debug程序3)进入debug窗口后,输入q命令退出debug2.学会DEBUG中的1)D命令(显示内存数据D 段地址:偏移地址)-D100 ;显示DS段, 0100开始的128个字节内容-D ;默认段寄存器为DS,当前偏移地址(刚进入debug程序偏移地址为0100H)-D DS:100 ;显示DS段, 0100H开始的128个字节内容-D CS:200 ;显示CS段, 0200H开始的128个字节内容-D 200:100 ;显示DS段, 0200:0100H开始的128个字节内容-D 200 ;显示DS段, 0200H开始的128个字节内容-D 100 L 10 ;显示DS段, 100H开始的100H个字节内容2)E命令(修改指定内存)-E DS:100 F3 ‘AB’ 8D ; 把DS段中0100H开始的四个字节修改为F3 ‘AB’(A和B的ASCII 码) 8D也可以按下面的方式实现3)R命令(显示当前寄存器的内容)4)T命令(设置陷井,单步执行)5)A命令(将指令直接汇编成机器码输入到内存中。

)使用A命令在0100H开始输入指令mov ax, 10 inc cx mov bl, al单步执行上述指令6)G命令等的使用(执行A命中输入的汇编指令)使用A命令在0100H开始输入指令mov ax, 10 inc cx mov bl, al int 3然后使用g命令执行上面的例子设断点在100H处然后用T命令单步执行实验2 初级程序的编写与调试实验(一)一.实验目的1.进一步熟悉DEBUG命令;2.掌握数据在内存中的存放方式和内存操作数的几种寻址方式,段寄存器和物理地址计算;3.熟悉数据传送指令、算术运算指令、逻辑指令、数据串传送程序和数据串传送指令MOVS、STOS及重复前辍REP;4.掌握简单的汇编语言程序编写与调试。

IBM-PC汇编语言程序设计答案

IBM-PC汇编语言程序设计答案

附录:《IBM—PC汇编语言程序设计》习题参考答案第一章.习题1.1用降幂法和除法将下列十进制数转换为二进制数和十六进制数:(1) 369 (2) 10000 (3) 4095 (4) 32767答:(1) 369=1 0111 0001B=171H(2) 10000=10 0111 0001 0000B=2710H(3) 4095=1111 1111 1111B=FFFH(4) 32767=111 1111 1111 1111B=7FFFH1.2将下列二进制数转换为十六进制数和十进制数:(1) 10 1101 (2) 1000 0000 (3) 1111 1111 1111 1111 (4) 1111 1111答:(1) 10 1101B=2DH=45(2) 1000 0000B=80H=128(3) 1111 1111 1111 1111B=FFFFH=65535(4) 1111 1111B=FFH=2551.3将下列十六进制数转换为二进制数和十进制数:(1) FA (2) 5B (3) FFFE (4) 1234答:(1) FAH=1111 1010B=250(2) 5BH=101 1011B=91(3) FFFEH=1111 1111 1111 1110B=65534(4) 1234H=1 0010 0011 0100B=46601.4完成下列十六进制数的运算,并转换为十进制数进行校核:(1) 3A+B7 (2) 1234+AF (3) ABCD-FE (4) 7AB×6F答:(1) 3A+B7H=F1H=241(2) 1234+AFH=12E3H=4835(3) ABCD-FEH=AACFH=43727(4) 7AB×6FH=35325H=2178931.5下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。

(1) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76 (6) -85-(-76)答:(1) (-85)+76=1010 1011B+0100 1100B=1111 0111B=0F7H;CF=0;OF=0(2) 85+(-76)=0101 0101B+1011 0100B=0000 1001B=09H;CF=1;OF=0(3) 85-76=0101 0101B-0100 1100B=0101 0101B+1011 0100B=0000 1001B=09H;CF=0;OF=0(4) 85-(-76)=0101 0101B-1011 0100B=0101 0101B+0100 1100B=10100001B=0A1H;CF=0;OF=1(5) (-85)-76=1010 1011B-0100 1100B=1010 1011B+1011 0100B=0101 1111B=5FH;CF=0;OF=1(6) -85-(-76)=1010 1011B-1011 0100B=1010 1011B+0100 1100B=11110111B=0F7H;CF=0;OF=0 1.6下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?(1) D8 (2) FF答:(1) D8H表示的带符号数为-40,D8H表示的无符号数为216;(2) FFH表示的带符号数为-1,FFH表示的无符号数为255。

《IBM-PC汇编语言程序设计》教案及答案(第二版)

《IBM-PC汇编语言程序设计》教案及答案(第二版)

《汇编语言程序设计》教案附:习题参考答案《IBM-PC汇编语言程序设计》(第2版)沈美明、温冬婵编著教案编写时间:20XX年8月18日前言1.汇编语言是计算机能提供给用户的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。

2.汇编语言程序设计是高等院校电子计算机硬、软件及应用专业学生必修的核心课程之一。

它不仅是计算机原理、操作系统等其它核心课程的必要先修课,而且对于训练学生掌握程序设计技术、熟悉上机操作和程序调试技术都有重要作用。

3.本教材共有十一章,其内容安排如下:(1).第一、二章为汇编语言所用的基础知识。

(2).第三章详细介绍80x86系列CPU的指令系统和寻址方式。

(3).第四章介绍伪操作、汇编语言程序格式及汇编语言的上机过程。

(4).第五、六章说明循环、分支、子程序结构和程序设计的基本方法。

(5).第七章说明宏汇编、重复汇编及条件汇编的设计方法。

(6).第八章叙述输入/输出程序设计方法,重点说明中断原理、中断过程及中断程序设计方式。

(7).第九章说明BIOS和DOS系统功能调用的使用方法。

(8).第十~十一章分别说明图形显示、发声及磁盘文件存储的程序设计方法,同时提供各种程序设计方法和程序实例。

附:教学参考书1.沈美明、温冬婵编著,IBM–PC汇编语言程序设计(第2版),清华大学出版社,20XX年(教材)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 章基础知识 (6)1.1进位计数制与不同基数的数之间的转换 (6)1.2二进制数和十六进制数的运算 (8)1.3计算机中数和字符的表示 (8)1.4几种基本的逻辑运算 (9)第 2 章80X86计算机组织 (10)2.180X86微处理器 (10)2.2基于微处理器的计算机系统构成 (11)2.3中央处理机 (11)2.4存储器 (13)2.5外部设备 (15)第 3 章80X86的指令系统和寻址方式 (16)3.180X86的寻址方式 (16)3.2程序占有的空间和执行时间 (18)3.380X86的指令系统 (19)第 4 章汇编语言程序格式 (41)4.1汇编程序功能 (41)4.2伪操作 (41)4.3汇编语言程序格式 (46)4.4汇编语言程序的上机过程 (50)第 5 章循环与分支程序设计 (53)5.1循环程序设计 (53)5.2分支程序设计 (54)5.3如何在实模式下发挥80386及其后继机型的优势 (54)第 6 章子程序结构 (56)6.1子程序的设计方法 (56)6.2子程序的嵌套 (58)6.3子程序举例 (58)第7 章高级汇编语言技术 (59)7.1宏汇编 (59)7.2重复汇编 (60)7.3条件汇编 (61)第8 章输入/输出程序设计 (63)8.1I/O设备的数据传送方式 (63)8.2程序直接控制I/O方式 (64)8.3中断传送方式 (64)第9 章BIOS和DOS中断 (68)9.1键盘I/O (69)9.2显示器I/O (71)9.3打印机I/O (72)9.4串行通信口I/O (73)第10 章图形与发声系统的程序设计 (75)10.1显示方式 (75)10.2视频显示存储器 (75)10.3EGA/VGA图形程序设计 (76)10.4通用发声程序 (77)10.5乐曲程序 (79)第11 章磁盘文件存取技术 (80)11.1磁盘的记录方式 (80)11.2文件代号式磁盘存取 (82)11.3字符设备的文件代号式I/O (83)11.4BIOS磁盘存取功能 (83)附录:《IBM—PC汇编语言程序设计》习题参考答案 (85)第一章.习题 (85)第二章.习题 (86)第三章.习题 (88)第四章.习题 (106)第五章.习题 (113)第六章.习题 (136)第七章.习题 (153)第八章.习题 (161)第九章.习题 (168)第十章.习题 (172)第十一章.习题 (186)第 1 章 基础知识【教学目的】本章内容是本课程的基础,通过本章学习,使学生明确汇编语言程序设计的学科性质、基本内容和学习意义,掌握数制的转换、数据的编码,了解本门课程的教学要求和学习方法。

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

13.1.1 结构的定义 要在程序段中引用结构,必须先使用结构伪指令先定义。结构伪指令的使用格 式为:
结构名 STRUC <数据定义语句序列> 结构名 ENDS 其中,“结构名”不能缺省,且在同一个源程序中必须是唯一的。“数据定义语 句序列”是用DB、DW或DD定义结构中各字段(Fields),这些语句中的变量名 称叫做结构字段名。 每一个结构字段名都有局部偏移量及其类型的属性。局部偏移量是指结构字段 的第一个字节与结构起点之间的字节数,类型仍然是指字节、字或双字。 【例13-1】定义一个结构
可以用其它字符串进行修改。而存在多项(多重)变量的结构 字段初值如【例13-1】中的DA3不能修改。具有多项或多重的 结构字段,如由以下形式所示:
DB 20H DUP(?) DW 34H,5678H,1234H DB ‘1234’,‘ABCD’ DW COUT,BUFF 结构变量名的STR4同时预置16个结构副本。每一个副本中都是 仅修改第一个字段初值,其余保留不变。这16个结构数据在分 配存储空间时,将会依次存储。
标代码,因而也没有分配存储单元。这是与数据段中的数据定义不同之处。
13.1.2 结构的预置与存储单元的分配 当结构定义后,我们可在程序中直接引用结构名,为结构预置副本,设置结构变
量,分配存储空间。结构变量预置语句的格式为: 结构变量名 结构名 <字段值表>
其中,“结构名”是已用STRUC/ENDS伪指令定义结构时的结构名。 “结构变量名”是结构副本的标识符,它和其它变量一样也都具有三个属性:段属 性、偏移属性和类型属性。段与偏移属性体现结构变量的地址,类型属性是表示结 构的总字节数。
STRDAT STRUC
DA1 DB ?
DA2 DB 33H DA3 DW 10H DUP(?) DA4 DW BUFF ;可用字符作为结构字段的初值
DA5 DB ‘ABCD’
STRDAT ENDS 结构定义中的DA1,DA2,DA3,DA4,DA5分别是结构STRDAT的结构字段 名,它们的局部偏移量分别是0,1,2,22H,24H。这里,对局部偏移量的确定 与数据段中的变量所代表的偏移量计算方法相同。结构中各字段可以指定具体的 数值或字符作为结构字段的初值。用伪指令STRUC/ENDS定义的结构,不产生目
MOV BX, TYPE STRD2 ;BX=1AH
;结构变量预置
DATA SEGMENT
;结构变量预置数据段
STRD1 STRDSS <‘99008-1’,8,‘YU MEING’>
STRD2 STRDSS <‘99008-2’,16,‘LIU XING’>
DATA ENDS
本例结构预置时,有两个结构字段是字符串。通常希望预置的字符个数与字段
初值的个数相同。若预置的字符个数少于初值的个数,那么汇编程序将用“空格”
第13章 高级宏汇编语言技术
13.1 结构 结构(structures)是IBM_PC机宏汇编程序MASM最具特色的功能,它允许提 供颇有价值的编程环境。它直接引用了某些高级程序设计语言的结构数据的概念。 结构就是把逻辑上具有相互关联的一组数据,以某种形式组合在一起。如果在 一个程序段中,需要多次使用相同的一组数据格式,那我们就可以把这一组数据 格式定义为一个结构。例如,为了建造学生的学籍档案,只须确定一名学生的学 籍档案的数据格式,比如,使用几个字节记录相关科目的考试成绩等项目。这个 数据格式本身并不需要占据内存单元。它仅在一旦确定了为某个班(如该班有40 名学生)建立档案时,就可以按照事先定义的结构格式,在存储单元中布局40个 相同的数据格式。这就是,当引用该结构时,它就会与存储器中的特定区域发生 联系。 请读者注意:在程序中使用结构数据,必须对结构先定义,然后进行结构数据 的预置与存储分配。只有这样才能对结构中各相关数据进行存取、修改和操作。
填充右边的空间;若预பைடு நூலகம்的字符个数多于初值的个数,则汇编程序将给出错误的
信息。
13.1.3 结构变量及字段的操作
结构变量与一般变量一样,可做为指令的操作数,但使用某些运算符时有不同
的含意。当结构变量前面使用运算符时,运算符TYPE所表示的是结构所占的总字
节数。其它运算符,如OFFSET ,LENGTH ,SIZE等所表示的意义与一般变量的
结构变量名STR4对字段名为DA3中同时预置16个结构副本所进行的修改。
按【例13-2】的结构预置,结构变量STR1,STR2和STR3的存 储空间分配情况如图13-1所示的结构变量预置与存储单元的分 配情况。
对结构字段初值的修改,并非所有字段中的初值都是可以修
改的,只有简单结构字段和字符串字段的初值才可以修改。所 谓简单结构字段就是由伪指令DB、DW或DD定义的单项变量, 如【例13-1】中的结构 STRDAT内DA1,DA2,DA4就是只有 单项的简单结构字段。而DA5是用DB伪指令定义的字符串,也
使用相同。
【例13-4】针对【例13-3】的结构定义和预置,以下是每条指令汇编结果的示
例(假设每条指令都为单独指令)。
MOV AX,OFFSET STRD1 ;AX=0
MOV AX, OFFSET STRD2 ;AX=1AH ;按结构定义的字节数定偏移量
MOV BX, TYPE STRD1 ;BX=1AH ;是结构变量所占的总字节数
<字段值表>是为结构副本中的各字段进行预置。结构的预置既可以保留所有字 段的初值,也可以修改某些字段的初值,无论对字段的初值是否进行过修改,结构 名后头的尖括号都是不能省略的。
【例13-2】对【例13-1】的结构进行引用的例子,即对结构的预置。
STR1 STRDAT < >
STR2 STRDAT <44H> STR3 STRDAT <44H,66H,COUT,‘5678’> STR4 STRDAT 10H DUP(<44H>) 在本例的结构预置中: 结构变量名STR1对结构中所有字段都不加修改,保留各字段的初值; 结构变量名STR2仅修改第一字段,其它各字段仍保留其初值; 结构变量名STR3除了第三个字段(字段名为DA3)外,其余字段均进行了修改。
相关文档
最新文档