教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 实用文档 >

汇编语言程序设计(第四版)第3章【课后答案】(2)

来源:网络收集 时间:2026-07-22
导读: 〔习题3.18〕在SMALL存储模式下,简化段定义格式的代码段、数据段和堆栈段的缺省段名、定位、组合以及类别属性分别是什么? 〔解答〕 段定义伪指令 段名 定位 组合 类别 组名 .CODE _TEXT WORD PUBLIC 'CODE' .DATA

〔习题3.18〕在SMALL存储模式下,简化段定义格式的代码段、数据段和堆栈段的缺省段名、定位、组合以及类别属性分别是什么?

〔解答〕

段定义伪指令 段名 定位 组合 类别 组名

.CODE _TEXT WORD PUBLIC 'CODE'

.DATA _DATA WORD PUBLIC 'DATA' DGROUP

.DATA? _BSS WORD PUBLIC 'BSS' DGROUP

.STACK STACK PARA STACK 'STACK' DGROUP

〔习题3.19〕如何用指令代码代替.startup和.exit指令,使得例题3.1a能够在MASM 5.x下汇编通过?

〔解答〕

;lt301a.asm(文件名)

.model small

.stack

.data

string db Hello,Everybody ! ,0dh,0ah. $

.code

start: mov ax ,@data

mov ds,ax

mov dx,offset string

mov ah,9

int 21h

mov ax ,4c00h

汇编语言程序设计(第四版)第3章【课后答案】 钱晓捷 主编

int 21h

end start

〔习题3.20〕创建一个COM程序完成例题3.1的功能。

〔解答〕

;lt301a,asm

.model tiny

.code

.startup

mov dx,offset string

mov ah,9

int 21h

.exit 0

string db 'Hello,Everybody!'0dh,0ah,'$' ;

end

〔习题3.21〕按下面要求写一个简化段定义格式的源程序

(1) 定义常量num,其值为5;数据段中定义字数组变量datalist,它的头5个字单元中依次存放-1、0、2、5和4,最后1个单元初值不定;

(2) 代码段中的程序将datalist中头num个数的累加和存入datalist的最后1个字单元中。 〔解答〕

.model small

.stack

.data

num equ 5

datalist dw -1,0,2,5,4,?

.code

.startup

mov bx,offset datalist

mov cx,num

xor ax,ax

汇编语言程序设计(第四版)第3章【课后答案】 钱晓捷 主编

again: add ax,[bx]

inc bx

inc bx

loop again

mov [bx],ax

.exit 0

end

〔习题3.22〕按下面要求写一个完整段定义格式的源程序

(1)数据段从双字边界开始,其中定义一个100字节的数组,同时该段还作为附加段;

(2)堆栈段从节边界开始,组合类型为stack;

(3)代码段的类别是 code ,指定段寄存器对应的逻辑段;主程序指定从100h开始,给有关段寄存器赋初值;将数组元素全部设置为64h。

〔解答〕

stack segment para stack

dw 512 dup(?)

stack ends

data segment

array db 100 dup(?)

data ends

code segment code

assume cs:code,ds:data,es:data,ss:stack

org 100h

start: mov ax,data

mov ds,ax

mov es,ax

mov di,offset array

mov al,64h

mov cx,100

cld

rep stosb

汇编语言程序设计(第四版)第3章【课后答案】 钱晓捷 主编

mov ax,4c00h

int 21h

code ends

end start

〔习题3.23〕编制程序完成两个已知双精度数(4字节)A和B相加并将结果存入双精度变量单元SUM中(不考虑溢出)。

〔解答〕

;xt327.asm

.model small

.stack 256 ;定义堆栈段大小为256个字节

.data

A dd 11223344h ;定义两个双字的数(随意)

B dd 77553311h

sum dd ? ;定义结果,执行后为:88776655h

.code

.startup

xor si, si ;相对于变量的位移量清零

mov cx, 2 ;分高低字分别相加,共两次

clc ;清零cf

again: mov ax, word ptr A[si] ;取第一个数的一个字(先低字后高字)

adc ax, word ptr B[si] ;取第二个数的一个字(先低字后高字)

mov word ptr sum[si], ax ;存和的一个字(先低字后高字)

inc si ;修改位移量指向下一个字(加2)

inc si

loop again ;cx=cx-1 ,if cx<>0 ,jump again

.exit 0

end

〔习题3.24〕编制程序完成12H、45H、0F3H、6AH、20H、0FEH、90H、0C8H、57H和34H等10个字节数据之和,并将结果存入字节变量SUM中(不考虑溢出)。

〔解答〕

汇编语言程序设计(第四版)第3章【课后答案】 钱晓捷 主编

.startup

xor si, si ;位移量清零

mov al, bdata[si] ;取第一个数

mov cx, num-1 ;累加次数

again: inc si ;指向下一个数

adc al, bdata[si] ;累加

loop again ;如未完,继续累加

mov sum, al ;完了,存结果

.exit 0

end

〔习题3.25〕结构数据类型如何说明、结构变量如何定义、结构字段如何引用?

〔解答〕

结构类型的说明使用一对伪指令STRUCT(MASM5.x是STRUC,功能相同)和ENDS。它们的格式为:

结构名 STRUCT

… ;数据定义语句

结构名 ENDS

结构变量定义的格式为:

变量名,结构名 〈字段初值表〉

引用结构字段,采用圆点“.”操作符,其格式是:

结构变量名.结构字段名。

〔习题3.26〕记录数据类型如何说明,记录变量如何定义,width和mask操作符是什么作用?

〔解答〕

记录类型的说明采用伪指令RECORD,它的格式为:

记录名 RECORD 位段[,位段…]

定义记录变量的格式:

记录变量名 记录名 〈段初值表〉

Width记录名/记录位段名操作符返回记录或记录位段所占用的位数。

mask记录位段名操作符返回一个8位或16位数值,其中对应该位段的个位为1,其余位为0。

汇编语言程序设计(第四版)第3章【课后答案】 钱晓捷 主编

…… 此处隐藏:951字,全部文档内容请下载后查看。喜欢就下载吧 ……
汇编语言程序设计(第四版)第3章【课后答案】(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/133866.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)