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

发布时间 : 星期六 文章汇编语言程序设计(第四版)第3章【课后答案】更新完毕开始阅读c074f7a3b80d4a7302768e9951e79b89680268be

‘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