第三章 8086汇编语言程序格式
- 格式:doc
- 大小:82.00 KB
- 文档页数:13
汇编语言程序格式编程语言是计算机与人之间交流的桥梁,通过编写程序代码,我们可以指导计算机执行特定的任务。
汇编语言是一种底层的编程语言,它直接与计算机硬件进行交互,并提供了对机器指令的精细控制。
在编写汇编语言程序时,我们需要遵循一定的格式,以确保程序的正确性和可读性。
本文将介绍汇编语言程序的格式要求。
一、程序结构在编写汇编语言程序时,需要明确的程序结构是很重要的。
一个典型的汇编语言程序由如下几个部分组成:1. 数据段(.data):用于定义程序中使用的数据,如变量、常量等。
2. 代码段(.text):包含实际的机器指令,用于执行特定的任务。
3. 其他段(如堆栈段):根据需要定义的其他段。
二、指令格式每个汇编指令都有特定的格式,以便告诉计算机应该执行什么操作。
一个标准的汇编指令格式通常包含如下几个部分:1. 操作码(Opcode):用于指定要执行的操作,如“mov”用于将数据从一个位置移动到另一个位置。
2. 操作数(Operand):操作数描述了要对其进行操作的数据。
操作数可以是立即数、寄存器或内存地址等。
3. 注释(Comment):注释用于解释指令的作用和目的,提高程序的可读性。
三、指令的排列在编写汇编语言程序时,指令的排列很重要。
正确的指令排列可以提高程序执行效率和可读性。
一般而言,指令按照执行的顺序排列,具有逻辑关系的指令可以分组编写。
四、标签和跳转在程序中,我们常常需要使用标签和跳转指令来实现条件执行和循环等功能。
标签是程序中的一个标记,用于标识某个位置,而跳转指令则会根据一定的条件,跳转到指定的标签处继续执行。
在使用标签和跳转指令时,需要注意以下几点:1. 标签需要以冒号(:)结尾,以便与其他变量或指令进行区分。
2. 跳转指令一般以条件代码作为前缀,如“je”(等于跳转)、“jne”(不等于跳转)等。
五、宏定义宏定义是一种将一段常用代码片段定义为简单的符号表示的方式。
在汇编语言中使用宏定义可以提高代码的可读性和重用性。
emu8086汇编代格式汇编语言是一种底层的编程语言,基于机器指令的表示形式,用来控制计算机硬件的运行。
emu8086是一个PC上的x86模拟器,可以在Windows 系统上运行,提供了一个很好的学习环境。
本文将一步一步回答关于emu8086汇编代格式的问题。
1. 什么是emu8086汇编代格式?emu8086汇编代格式是一种特定的语法形式,用来编写汇编语言程序。
它定义了代码的结构、指令的格式和操作数的使用方法。
2. emu8086汇编代格式的基本结构是什么?emu8086汇编代格式的基本结构包括标签、指令和注释。
一般情况下,一行代码只能包含一个标签或指令或注释,但可以使用分号“;”添加多个注释。
3. 标签在emu8086汇编代格式中有什么作用?标签是用来标识程序中的特定位置或指令的起始位置的。
它由一个冒号“:”后跟一个名称构成,名称可以是任意字符串,但通常使用有意义的名称。
标签可以用作跳转指令的目标。
4. 在emu8086汇编代格式中如何定义指令?指令描述了计算机硬件执行的操作。
在emu8086汇编代格式中,指令由操作码和操作数组成。
操作码是一个代表特定操作的关键字,而操作数指定操作的数据。
5. 指令的操作数在emu8086汇编代格式中有哪些类型?在emu8086汇编代格式中,操作数可以是寄存器、内存地址、立即数、偏移量或程序名。
每个操作数都有特定的表示形式和使用规则。
6. 如何使用寄存器作为操作数?在emu8086汇编代格式中,寄存器有8位和16位之分。
寄存器的名称由一个字母和一个数字构成,如AX、BX等。
要使用寄存器作为操作数,只需在指令中直接引用寄存器的名称即可。
7. 如何使用内存地址作为操作数?内存地址指的是计算机内存中的存储位置。
在emu8086汇编代格式中,使用方括号“[]”来表示内存地址。
例如,[BX]表示使用BX寄存器中的值作为内存地址。
8. 如何使用立即数作为操作数?立即数是指直接出现在指令中的数值。
三、汇编语言语句格式汇编语言程序由若干语句组成。
汇编语言语句类型:指令语句—完成操作功能,能编排(比翻译简单)成机器语言代码(即80x86指令系统的指令);伪指令语句—为汇编程序在编排源程序时提供有关信息;宏指令语句—分为宏定义和宏调用语句,编排时用宏定义代替宏调用语句。
汇编语言语句通用格式:[名字项] 操作项[操作数项] [;注释项]1、名字项组成:可由字母、数字、特殊字符(?、.、@、_、$)组成,数字不能作首字符,.只能作首字符。
类型:标号、变量。
(1)标号组成:①语句标号--由名字+冒号(“:”)组成;②过程名、段名等—只由名字组成。
属性:段属性—标号(定义时)所在段的起始地址;偏移属性—标号与所在段起始地址间字节数;类型属性—表明引用它时的特性,段内引用为NEAR,段间引用为FAR。
(2)变量组成:在除代码段外的段中定义,只由名字组成。
属性:段属性—变量(定义时)所在段的起始地址;偏移属性—变量与所在段起始地址间字节数;类型属性—表明为它所保留的主存字节数,DB/DW/DD/DQ/DT对应1/2/4/8/10字节。
思考:标号与变量的主要区别?指令中变量的数据类型如何表示?2、操作项组成:可为指令、伪指令或宏指令的助记符。
说明:指令助记符可带指令前缀。
示例:D_SEG SEGMENTNUM1 DB 10 DUP(10) ;数据定义NUM2 DW 20 DUP(0, 4 DUP(2))NUM3 DB 10H, 5 DUP(?)NUM4 DB ‘STRING’D_SEG ENDS ;假设DS指向D_SEG段MOV AX, SEG NUM1 ;等价于AX←(DS)MOV BX, SEG NUM2 ;AX与BX值相同MOV SI, OFFSET NUM1 ;NUM1相对于段的偏移量→SI MOV DI, OFFSET NUM2 ;等价于LEA DI, NUM2MOV AH,TYPE NUM2 ;2→AHMOV BH,LENGTH NUM2 ;20→BH(指最外层参数)MOV AL,LENGTH NUM3 ;1→AL(指第一个参数)MOV CL, SIZE NUM2 ;20*2→CLMOV CH, SIZE NUM4 ;1*1→CH(4)属性运算符PTR格式:<类型> PTR表达式PTR功能:用新类型取代表达式默认的数据类型PTR说明:①表达式为MEM操作数或变量时,类型可为BYTE、WORD、DWORD,表达式为标号时,类型可为NEAR、FAR;②仅改变数据类型属性,且仅在本语句有效。
第三章宏汇编语言每种计算机语言都规定了自己的字符、基本词汇、典型语句和语法规则。
同样,汇编语言也有自己的字符、基本词汇、典型语句和语法规则。
字符:ASCII字符基本词汇:符号指令(MOV、ADD)伪指令(DB、SEGMENT等)典型语句:●机器指令语句——对应机器指令的一种操作。
●伪指令语句——无机器语言与之对应,不生成机器指令。
●宏指令语句——一条宏指令对应多条机器指令,产生一组目标代码。
语法规则:基本语法单位(常量、变量、标号、表达式)前面的例子已介绍了源程序的基本结构、格式、名字的定义、语句格式,下面将更深入地介绍有关语法规则。
3.1表达式汇编程序的语句及程序格式都比较固定,语句中除正确选择操作符之外,主要问题在于正确表示操作数地址,这涉及到寻址方式,可以归结到地址表达式的使用。
表达式:由常数、寄存器、标号、变量加上运算符构成的式子。
3.1.1.常量与数值表达式一.常量常量:从源程序翻译成目标程序期间已经有确定数值的量。
用途:赋值、作立即数、位移量。
由常量与运算符组成的式子。
数值表达式在汇编期间进行运算,结果为常量。
汇编期间允许对常量进行3种运算:1.算术运算包括:+、–、*、/、模除(MOD,取余数)、右移、左移。
2.逻辑运算●逻辑乘:AND(与)●逻辑加:OR(或)●按位加:XOR(异或)●逻辑非:NOT(非)3.关系运算包括:相等(EQ)、不等(NE)、小于(L T)、大于(GT)、小于等于(LE)、大于等于(GE)。
运算结果:关系不成立,结果为0;关系成立,结果为–1(0FFFFH)。
如:N = 50M = (N EQ 50)该关系成立,M =–1。
3.1.2.变量、标号与地址表达式一.变量变量:数据存贮单元的名字。
(存放地址的符号表示)。
变量有三个属性:段、EA、类型。
其中类型由定义时的伪指令确定(DB、DW、DD、DT)。
变量的定义:格式:[变量名] 数据定义伪指令表达式[,…]数据定义伪指令:DB、DW、DD、DQ、DT等。
一、汇编语言概述汇编语言是一种面向机器的程序设计语言,与机器硬件密切相关,具有自己独特的编程优势和专门的应用领域。
汇编语言程序运行速度快、占用资源少,可以充分利用硬件资源,设计完成任意功能的程序。
但学习、编程较难,编程效率低,兼容性差。
因此,主要用于系统软件和控制软件的设计。
远不如高级语言应用广泛。
1. 汇编语言程序的执行步骤第一步:使用一种文本编辑软件编写汇编语言源程序,保存为文本文件。
第二步:使用系统软件“汇编程序”将汇编语言源程序汇编成目标程序,目标程序即为机器语言程序。
在汇编的过程中,汇编程序会发现程序中的语法错误,并指出在哪一行,是什么类型的错误。
如没有错误,汇编成功,但这时程序还不能执行。
注:机器语言程序即为二进制程序,所有高级语言和汇编语言都需要最后转换成二进制程序才能够被计算机系统执行。
第三步:使用系统软件“链接程序”将目标程序连接、装配形成可执行程序,在该链接过程中排查错误通过后,即可装入主存运行。
二、汇编语言的语句类型和格式2.1 汇编语言语句的类型:◆指令语句:包含在指令集中,每一个语句汇编后产生一组二进制数目标代码,可被CPU执行。
◆伪指令语句:汇编后不产生目标代码,用于定义段、子程序、常量、变量,以及给变量分配存储单元。
◆宏指令语句:用户定义的一个指令序列集合,汇编后在引用的地方展开成相应的指令序列。
用于提高编程效率2.2 汇编语言语句的格式汇编语言程序中每个语句可以由4项组成,格式如下:指令中的各项要用分隔符分开,名字项是标号时后面要有冒号作为分隔开,为增加查询可读性,对指令做解释时,要将指令和解释内容用分号分隔开,操作数之间用逗号分开,其他用空格分开。
(1) 名字项:用来标识段名、子程序名、宏指令名、标号、变量名和常量名等。
1.可用符号包括数字、字母和特殊符号“?”、“$”、“@”、“_”;2.数字不能作为名字(变量或标号)的第一个符号;3.名字长度不能超过31个字符;4.汇编语言中有特定含义的保留字,如操作码、寄存器名等,不能作为名字使用;5.汇编语言不区分字母的大小写。
8086汇编语言8086汇编语言是一种用于编写Intel 8086微处理器的程序的低级语言。
它是x86指令集的最早版本,是现代PC上使用的汇编语言的基础。
本文将介绍8086汇编语言的基本概念、指令系统、程序格式、程序设计方法和应用实例,以帮助读者掌握这门古老而强大的语言。
什么是8086汇编语言8086汇编语言是一种用助记符表示机器指令的语言,它可以直接操作CPU、寄存器、内存和端口等硬件资源。
8086汇编语言的优点是执行速度快、占用空间少、控制能力强,缺点是可读性差、可移植性差、编程难度大。
8086汇编语言的程序由三个部分组成:伪指令、指令和数据。
伪指令是用来告诉汇编程序如何处理源程序的命令,如定义变量、分配内存、设置段属性等。
指令是用来控制CPU执行操作的命令,如数据传送、算术运算、逻辑运算、控制转移等。
数据是用来存储或操作的信息,如常数、变量、字符串等。
8086汇编语言的程序需要经过汇编程序(如MASM)将源代码转换为机器代码,然后再由链接程序(如LINK)将多个目标模块连接成可执行文件,最后由加载程序(如DOS)将可执行文件加载到内存中运行。
8086微处理器8086微处理器是Intel公司于1978年推出的一款16位微处理器,它是x86系列微处理器的第一代产品,也是IBM PC机的原始CPU。
它具有以下特点:工作频率为5MHz~10MHz,每秒可执行约33万条指令内部结构由总线接口单元(BIU)和执行单元(EU)组成,实现了取指和执行的并行操作寄存器由四个16位通用寄存器(AX, BX, CX, DX)、四个16位段寄存器(CS, DS, SS, ES)、一个16位标志寄存器(FLAGS)和一个16位指令指针(IP)组成指令系统由100多条指令组成,分为数据传送类、算术运算类、位操作类、控制转移类和处理机控制类五大类存储器管理采用了分段机制,每个段最大为64KB,总容量为1MB支持两种工作模式:实地址模式和保护模式,实地址模式下可以直接访问物理地址,保护模式下可以实现多任务和内存保护8086汇编语言程序格式8086汇编语言程序一般采用以下格式:[段名] segment [段属性][伪指令][数据][子程序][段名] ends其中:段名是用来标识一个段的名称,可以自定义,但不能与伪指令或寄存器重名段属性是用来设置一个段的类型和特征,如代码段(code)、数据段(data)、堆栈段(stack)等伪指令是用来定义变量、分配内存、设置偏移量等功能的命令,如DB, DW, DD, ORG, ASSUME等数据是用来存储或操作的信息,如常数、变量、字符串等子程序是用来实现特定功能的代码段,如输入输出、排序、查找等一个典型的8086汇编语言程序由以下三个段组成:数据段(data segment):用来存放程序中用到的数据,如变量、常量、字符串等代码段(code segment):用来存放程序中的指令,如数据传送、算术运算、控制转移等堆栈段(stack segment):用来存放程序中的临时数据,如函数调用时的参数、返回地址、局部变量等一个简单的8086汇编语言程序示例如下:data segmentmsg db 'Hello, world!', '$' ;定义一个字符串变量data endscode segmentassume cs:code, ds:data ;告诉汇编程序代码段和数据段的名称start: ;程序入口标号mov ax, data ;将数据段地址加载到ax寄存器mov ds, ax ;将ax寄存器的值传送到ds寄存器,设置数据段寄存器mov dx, offset msg ;将字符串变量的偏移地址加载到dx寄存器mov ah, 9 ;设置ah寄存器为9,表示调用DOS中断的输出字符串功能int 21h ;调用DOS中断21h,输出字符串mov ah, 4ch ;设置ah寄存器为4ch,表示调用DOS中断的退出程序功能int 21h ;调用DOS中断21h,退出程序code endsend start ;告诉汇编程序程序结束的位置8086汇编语言指令系统8086汇编语言指令系统由100多条指令组成,分为五大类:数据传送类:用来实现数据在寄存器、内存和端口之间的传送,如MOV, PUSH, POP, XCHG等算术运算类:用来实现数据的加减乘除等运算,如ADD, SUB, MUL, DIV等位操作类:用来实现数据的位移、旋转、逻辑和测试等操作,如SHL, SHR, ROL, ROR, AND, OR, XOR, NOT, TEST等控制转移类:用来实现程序的顺序、条件和无条件跳转,如JMP, JZ, JNZ, JCXZ, CALL, RET等处理机控制类:用来实现处理机状态的设置和查询,如CLC, STC, CMC, CLD, STD, CLI, STI等每条指令由助记符和操作数组成,助记符表示指令的功能,操作数表示指令的对象。
汇编(三)——8086的寻址方式指令由操作码和操作数两部分组成。
操作码说明计算机要执行哪种操作,是指令中不可缺少的部分。
操作数是指令执行的参与者,即各种操作对象。
用助记符表达的指令格式通常为:操作码操作数1,操作数2 ;注释双操作数中,操作数2称为源操作数,操作数1称为目的操作数。
一、8086的机器代码格式8086的机器代码(Machine Code)格式,操作码占1个或2个字节,后面的各个字节知名操作数。
其中“mod reg r/m”字节表明殉职操作数的方式,“位移量”字节给出某些寻址方式需要的对基地址的偏移量,“立即数”字节给出立即寻址方式需要的数值本身。
如下图代码指令一般占用1~6个字节,细分如下:其详细的通用指令格式如图:其中第一字节称为操作码字节。
2~7位为操作码(OPCODE),第1位称为D位,指出操作数传输的方向,D=0时,表示第2字节REG字段(第2字节3~5位)给出的寄存器为源操作数寄存器。
D=1时,REG字段指出的寄存器为目标操作数。
第一字节第0位为W位,指出操作数是字节还是字。
W=0表示参加运算的数为字节,W=1表示参加运算的数为字。
8086指令的寻址方式字节编码:二、寻址方式1、立即数寻址方式——指令中的操作imm直接存放在极其代码中,紧跟在操作码之后。
例:MOV AL,05H2、寄存器寻址方式——操作数存放在CPU的内部寄存器reg中,可以是8位寄存器r8:AH/AL/BH/BL/CH/CL/DH/DL;也可以是16位寄存器r16:AX/BX/CX/DX/SI/DI/BP/SP,操作数还可以存放在4个段寄存器seg中:CS/DS/SS/ES。
例:MOV AX,1234H ;源操作数采用寄存器寻址,目的操作数为立即数寻址MOV BX,AX ;两个操作数均为寄存器寻址3、存储器寻址方式——寻址贮存中存储的操作数称为存储器寻址方式,也称为主存寻址方式。
在这种寻址方式下,指令中给出的是有关操作数的主存地址信息。
第三章8086汇编语言程序格式练习题3.4.1 单项选择题1.下列选项中不能作为名字项的是()。
A.FH B.A3 C.3B D.FADC2.下列指令不正确的是()。
A.MOV AL,123 B.MOV AL,123QC.MOV AL,123D D.MOV AL,123H3.下列指令不正确的是()。
A.MOV BL,OFFSET A B.LEA BX,AC.MOV BX,OFFSET A D.MOV BX,A4.若定义“BUF DB 1,2,3,4”,执行MOV AL,TYPE BUF 后AL=()。
A.0 B.1 C.2 D.35.若定义“A EQU 100”,执行“MOV AX,A”后,AX=()。
A.A的偏移地址B.A单元中的内容C.100 D.A的段地址6.若定义“B DW 1,2,10 DUP(0)”,则该伪指令分配()字节单元。
A.10 B.20 C.22 D.247.若定义“C DD 2,4”,则该伪指令分配()个字节单元。
A.2 B.4 C.6 D.88、伪指令是()规定的汇编说明符,它在源程序汇编时进行说明。
A、DEBUGB、LINKC、MASMD、EDIT9.在上机操作过程中,MASM命令执行后,除了生成一个目标文件外,根据选择还可以生成一个()文件。
A..LST B..EXE C..MAP D..ASM10.LINK命令执行后可以生成一个以()为扩展名的文件。
A.ASM B.EXE C.OBJ D.COM11.一个段最大可定义()字节。
A.1M B.64K C.32K D.16K12.若要求一个段的起始位置能被256整除的单元开始,在定位方式选项中应选()。
A.BYTE B.WORD C.PARA D.PAGE13.宏指令与子程序相比,在多次调用时,宏指令调用的目标程序长度比子程序调用的()。
A.相同B.长C.短D.不定14.宏指令与子程序相比,子程序调用的执行速度比宏指令的()。
A.相同B.快C.慢D.不定15.ASSUME伪指令说明了汇编程序所定义段与段寄存器的关系,它只影响()的设定。
A.源程序B.目标程序C.汇编程序D.连接程序16.设A和B为字变量,C为标号,下列指令中不正确的是()。
A.MOV AX,A B.MOV AX,BC.JNE A D.JMP C17.代码段中的语句()表示该段结束。
A.ASSUME B.CODE ENDSC.START:MOV AX,DATA D.END START18.过程定义语句以“过程名PROC”开始,以过程名()结束。
A.ENDS B.ENDP C.ENDM D.END19.一个段可以放在内存的任何地方,但起始地址应该从一个能被()整除的单元地址开始。
A.16 B.32 C.64 D.12820.在数据定义语句中,下列描述不正确的是()。
A.存放存储单元的地址可以用字节表示B.存放存储单元的地址可以用字表示C.存放存储单元的地址可以用双字表示D.存放存储单元的地址可以用四字表示3.4.2 多项选择题1.在8086汇编语言中,语句的种类有()。
A.指令性语句B.指示性语句C.汇编语句D.说明语句2.在下列的选项中,不能作为名字的有()。
A.AX B.3MA C.ABCD D.MOV3.在下列的选项中,作为变量的类型有()。
A.字节B.字C.双字D.近程4.在下列的选项中,作为标号的类型有()。
A.DB B.DD C.NEAR D.FAR5.在运算符OFFSET后可以是()。
A.标号B.变量C.表达式D.数字6.在指令“LEA BX,X”中的X可以是()。
A.标号B.变量C.表达式D.数字7.不能分配内存单元的伪指令语句有()。
A.EQU B.DW C.= D.DD8.定义一个段的伪指令语句有()。
A.NAME SEGMENT B.NAME PROCC.NAME ENDP D.NAME ENDS9.定义一个过程的伪指令语句有()。
A.NAME SEGMENT B.NAME PROCC.NAME ENDP D.NAME ENDS10.宏指令与子程序的主要区别在于()。
A.完成的功能完全不同B.目标程序的长度不同C.执行程序的速度不同D.汇编时处理的方式不同3.4.3 填空题1.汇编语言的语句有指令语句和,宏指令是的另一种形式。
2.标号的三个属性是段地址、和类型。
3.变量的三个属性是段地址、和类型。
4.标号的类型有和。
5.变量的类型有、、、四字(八字节)和十字节。
6.等价语句不能重复定义、等号语句重复定义。
7.等价语句和等号语句内存单元。
8.语句“MOV BX,OFFSET A”可用一条指令代替。
9.若定义“A DW 1234H”,指令“MOV AL,BYTE PTR A”执行后,AL= 。
10.若定义“B DW 1,2,30 DUP(5)”,则B分配的内存单元数是字节。
11.若定义C DW ‘AB’,则“MOV AL,BYTE PTR C”执行后,AL= 。
12.在程序的操作数项中使用的段名、标号名、变量名和符号名都必须在源程序中先,否则汇编程序进行汇编时就会。
13.使用伪指令和定义一个段。
14.使用伪指令和定义一个过程。
利用过程定义语句可以把程序分成小段,以便于、、调试和修改。
15.伪指令表示整个程序结束。
16.宏展开就是用宏定义取代源程序中的宏指令。
若实元个数大于变元个数,则多余的实元。
若实元个数少于变元个数,则多余的变元用代替。
17.汇编语言源程序经产生目标文件,它直接在机器上运行,还必须经过后形成可执行文件。
18.在数据段中使用字符串时,该字符必须用括起来。
当定义含有多个字符的字符串时,只能使用伪指令。
19.用汇编语言编写的程序称为,其扩展名为。
20.在源程序中只要对某一独立功能的程序段进行一次宏定义,就可以次调用它。
3.4.4 简答题1.按照下列题目要求写出每小题的伪指令。
(1)将12H、34H、56H、78H存放在字节变量A的存储单元中。
(2)将12、1638H、0E52H存放在字变量B的存储单元中。
(3)将字符串COMPUTER存放在C变量的存储单元中。
(4)将D字节变量的100个单元设置为0。
(5)将D的偏移地址存放在E变量中。
2.设数据段定义如下:DATA SEGMENTBUF1 DB 2,3BUF2 DW 4,5,6BUF3 DB 2,100 DUP(0)BUF4 DB ‘ABCDE’BUF5 DW BUF3BUF6 EQU $-BUF3DATA ENDS请回答:(1)该数据段占用的内存有多少字节?(2)BUF5单元中的值是多少?(3)BUF6的值是多少?(4)执行“MOV AL,BUF4+2”指令后,AL= 。
(5)执行“MOV AX,WORD PTR BUF1”指令后,AX= 。
3.设数据段定义如下:DATA SEGMENTA DW 23,45B DW ‘EF’C = $+5D DB 10 DUP(?)E EQU $-DF DW DDATA ENDS请回答:(1)该数据段占用的内存有多少字节?(2)C的值为多少?(3)E的值为多少?(4)执行“MOV AX,F”指令后,AX= 。
(5)执行“MOV AL,BYTE PTR B”指令后,AL= 。
4.设数据段定义如下:DATA SEGMENTBUF1 DB 36H,3,2BUF2 DW 1364H,253HBUF3 DB 30 DUP(‘ABC’)BUF4 DW $—BUF3BUF5 DB 100 DUP(0)DATA ENDS请回答:(1)执行“MOV AX,WORD PTR BUF1”后,AX= 。
(2)执行“LEA BX,BUF3”后,BX= 。
(3)执行“MOV CX,BUF4”后,CX= 。
(4)执行“MOV AL,BUF3+2”后,AL= 。
(5)执行“MOV AX,BUF2+1”后,AH= 。
5.设数据段定义如下:DATA SEGMENTA1 DB 10 DUP(‘’)A2 DW 1234H,5678H,341HA3 DW $—A2A4 DW A2A5 DB 7,3,2DATA ENDS请回答:(1)用一条指令将A2的偏移地址送BX。
(2)将A1的第6个字节送字符‘A’的ASCII码(3)将A2的第3个字节的内容送AL。
(4)将A2的第3个单元开始的字内容送AX。
(5)用一条伪指令求出A1和A2所占字节数(设伪指令的变量为C)。
6.设数据段定义如下:DATA SEGMENTA DW 2,3B DB 100 DUP(0)C DD 12345678HD DB $—BE DW BDATA ENDS请回答:(1)用一条指令将C的第2个字节的内容取出并送AL。
(2)执行完“MOV AL,LENGTH B”后,AL= 。
(3)执行完“MOV AL,TYPE C”后,AL= 。
(4)执行完“MOV AL,LENGTH A”后,AL= 。
(5)执行完“MOV AL,SIZE B”后,AL= 。
(6)执行完“MOV AL,D”后,AL= 。
(7)执行完“MOV BX,E”后,BX= 。
(8)执行完“MOV AL,A+2”后,AL= 。
7.设数据段定义如下:DATA SEGMENTA DW 1,2,3B DB ‘ABCDEF’C DW ‘AB’D DB 12H,34H,56HE = $+5DATA ENDS请回答:(1)用一条指令将B字符串中的字符‘E’送AL。
(2)用一条指令将D变量中的第2个、第3个字节的内容送AX。
(3)用一条指令将A变量中的第3个字节送AL。
(4)“MOV AX,C”执行后,AX= 。
(5)“MOV AL,E”执行后,AL= 。
8.按下列要求写出数据段DA TA的相应内容。
(1)TAB是0~9的ASCII码表。
(2)STR是字符串变量,字符串为COMPUTER。
(3)BUF是100个空格的缓冲区。
(4)COUNT是计算BUF缓冲区中字节数的常量变量。
(5)AD是存放TAB的偏移地址变量。
(6)D是字节变量,数值为15H,2,39.按下列要求写出数据段DSEG的相应内容。
(1)STR是存放字符ABCDE的字符串变量。
(2)D是存放十进制BCD数据372,2673,6852的字变量。
(3)BUF是存放10个0的字节缓冲区。
(4)E是存放BUF偏移地址和段地址的双字变量。
(5)F是常量,其值为5。
10.简述宏指令与子程序的主要区别。
11.在操作系统状态下,执行MASM程序对某一汇编语言源程序进行汇编后,除产生目标文件外,通过对答方式还可以产生对应源程序的另外两个文件。
请指出:(1)这两个文件的扩展名是什么?(2)这两个文件的功能是什么?12.简述汇编程序对宏调用作宏展开的过程。
13.设数据段定义如下:DA TA SEGMENTA DW 1,2B DB 3,4C DB ‘ABCD’D = $—CE DB 3 DUP(0)DA TA ENDS请回答:(1)画出该数据段在内存中的分配示意图。