当前位置:首页 > 汇编语言程序设计(第四版)第3章【课后答案】
‘a’ ‘b’ ‘c’
‘H’ ‘e’ ‘l’ ‘l’ ‘o’ 13 10 ‘$’
12个字符串’month’,每个字符串从低地址到高地址依次是:’m’ ‘o’ ‘n’ ‘t’ ‘h’ 25×4个字节未定义初值的存储单元,操作系统设置为0
〔习题〕修改例题,现在用字定义伪指令dw、字串传送指令movsw和字符串显示9号功能调用实现。
〔解答〕 .model small .stack .data
source dw 3433h,3635h target dw 40 dup(),'$' .code .startup mov ax,ds mov es,ax cld
mov si,offset source mov di,offset target mov cx,40 rep movsw mov si,0
mov dx,offset target mov ah,9 int 21h .exit 0 end
〔习题〕变量和标号有什么属性
〔解答〕
段地址:表示变量和标号所在代码段的段地址;
偏移地址:表示变量和标号所在代码段的段内偏移地址;
类型:引用变量时,表示是字节、字、双字等数据量。引用该标号时,表示它所在同一个段――near类型,还是另外一个段――far类型。
〔习题〕设在某个程序中有如下片段,请写出每条传送指令执行后寄存器AX的内容:
mydata segment ORG 100H
VARW DW 1234H,5678H VARBDB 3,4 ALIGN 4 VARD DD H EVEN
BUFF DB 10 DUP() MESS DB ’HELLO’
BEGIN:MOV AX,OFFSET MESS
MOV AX,TYPE BUFF+TYPE MESS+TYPE VARD MOV AX,SIZEOF VARW+SIZEOF BUFF+SIZEOF MESS MOV AX,LENGTHOF VARW+LENGTHOF VARD MOV AX,LENGTHOF BUFF+SIZEOF VARW MOV AX,TYPE BEGIN MOV AX, OFFSET BEGIN 〔解答〕
MOV AX, OFFSET MESS ;AX=116H
MOV AX, TYPE BUFF+TYPE MESS+TYPE VARD ;AX = 1+1+4 = 06H
MOV AX,SIZEOF VARW+SIZEOF BUFF+SIZEOF MESS ;AX = 4+10+5 = 19 = 13H MOV AX,LENGTHOF VARW + LENGTHOF VARD ;AX = 2+1 = 03H MOV AX,LENGTHOF BUFF + SIZEOF VARW ;AX = 10+4 =14 = 0EH MOV AX,TYPE BIGIN ;AX = FF02H (近) MOV AX,OFFSET BEGIN ;AX = 1BH
〔习题〕利用简化段定义格式,必须具有.MODEL语句。MASM定义了哪7种存储模式,TINY和SMALL模式创建什么类型(EXE或COM)程序设计32位程序应该采用什么模式
〔解答〕
MASM定义的7种存储模式是TINY(微型模式、SMALL(小型模式)、COMPACT(紧凑模式)、MEDIUM(中型模式)、LARGE(大型模式)、HUGE(巨大模式)、FLAT(平展模式);TINY用于创建COM类型程序、一般程序都可以选用SMALL模式;设计32位的程序应该采用FLAT模式。
〔习题〕源程序中如何指明执行的起始点源程序应该采用哪个DOS功能调用,实现程序返回DOS
〔解答〕
源程序中运用STARTUP伪指令指明执行的起始点;源程序应该采用DOS功能调用的4CH子功能实现程序返回DOS的。
〔习题〕在SMALL存储模式下,简化段定义格式的代码段、数据段和堆栈段的缺省段名、定位、组合以及类别属性分别是什么
〔解答〕
段定义伪指令 段名 定位 组合 类别 组名 .CODE _TEXT WORD PUBLIC 'CODE' .DATA _DATA WORD PUBLIC 'DATA' DGROUP .DATA _BSS WORD PUBLIC 'BSS' DGROUP .STACK STACK PARA STACK 'STACK' DGROUP
〔习题〕如何用指令代码代替.startup和.exit指令,使得例题能够在MASM 下汇编通过 〔解答〕 ;(文件名) .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
int 21h end start
〔习题〕创建一个COM程序完成例题的功能。
〔解答〕 ;lt301a,asm .model tiny .code .startup
mov dx,offset string mov ah,9 int 21h .exit 0
string db 'Hello,Everybody!'0dh,0ah,'$' ; end
〔习题〕按下面要求写一个简化段定义格式的源程序
(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
共分享92篇相关文档