实验二 常用伪指令 2010214228
- 格式:doc
- 大小:30.00 KB
- 文档页数:2
实验二伪指令实验一、实验目的1.掌握数据定义伪指令的使用方法;2.掌握符号定义伪指令的使用方法;3.掌握段定义伪指令的使用方法4.掌握各种数据在内存中的存放形式。
二、实验要求1.学会使用数据定义伪指令定义字节数据、字数据、双字数据、四字数据及十字数据;2.学会使用DEBUG中的D命令观察字节数据、字数据、双字数据等在内存中的存放格式;3.学会使用DEBUG中的D命令观察带符号数据和不带符号数据在内存中的存放形式;4.学会使用DEBUG中的D命令观察实数在内存中的存放形式。
三、实验举例【例3.2】 编辑、汇编、连接下列程序段,然后在DEBUG下观察数据的存储格式。
【步骤一】 启动EDIT编辑器,编辑源程序。
程序清单如下:CSEG SEGMENTX1 DB 0AH,0BH,0CH,0DH,31H,32H,33H,34HX2 DB 10,11,12,13,14,15,16,17,18X3 DB -1,-2,-3,-4,-5,-6,-7,-8Y1 DB 25+25,78-34,15*4,90/3Y2 DB 80 MOD 9,3 DUP(50)Y3 DB ‘ABCDEFGH’Z1 DW 1234H,5678H,0ABCDH,0ABEFHZ2 DW -1,-2,-3,-4,-5,-6,-7,-8Z3 DW OFFSET Y3,3 DUP(0),OFFSET Z2,3 DUP(?)CSEG ENDSEND程序输入完毕,以EXAM2.ASM为文件名存入磁盘,进行下一步操作。
【步骤二】 对源程序EXAM2.ASM进行汇编,生成目标程序EXAM2.OBJ。
操作如下:C:>\MASM EXAM2;↙屏幕显示如下信息:Microsoft (R) Macro Assembler Version 5.00Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.50554 + 449926 Bytes symbol space free0 Warning Errors0 Severe Errors汇编通过,没有错误信息产生,进行下一步操作。
伪指令知识点总结伪指令这玩意儿,听起来是不是有点玄乎?其实啊,它就像我们生活中的“幕后英雄”,虽然不直接参与“表演”,但却起着至关重要的作用。
比如说,在编程的大舞台上,指令就像是冲锋陷阵的战士,执行着各种具体的任务。
而伪指令呢,则像是军师,在幕后出谋划策,为整个程序的架构和布局提供指导。
咱先来说说数据定义伪指令。
这就好比是在为程序的“仓库”划分区域,规定好每个区域存放什么样的“货物”。
比如说,定义一个字节类型的数据,就像是给仓库里划出一个小格子,只能放一个小小的“物件”;定义一个字类型的数据呢,那就是一个稍微大一点的格子,可以放个稍微大一点的“宝贝”。
你说这是不是很形象?再看看段定义伪指令。
这就像是给程序的“大部队”划分阵营。
不同的阵营有不同的任务和职责。
比如说,代码段就是专门负责执行具体操作的“战斗部队”;数据段呢,则是存放各种“粮草弹药”的地方。
如果没有段定义伪指令,那程序岂不是乱成了一锅粥?还有过程定义伪指令,这就像是给程序中的一个小任务成立了一个“特别行动小组”。
这个小组有自己的规则和流程,能独立完成特定的功能。
宏定义伪指令呢?这就好比是给程序制作了一个“快捷方式”。
当你需要重复执行一段复杂的操作时,不用一次次地重复写那些代码,只要调用这个“快捷方式”就行了,多省事啊!伪指令的作用可不仅仅是这些,它还能控制程序的编译过程,就像是一个精明的“导演”,掌控着整个程序的“拍摄进度”和“效果呈现”。
总之,伪指令在编程中可是不可或缺的存在。
要是没有它们,程序就像是失去了方向的船只,在茫茫的代码海洋中迷失。
所以啊,咱们可得好好掌握这些伪指令的知识,让我们的程序能够高效、准确地运行,为我们解决各种复杂的问题。
你说是不是这个理儿?。
《汇编语⾔》学习笔记6——伪指令1.伪指令⼜称伪操作,即不能像汇编指令⼀样⽣成可执⾏的⼆进制机器代码,⽽是在汇编程序对汇编语⾔源程序进⾏汇编(编译)期间,由汇编程序执⾏。
它与C中的说明性语⾔的含义类似,起到说明作⽤,⽤来指出程序分段、数据定义、存储分配、程序开始和结束等信息,这些信息在汇编(编译)完成后就不⽤了。
但程序中没伪指令,则系统就⽆法完成编译。
2.段定义伪指令:⽤来定义各种类型的段 1.格式:段名 SEGMENT [类型参数] ...... 段名 ENDS 1.其中SEGMENT和ENDS必须成对出现,表⽰段的开始和结束。
⼀般的,段名和段的意义⼀致,便于识别。
2.段名实际就是段地址,在汇编过程中,系统给出具体的地址值,⼀个段必须有⼀个名字来标识。
3.参数是可选项(可有可⽆),⽤于指出段的边界、段的组合、类别标识,⼀般⽤于多模块程序设计中。
2.类型参数 1.定位类型 PARA 该段的起始地址必须为⼩段的⾸地址,即起始地址的16进制数最低位为0 BYTE 该段可以从任意地址开始 WORD 该段必须从字边界开始,即起始地址为偶数 DWORD 该段必须从双字边界开始,即起始地址的16进制数为最低应为4的倍数 PAGE 该段必须从页边界开始,即起始地址的16进制数最低两位为00(能被256整除) 若不指定定位类型,系统默认为PARA 2.组合类型 PRIVATE 该段为私有段,连接时不与其他同名段合并 PUBLIC 连接时可与其他模块中的同名段按顺序连接成⼀个段 COMMON 表⽰该段与其他模块中的同名段有相同的起始地址,如果连接将产⽣覆盖,连接后段的长度为同名段中的最长者 STACK 表⽰该段为堆栈段 AT 表达式 该段直接定位在表达式指出的位置上 若不指定组合类型,默认为PRIVATE 3.类型标识:在引号中给出段的类型名。
在连接时,类别标识相同的段放在连续的存储区中。
(如:"STACK"⽤啦标识该段为堆栈段) 4.END:结束标记,若碰到伪指令END则停⽌编译3.ASSUME伪指令:⽤于指明段寄存器与段的对应关系 1.格式:ASSUME 段寄存器:段名,[段寄存器:段名,段寄存器:.....]【[]中标识可选项】 2.除了代码段寄存器CS不能⽤MOV指令赋值外,其他段寄存器都可⽤MOV指令进⾏初始化。
MOV指令为双操作数指令,两个操作数中必须有一个是寄存器.MOV DST , SRC // Byte / Word执行操作: dst = src1.目的数可以是通用寄存器, 存储单元和段寄存器(但不允许用CS段寄存器).2.立即数不能直接送段寄存器3.不允许在两个存储单元直接传送数据4.不允许在两个段寄存器间直接传送信息PUSH入栈指令及POP出栈指令: 堆栈操作是以"后进先出"的方式进行数据操作.PUSH SRC //Word入栈的操作数除不允许用立即数外,可以为通用寄存器,段寄存器(全部)和存储器.入栈时高位字节先入栈,低位字节后入栈.POP DST //Word出栈操作数除不允许用立即数和CS段寄存器外, 可以为通用寄存器,段寄存器和存储器.执行POP SS指令后,堆栈区在存储区的位置要改变.执行POP SP 指令后,栈顶的位置要改变.XCHG(eXCHanG)交换指令: 将两操作数值交换.XCHG OPR1, OPR2 //Byte/Word执行操作: Tmp=OPR1 OPR1=OPR2 OPR2=Tmp1.必须有一个操作数是在寄存器中2.不能与段寄存器交换数据3.存储器与存储器之间不能交换数据.XLAT(TRANSLATE)换码指令: 把一种代码转换为另一种代码.XLAT (OPR 可选) //Byte执行操作: AL=(BX+AL)指令执行时只使用预先已存入BX中的表格首地址,执行后,AL中内容则是所要转换的代码.LEA(Load Effective Address) 有效地址传送寄存器指令LEA REG , SRC //指令把源操作数SRC的有效地址送到指定的寄存器中.执行操作: REG = EAsrc注: SRC只能是各种寻址方式的存储器操作数,REG只能是16位寄存器MOV BX , OFFSET OPER_ONE 等价于 LEA BX , OPER_ONEMOV SP , [BX] //将BX间接寻址的相继的二个存储单元的内容送入SP中LEA SP , [BX] //将BX的内容作为存储器有效地址送入SP中LDS(Load DS with pointer)指针送寄存器和DS指令LDS REG , SRC //常指定SI寄存器。
完整版汇编语言中常用的伪指令档汇编语言是一种低级的程序设计语言,它用于编写底层计算机程序。
在汇编语言中,伪指令是一类特殊的指令,它们在程序运行时不会被计算机执行,而是在编译或汇编时被处理器或汇编器解释和展开。
伪指令在汇编语言中起到辅助编程、优化代码和声明常量等作用。
本文将介绍完整版汇编语言中常用的伪指令档。
一、伪指令的定义和作用伪指令是汇编语言中的一类特殊指令,它们不是真正的指令,不会被计算机执行,而是在编译或汇编的过程中被汇编器或处理器解释和处理。
伪指令主要用于辅助编程、优化代码和声明常量等作用。
伪指令的格式一般与真正的指令相似,但一般不包含操作码。
在一些汇编语言中,伪指令以特殊的标记或符号来区分,比如以“.”开头的指令。
二、常用的伪指令档1. ORG指令ORG指令用于指定程序的起始地址。
在汇编程序中,使用ORG指令可以将程序的代码段或数据段放置在指定的内存地址处。
其格式一般为:ORG 地址其中,地址为16进制数或表示内存单元的符号。
2. EQU指令EQU指令用于定义符号常量或符号变量。
它将一个符号与一个数值或地址进行关联,使得在程序中使用该符号时可以被汇编器或处理器替换为对应的数值或地址。
其格式一般为:符号 EQU 数值或地址其中,符号为一个标识符,数值或地址可以是16进制数、10进制数或表示内存单元的符号。
3. DB指令DB指令用于定义字节型数据。
它可以用于声明字符、整数等字节型数据,并将这些数据存储在指定的内存地址中。
其格式一般为:标号 DB 表达式其中,表达式可以是一个字节常量、字符常量或表示内存单元的符号。
4. DW指令DW指令用于定义字型数据。
它可以用于声明无符号整数等字型数据,并将这些数据存储在指定的内存地址中。
其格式一般为:标号 DW 表达式其中,表达式可以是一个字常量或表示内存单元的符号。
5. DD指令DD指令用于定义双字型数据。
它可以用于声明无符号双字整数等双字型数据,并将这些数据存储在指定的内存地址中。
常用伪指令及其应用
常用伪指令及其应用
伪指令(pseudo instructions)是一类特殊的指令,它不会被编译成机器指令而是被编译器转换为特定的机器指令,并且一般可以用于汇编语言程序中。
1. ORG指令:
ORG指令是最常见的伪指令,它用于指定程序在被装载到计算机存储器中的位置。
它通常的格式是ORG address, address是要求程序地址的起始位置。
ORG指令是汇编程序的一个标记指令,指定下一条指令的装载地址,它不产生机器指令。
2. EQU指令:
EQU指令是给变量赋值的指令,它的格式通常为symbol=exprssion,其中symbol是变量,expression是一个表达式,用于给变量symbol赋值,或者指定程序中用作标记的某个地址。
3. DS指令
DS指令是在程序中定义一段存储空间的指令,它的格式一般为DS size,其中size为所要定义存储空间的大小,该指令中定义的变量没有初始值,在程序中可以用于定义数组等多种形式。
4. END指令
END指令是汇编程序的结束指令,它的格式为END symbol,其中symbol可以是一个标记,用来标记汇编程序的起始地址,也可以是一个数字,用来标记程序的起始地址。
5. IF指令
IF指令是汇编中的条件指令,它的格式为IF expression,其中expression可以是一个比较运算的表达式,当表达式的结果为真(1)时,IF中的条件成立,程序就会按照正确的执行步骤进行操作,否则,IF指令中的语句就会被忽略。
伪指令注释第一篇:伪指令注释汇编伪指令注释:1、DS ---预留存储区命令格式:〔标号:〕 DS 表达式值其功能是从指定地址开始,定义一个存储区,以备源程序使用。
存储区预留的存储单元数由表达式的值决定。
TMP: DS 1 从标号TEP 地址处开始保留1个存储单元(字节)。
2、BIT---定义位命令格式:字符名称 BIT 位地址其功能用于给字符名称定义位地址。
SPK BIT P3.7 经定义后,允许在指令中用SPK代替P3.7。
3、USING指令USING指令通知汇编器使用8051的哪一个工作寄存器组。
格式:USING 表达式(值必须为0-3,默认值为0。
)USING 0 使用第0组工作寄存器。
4、SEGMENT指令SEGMENT 指令用来声明一个再定位段和一个可选的再定位类型。
格式:再定位段名 SEGMENT 段类型〔再定位类型〕其中,“再定位段名”用于指明所声明的段。
“段类型”用于指定所声明的段将处的存储器地址空间。
可用的段类型有CODE、XDATA、DATA、IDATA和BIT。
STACK_SEG SEGMENT IDATA DATA_SEG SEGMENT DATA5、RSEG---再定位段选择指令再定位段选择指令为RSEG,用于选择一个已在前面定义过的再定位段作为当前段。
格式: RSEG 段名段名必须是在前面已经声明过的再定位段。
DATA_SEG SEGMENT DATA ;声明一个再定位DATA段RSEG DATA_SEG ;选择前面声明的再定位DATA段作为当前段6、绝对段选择指令CSEG---绝对代码段DSEG---内部绝对数据段 XSEG---外部绝对数据段ISEG ---内部间接寻址数据段BSEG---绝对位寻址数据段格式:CSEG [AT 绝对地址表达式] DSEG [AT 绝对地址表达式] XSEG [AT 绝对地址表达式] ISEG [AT 绝对地址表达式] BSEG [AT 绝对地址表达式] 括号内是可选项,用来指定当前绝对段的基地址。
第二节伪指令汇编语言程序中的语句可以由指令、伪指令和宏指令组成。
上一章我们介绍了8086指令系统中的6类指令,每一条指令都对应一种CPU操作。
伪指令又称为伪操作,它是在对源程序汇编期间由汇编程序处理的操作,它们可以完成如处理器选择、定义程序模式、定义数据、分配存储区、指示程序结束等功能。
宏指令是由用户按照宏定义格式编写的一段程序,其中语句可以是指令、伪指令,甚至是已定义的宏指令。
宏指令将在第七章中介绍。
伪指令和指令的区别在于,每一条指令必须生成机器代码,然后在程序运行期间由CPU 来执行其操作;而伪指令是在汇编期间由汇编程序执行的操作命令,除了数据定义及存储器分配伪指令分配存储器空间外,其它伪指令不生成目标码。
和各种指令一样,伪指令也是程序设计不可缺少的工具。
下面介绍一些常用的伪指令。
4.2.1 处理器选择伪操作.8086 选择8086 指令系统.286 选择80286 指令系统.286P 选择保护模式下的80286 指令系统.386 选择80386 指令系统.386P 选择保护模式下的80386 指令系统.486 选择80486 指令系统.486P 选择保护模式下的80486 指令系统.586 选择Pentium 指令系统.586P 选择保护模式下的Pentium 指令系统4.2.2 段定义伪指令段定义伪指令是表示一个段开始和结束的命令,80x86有两种段定义的方式:完整段定义和简化段定义,分别使用不同的段定义伪指令来表示各种段。
1.完整段定义伪指令的格式如下:由于ASSUME伪指令只是指定某个段分配给哪一个段寄存器,它并不能把段地址装入段寄存器中,所以在代码段中,还必须把段地址装入相应的段寄存器中:MOV AX,DA TA_SEG1 ; 数据段地址MOV DS,AX ; 存入DS寄存器MOV AX,DA TA_SEG2 ; 附加段地址MOV ES,AX ; 存入ES寄存器如果程序中还定义了堆栈段STACK_SEG,也需要把段地址装入SS中:MOV AX,STACK_SEG ; 堆栈段地址MOV SS,AX ; 存入ES寄存器注意,在程序中不需要用指令装入代码段的段地址,因为在程序初始化时,装入程序已将代码段的段地址装入CS寄存器了。
常用伪指令及其应用一、常用伪指令1. ORG指令ORG指令用于指定程序的起始地址,其语法如下:ORG start [, length]其中start为起始地址,length是程序占用的字节数,可以省略。
ORG指令的应用:ORG指令用于指定程序的起始地址,通常它的第一条指令出现在程序的起始处,它的值默认为0H,即以当前段指针DS的值为基址,若需将程序置于某个内存段中,可通过ORG指令指定程序的起始地址。
2. EQU指令EQU指令用于定义符号,它的语法如下:label EQU expression其中label为一个标号,expression既可以是一个十进制数,也可以是某个标号或表达式。
EQU指令的应用:EQU指令用于定义标号,其值既可以是一个十进制数,也可以是某个标号或表达式,标号的值可以随程序的执行改变,在改变之前可以通过EQU指令预定义标号的值,使程序更加可读。
此外,还可以将EQU指令用于定义常量,便于替换程序中的字符串或数值。
3. DB指令DB指令用于定义数据字节,其语法如下:label DB val1 [, val2]其中label为定义的标号,val1,val2为数据。
DB指令的应用:DB指令用于定义十六进制数据,在程序中可以用来定义字符串、变量等常量,例如下面的定义比特位:flag DB 0 ; 定义比特位flag,初始值为0.4. DD指令DD指令用于定义数据double word,其语法如下:label DD val1 [, val2]其中label为定义的标号,val1,val2为数据。
DD指令的应用:DD指令用于定义双字(4个字节)的数据,它和DB指令类似,只是定义的是双字,例如下面的定义:var1 DD 0 ; 定义双字变量var1,初始值为0.5. DW指令DW指令用于定义数据word,其语法如下:label DW val1 [, val2]其中label为定义的标号,val1,val2为数据。
第四章伪指令汇编语言源程序由一系列语句构成,这些语句既可以是指令,也可以是伪指令。
指令是由CPU负责执行的,每一条指令都和一条机器语言相对应。
而伪指令是由汇编程序负责执行,完成一些内存单元分配、段之间的连接关系等操作,所以伪指令并不会生成机器指令,也就不会被CPU执行。
在本章中,重点讲解一些常用的伪指令及其功能。
4.1伪指令的分类及伪指令语句格式伪指令又称为伪操作,它虽然不会被CPU执行,但却可以指示汇编程序按照用户的意图,完成数据的定义、存储器的分配、指示程序结束等功能。
所以伪指令在汇编语言程序设计过程中具有重要的意义,希望读者在学习过程中应该加以高度重视。
4.1.1 伪指令的分类8088/8086的伪指令大致可分为以下八类:·数据定义伪指令;·符号定义伪指令;·段定义伪指令;·过程定义伪指令;·结束伪指令;·条件汇编伪指令;·结构、记录定义伪指令;·其他伪指令。
其中,条件汇编伪指令与结构、记录定义伪指令将在第八章予以介绍。
4.1.2 伪指令语句格式伪指令语句格式一般由四部分组成。
语句格式: [变量] 伪指令助记符参数1,参数2····参数n[;注释]说明:伪指令助记符规定了伪指令的功能。
一般伪指令都有参数,用于说明伪指令的操作对象,参数的类型和个数随着伪指令的不同而不同。
有时参数是常数或数值表达式,有时参数是一般的符号,有时是具有特殊意义的符号。
伪指令语句中的变量可有可无,如果伪指令语句中出现变量,则汇编程序使其记以第一个字节的偏移地址。
注释部分也是可有可无的,用于说明该伪指令的功能。
例如 VAR1 DW 1234H,5678H ;定义VAR1为字变量该语句中的VAR1为变量;DW为伪指令助记符;1234H与5678H为参数;分号后面给出的文字为注释。
4.2汇编语言中的数据项数据项是指令或伪指令语句操作对象的基本组成部分。
介绍12个ARM常用的伪指令1、AREAAREA 伪指令用于定义一个代码段或数据段。
语法格式:AREA 段名属性1 ,属性2 ,……其中,段名若以数字开头,则该段名需用“ | ” 括起来,如|1_te st| 。
属性字段表示该代码段(或数据段)的相关属性,多个属性用逗号分隔。
常用的属性如下:— CODE 属性:用于定义代码段,默认为READonLY 。
— DATA 属性:用于定义数据段,默认为READWRITE 。
— READonLY 属性:指定本段为只读,代码段默认为READonLY 。
— READWRITE 属性:指定本段为可读可写,数据段的默认属性为R EADWRITE 。
— ALIGN 属性:使用方式为ALIGN表达式。
在默认时,ELF (可执行连接文件)的代码段和数据段是按字对齐的,表达式的取值范围为0 ~31 ,相应的对齐方式为表达式2次方。
— COMMON 属性:该属性定义一个通用的段,不包含任何的用户代码和数据。
各源文件中同名的COMMON段共享同一段存储单元。
一个汇编语言程序至少要包含一个段,当程序太长时,也可以将程序分为多个代码段和数据段。
使用示例:AREA Init ,CODE ,READONLY该伪指令定义了一个代码段,段名为Init ,属性为只读2、ALIGNALIGN 伪指令可通过添加填充字节的方式,使当前位置满足一定的对其方式。
语法格式:ALIGN { 表达式{ ,偏移量}}其中,表达式的值用于指定对齐方式,可能的取值为2的幂,如1 、2 、4 、8 、16 等。
若未指定表达式,则将当前位置对齐到下一个字的位置。
偏移量也为一个数字表达式,若使用该字段,则当前位置的对齐方式为:2 的表达式次幂+偏移量。
使用示例:AREA Init ,CODE ,READonLY ,ALIEN =3 ;指定后面的指令为8字节对齐。
指令序列END3、ENTRYENTRY 伪指令用于指定汇编程序的入口点。
第四章伪指令及汇编语言程序格式4.1 4.1 汇编语言语句格式汇编语言语句格式4.2 4.2 伪指令伪指令伪指令((伪操作伪操作))4.3 4.3 汇编语言源程序结构汇编语言源程序结构4.4 4.4 汇编语言上机过程汇编语言上机过程CUSIIC第四章伪指令及汇编语言程序格式本章本章重点重点重点::1、常用伪指令2、汇编语言源程序结构3、汇编语言程序的上机过程4.1 汇编语言语句格式4.1.1 语句种类,和两个字节单元中的数据相加,例:编程实现BUF1和BUF2两个字节单元中的数据相加。
所指向的字节单元。
放到SUM所指向的字节单元MOV AL, BUF1 ;取第一个加数ADD AL, BUF2 ;两数加MOV SUM, AL ;和放入SUM单元一、语句格式[变量] 操作码操作数[;注释]2、伪指令语句格式伪指令语句格式::[标号标号::] 操作码操作数[;注释]1、指令语句格式指令语句格式::二、标号表示一条指令所在的单元的地址表示一条指令所在的单元的地址,,在CS 段用段用。
标号属性段属性属性::标号所代表的指令单元的段地址标号所代表的指令单元的段地址。
偏移属性偏移属性::标号所代表的指令单元的段内偏移地址标号所代表的指令单元的段内偏移地址。
类型属性NEAR :段内引用FAR :段间引用4.1.2 语句格式表示数据所在的单元的地址表示数据所在的单元的地址,,在DS 、SS 、ES 段用段用。
变量属性段属性属性::变量所代表的数据单元的段地址变量所代表的数据单元的段地址。
偏移属性偏移属性::变量所代表的数据单元的偏移地址变量所代表的数据单元的偏移地址。
类型属性类型属性::指明变量所代表的数据单元的字节数指明变量所代表的数据单元的字节数。
4DD 2DW1DB类型值类型例:BUF DB 12H 注:同一程序中同一程序中,,同一标号和变量不能重复定义量不能重复定义。
三、变量四、标号和变量定义规则1、可以是A~Z,a~z,数字(?、@、—)。
实验二常用伪指令的使用
一.实验目的:
进一步熟悉变量定义伪指令及各种运算符的使用。
二.实验内容:
调试实验指导中给出的程序,查看数据区的内容,回答相关问题。
三.操作步骤
1.建立源程序文件如图3-1所示。
DATA SEGMENT
ARRY1 DB 12,-18,32,68,-9
COUNT EQU $-ARRY1
ORG 08H
ARRY2 DW 15,26,38
STR1 DB 'ABCD'
DATA1 DW ARRY2
DATA2 DD ARRY2
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AL,STR1
MOV BL,COUNT
MOV DX,OFFSET ARRY2
MOV AX,SEG ARRY2
MOV BL, BYTE PTR DATA1+1
MOV BL,BYTE PTR DATA2
MOV CX,WORD PTR DATA2
MOV AH,4CH ; 调用21H号中断的4CH号功能,返回DOS INT 21H
CODE ENDS
END START
图2-1
2. 根据数据区定义画出数据区的存储示意图
地址内容变量名
0710:0000 0CH ARRY1
0710:0001 EEH
0710:0002 20H
0710:0003 44H
0710:0004 F7H
0710:0008 0FH ARRY2
0710:0009 00H
0710:000A 1AH
0710:000B 00H
0710:000C 26H
0710:000D 00H
0710:000E 41H STR1
0710:000F 42H
0710:0010 43H
0710:0011 44H
0710:0012 00H DA TA1
0710:0013 00H
0710:0014 08H DA TA2
0710:0015 00H
0710:0016 10H
0710:0017 07H
3.回答以下问题:
1)DATA段中DA TA1和DATA2里存放的数据的物理意义是什么?
答:DATA1中存放ARRY1的偏移地址,占一个字,低位字节占用第一个字节地址,高位字节占用第二个字节地址。
DATA2存放ARRY2的段基址和偏移地址,偏移地址占用低位字,段基址占用高位字。
2)COUNT所表示的值是多少?其物理意义是什么?
答:COUNT用来计算ARRY1占用的字节数,其值是5
3)将STR1 DB'ABCD' 改为STR1 DW'ABCD' ,则STR1数据区的内容会发生
什么变化?
答:由DB改为DW后STR1数据区的内容为0041H,0042H,0043H,0044H
4. 单步运行程序中带下划线的语句,查看每一条语句运行后寄存器的变化,用准确的语言描述该指令所执行的操作。
如:指令MOV AX,[BX] 执行的操作是将寄存器BX中的内容作为有效地址,将其所指向的连续两个字节的存储单元的内容送到AX 中。
答:
注:本次实验无须提交源程序文件,只提交实验报告即可。