汇编课后答案(7)

2018-12-27 15:44

(1)1000超出了一个字节范围

(2)寄存器的值只有程序执行时才能确定,而offset是汇编过程计算的偏移地址,故无法确定,改

为lea bx,myword[si]

(3)两个都是存储单元,指令不允许

(4)变量值只有执行时才确定,汇编过程不能计算 (5)字节量AL与字量myword,类型不匹配 (6)Jcc指令只有相对寻址方式,不支持间接寻址方式

〔习题3.10〕OPR1是一个常量,问下列语句中两个AND操作有什么区别?

AND AL,OPR1 AND 0feh

〔解答〕

前者为“与”操作硬指令助记符,可汇编成机器代码。 后者为逻辑运算符,在汇编时进行“与”运算,产生具体数值。

〔习题3.11〕给出下列语句中,指令立即数(数值表达式)的值:

(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 1234h 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.12〕为第2章例题2.54定义变量count、block、dplus和dminus。

〔解答〕

假设block开始的数据块有32个字节数据:16个正数+100 (64h)、16个负数 -48 (0d0h)

分别连续分布:

block db 16 dup(100),16 dup(-48) ;也可以是任意字节数据,随意分布。

dplus db 32 dup(?) ;为正数预留存储空间 dminus db 32 dup(?) ;为负数预留存储空间

count equ 32 ;字节数

〔习题3.13〕为第2章例题2.55定义相应变量,并形成一个完整的汇编语言程序。

〔解答〕 ;lt239b.asm .model small

.stack .data

string1 db 'good morning !' ;两字符串可相同或不同,但字符数要求相同。

string2 db 'Good morning !' result db ? ;预留结果字节 count = 14 ;字符数

.code .startup

mov ax,ds ;所有数据在同一个段,所以使es=ds

mov es,ax mov si,offset string1 mov di,offset string2

mov cx,count again: cmpsb

jnz unmat dec cx jnz again mov al,0 jmp output unmat: mov al,0ffh output: mov result, al

.exit0 end

〔习题3.14〕画图说明下列语句分配的存储空间及初始化的数据值:

(1) byte_var DB ?ABC?,10,10h,?EF?,3 DUP(-1,?,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.15〕请设置一个数据段mydataseg,按照如下要求定义变量:

(1) my1b为字符串变量:Personal Computer (2) my2b为用十进制数表示的字节变量:20 (3) my3b为用十六进制数表示的字节变量:20 (4) my4b为用二进制数表示的字节变量:20

(5) my5w为20个未赋值的字变量

(6) my6c为100的常量

(7) my7c表示字符串:Personal Computer

〔解答〕 mydataseg segment my1b db ?Personal Computer?

my2b db 20

my3b db 14h ;20h my4b db 00010100b my5w dw 20 dup(?)

my6c equ 100 ;my6c = 100 my7c equ

mydataseg ends

〔习题3.16〕分析例题3.2的数据段,并上机观察数据的存储形式。

〔解答〕

以字节为单位从低地址向高地址依次是:

16 00 12

FFH FFH FFH FFH 00 00 00 00 00 00 00 00

1 2 3 4 5

45H 23H 00 00 00 00 00 00 00 00

?a? ?b? ?c?

?H? ?e? ?l? ?l? ?o? 13 10 ?$?

12个字符串?month?,每个字符串从低地址到高地址依次是:?m? ?o? ?n? ?t? ?h?

25×4个字节未定义初值的存储单元,操作系统设置为0

〔习题3.17〕修改例题3.3,现在用字定义伪指令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

〔习题3.18〕变量和标号有什么属性?

〔解答〕

段地址:表示变量和标号所在代码段的段地址; 偏移地址:表示变量和标号所在代码段的段内偏移地址;

类型:引用变量时,表示是字节、字、双字等数据量。引用该标号时,表示它所在同一个段――near

类型,还是另外一个段――far类型。

〔习题3.19〕设在某个程序中有如下片段,请写出每条传送指令执行后寄存器AX的内容:

mydata segment ORG 100H VARW DW 1234H,5678H

VARB DB 3,4 ALIGN 4 VARD DD 12345678H

EVEN BUFF DB 10 DUP(?) MESS DB ?HELLO? BEGIN: MOV AX,OFFSET MESS

MOV AX,TYPE BUFF+TYPE MESS+TYPE VARD


汇编课后答案(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:煤场道路施工组织设计

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: