汇编语言程序设计(第四版)第3章

上传人:新** 文档编号:468611088 上传时间:2023-09-09 格式:DOCX 页数:12 大小:25.03KB
返回 下载 相关 举报
汇编语言程序设计(第四版)第3章_第1页
第1页 / 共12页
汇编语言程序设计(第四版)第3章_第2页
第2页 / 共12页
汇编语言程序设计(第四版)第3章_第3页
第3页 / 共12页
汇编语言程序设计(第四版)第3章_第4页
第4页 / 共12页
汇编语言程序设计(第四版)第3章_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《汇编语言程序设计(第四版)第3章》由会员分享,可在线阅读,更多相关《汇编语言程序设计(第四版)第3章(12页珍藏版)》请在金锄头文库上搜索。

1、汇编语言程序设计 第四版-囮裑為檤【课后习题答案】第 3 章 汇编语言程序格式习题3.1伪指令语句与硬指令语句的本质区别是什么?伪指令有什么主要作用?解答 伪指令语句与硬指令语句的本质区别是能不能产生 CPU 动作;伪指令的作用是完成对如存储模式、主存变量、子程序、宏及段定义等很多不产生CPU动作的说明, 并在程序执行前由汇编程序完成处理。习题 3.2什么是标识符,汇编程序中标识符怎样组成?解答为了某种需要,每种程序语言都规定了在程序里如何描述名字,程序语言的名字通常被称为标识符; 汇编语言中的标识符一般最多由 31 个字母、数字及规定的特殊符号(如-,?, )组成,不 能以数字开头。习题 3

2、.3 什么是保留字,汇编语言的保留字有哪些类型,并举例说明。解答保留字是在每种语言中规定了有特殊意义和功能的不允许再做其它用处的字符串;汇编语言的保留 字主要有硬指令助记、伪指令助记符、运算符、寄存器名以及预定义符号等。汇编语言对大小写不敏感。 如定义字节数和字符串的 DB 就是伪指令助记符。习题3.4汇编语句有哪两种,每个语句由哪 4个部分组成?解答汇编语句有执行性语句和说明性语句;执行性语句由标号、硬指令助记符、操作数和注释四部分组成;说明性语句由名字、伪指令助记符、参数和注释四部分组成习题3.5汇编语言程序的开发有哪 4个步骤,分别利用什么程序完成、产生什么输出文件。解答1.编辑文本编辑

3、程序汇编语言源程序.asm2.汇编汇编程序目标模块文件obj3.连接连接程序可执行文件exe 或.com4.调试调试程序应用程序习题 3.6区分下列概念:(1)变量和标号(2)数值表达式和地址表达式(3)符号常量和字符串常量解答(1)变量是在程序运行过程中,其值可以被改变的量;标号是由用户自定义的标识符,指向存储单 元,表示其存储内容的逻辑地址。(2)数值表达式一般是由运算符连接的各种常数所构成的表达式,地址表达式是由名字、标号以及 利用各种的操作符形成的表达式。(3)在程序中,为了使常量更便于使用和阅读 ,经常将一些常量用常量定义语句定义为符号常量, 被一对双引号括起来的若干个字符组成的字符

4、序列被称为字符串常量。习题3.7假设myword是一个字变量,mybytel和mybyte2是两个字节变量,指出下列语句中的错 误原因。(1)mov byte ptr bx,1000(2)mov bx,offset mywordsi(3)cmp mybyte1,mybyte2(4)mov al,mybyte1+mybyte2(5)sub al,myword(6)jnz myword解答(1)1000超出了一个字节范围(2)寄存器的值只有程序执行时才能确定,而offset是汇编过程计算的偏移地址,故无法确定,改 为 lea bx,mywordsi( 3)两个都是存储单元,指令不允许(4)变量值只

5、有执行时才确定,汇编过程不能计算(5)字节量AL与字量myword,类型不匹配(6)Jcc 指令只有相对寻址方式,不支持间接寻址方式习题3.8OPR1是一个常量,问下列语句中两个AND操作有什么区别?AND AL,OPR1 AND 0feh解答前者为“与”操作硬指令助记符,可汇编成机器代码。 后者为逻辑运算符,在汇编时进行“与”运算,产生具体数值。习题 3.9给出下列语句中,指令立即数(数值表达式)的值:(1)mov al,23h AND 45h OR 67h(2)mov ax,1234h/16+10h(3)mov ax,NOT(65535 XOR 1234h)(4)mov al,LOW 12

6、34h OR HIGH 5678h(5)mov ax,23h SHL 4(6)mov ax,1234h SHR 6(7)mov al,a AND (NOT(a-A)(8)mov al,H OR 00100000b(9)mov ax,(76543 LT 32768) XOR 7654h解答 注:对于逻辑运算,有关操作数可化为二进制数。(1)67h(2)133h(3)1234h(4)76h(5)0234h(6)0048h(7)41h(8)68h(9)7654h习题 3.10画图说明下列语句分配的存储空间及初始化的数据值:(1) byte_var DB ABC,10,10h,EF,3 DUP(-1,

7、?,3 DUP(4)(2) word_var DW 10h,-5,EF,3 DUP(?)解答(1)从低地址开始,依次是(十六进制表达):41 42 43 0a 10 45 46 ff 04 04 04 ff 04 04 04 ff 04 04 04(2)从低地址开始,依次是(十六进制表达):10 00 FB FF 46 45 (习题3.11 请设置一个数据段mydataseg,按照如下要求定义变量:(1) mylb 为字符串变量:Personal Computer(2)my2b 为用十进制数表示的字节变量: 20(3)my3b 为用十六进制数表示的字节变量: 20(4)my4b为用二进制数表示

8、的字节变量:20(5)my5w为20个未赋值的字变量(6)my6c为100的常量(7)my7c 表示字符串: Personal Computer解答mydataseg segmentmy1bdb Personal Computermy2bdb 20my3bdb 14h;20hmy4bdb 00010100bmy5wdw 20 dup(?)my6cequ 100;my6c = 100my7cequ mydataseg ends习题3.12分析例题3.2的数据段,并上机观察数据的存储形式。 解答以字节为单位从低地址向高地址依次是:1600 12FFH FFH FFH FFH00 00 00 00

9、00 00 00 001 2 3 4 545H 23H 00 00 00 00 00 00 00 00a b cH e l l o 13 10 $12个字符串month,每个字符串从低地址到高地址依次是:m o n t h25x4个字节未定义初值的存储单元,操作系统设置为0习题3.13)修改例题3.3,现在用字定义伪指令dw、字串传送指令movsw和字符串显示9号功能调用 实现。解答.model small.stack.datasource dw 3433h,3635htarget dw 40 dup(?),$.code.startupmov ax,dsmov es,axcldmov si,o

10、ffset sourcemov di,offset targetmov cx,40rep movswmov si,0mov dx,offset targetmov ah,9int 21h.exit 0end习题3.14变量和标号有什么属性?解答段地址:表示变量和标号所在代码段的段地址;偏移地址:表示变量和标号所在代码段的段内偏移地址;类型:引用变量时,表示是字节、字、双字等数据量。引用该标号时,表示它所在同一个段一一near 类型,还是另外一个段一一far类型。习题3.15)设在某个程序中有如下片段,请写出每条传送指令执行后寄存器AX的内容:mydata segmentORG 100HVARW

11、 DW 1234H,5678HVARB DB 3,4ALIGN 4VARD DD 12345678HEVENBUFFDB 10 DUP(?)MESS DB HELLOBEGIN: MOV AX,OFFSET MESSMOV AX,TYPE BUFF+TYPE MESS+TYPE VARDMOV AX,SIZEOF VARW+SIZEOF BUFF+SIZEOF MESSMOV AX,LENGTHOF VARW+LENGTHOF VARDMOV AX,LENGTHOF BUFF+SIZEOF VARWMOV AX,TYPE BEGINMOV AX, OFFSET BEGIN解答MOV AX, O

12、FFSET MESS; AX=116HMOV AX, TYPE BUFF+TYPE MESS+TYPE VARD ; AX = 1+1+4 = 06HMOV AX, SIZEOF VARW+SIZEOF BUFF+SIZEOF MESS; AX = 4+10+5 = 19 = 13HMOV AX,LENGTHOF VARW + LENGTHOF VARD; AX = 2+1 = 03HMOV AX,LENGTHOF BUFF + SIZEOF VARW; AX = 10+4 =14 = 0EHMOV AX,TYPE BIGIN; AX = FF02H (近)MOV AX,OFFSET BEGI

13、N; AX = 1BH习题3.16)利用简化段定义格式,必须具有.MODEL语句。MASM定义了哪7种存储模式,TINY和SMALL模式创建什么类型(EXE或COM)程序?设计32位程序应该采用什么模式?解答MASM定义的7种存储模式是TINY (微型模式、SMALL (小型模式)、COMPACT (紧凑模式)、 MEDIUM (中型模式)、LARGE (大型模式)、HUGE (巨大模式)、FLAT (平展模式);TINY用于 创建COM类型程序、一般程序都可以选用SMALL模式;设计32位的程序应该采用FLAT模式。习题3.17)源程序中如何指明执行的起始点?源程序应该釆用哪个DOS功能调用

14、,实现程序返回DOS? 解答源程序中运用STARTUP伪指令指明执行的起始点;源程序应该釆用DOS功能调用的4CH子功能 实现程序返回DOS的。习题3.18)在SMALL存储模式下,简化段定义格式的代码段、数据段和堆栈段的缺省段名、定位、组 合以及类别属性分别是什么?解答)段定义伪指令段名定位组合类别组名.CODE_TEXTWORDPUBLICCODE.DATA_DATAWORDPUBLICDATADGROUP.DATA?_BSSWORD PUBLIC BSS DGROUP.STACKSTACKPARASTACKSTACKDGROUP(习题3.19)如何用指令代码代替.startup 和.exit指令,使得例题3.1a能够在MASM 5.x下汇编通过? 解答);lt301a.asm(文件名).model small.stack.datastring db Hello,Everybody !,0dh,0ah.$.codestart: mov ax ,datamov

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号