电子科大教材-第四章作业解答

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.变量在存储器中的分配情况如下(最左边为段内偏移量):

0000H:09H

0001H:00H

0002H:??H

0003H:??H

……(初值是一样的,从0002H到0009H总共8个字节)

0009H:??H

000AH:05H

000BH:00H

000CH:00H

000DH:00H

……(初值是一样的,从000CH到004BH总共40H个字节)

004BH:00H

004CH:01H

004DH:03H

……(初值是一样的,从004DH到005CH总共10H个字节)

005CH:03H

005DH:‘A’

005EH:‘B’

005FH:01H

0060H:03H

……(初值一样,从0060H到006FH总共10H个字节)

006FH:03H

0070H:‘A’

0071H:‘B’

数据段所占空间:0072H字节

3.指出下列语句的错误:

(1)MOV AX,V AR1+V AR2

错误:两变量名之间不能使用加法运算符

(2)MOV CX,V AR1-V AR2

正确

(3)MOV BL,AL SHR 3

错误:表达式只能针对常数进行操作,AL是寄存器

(4)MOV DX,AX AND 0FFH

错误:表达式只能针对常数进行操作,AX是寄存器

(5)MOV [SI],4

错误:没有明确的数据类型,正确的写法为,MOV BYTE PTR [SI],4或者

MOV WORD PTR [SI],4等等。

(6)NEG V AR1[BX]

错误:没有明确的数据类型,正确的写法为,NEG BYTE PTR V AR1[BX],或指定其他的数据类型。

(7)ADD BYTE PTR [DI],1000

错误:数据类型不匹配,目的操作数为字节类型,源操作数为字类型,因为1000>255

(8)MOV AL,OFFSET V AR1

错误:数据类型不匹配,目的操作数为字节类型,源操作数为字类型,因为偏移量是16位的。

4.执行程序后,BUF中各字节单元内容为多少?

首先,数据段的初始内容如下:

DAB DB 12H,34H,0,56H

DAW DW 0078H,0090H,0AB46H,1234H

ADR1 DW 0000H

ADR2 DW 0004H

BUF DB 5 DUP(?)

(左边为指令,右边为执行结果)

XOR CX,CX (CX)=0

MOV CL, 3 (CL)=3

ADD ADR1,CX (ADR1)=0000H+0003H=0003H

SUB ADR2,CX (ADR2)=0004H-0003H=0001H

MOV BX,ADR1 (BX)=0003H

MOV DI,BX (DI)=0003H

MOV SI,ADR2 (SI)=0001H

MOV AL,DAB[BX] EA=DAB[0003H], (AL)=56H

MOV BUF[DI],AL EA=BUF[0003H], BUF[0003H]=56H

MOV AX,DAW[BX][SI] EA=DAW[0003H][0001H]=DAW[0004H], (AX)=0AB46H

MOV WORD PTR BUF,AX BUF[0000H]=0AB46H

最后BUF中的内容:左边为数组内部偏移量,右边为内容。

0000H:46H

0001H:0ABH

0002H:

0003H:56H

0004H:

7.汇编后,变量的内容分别是多少?

(N1 AND N2 OR N3)GE 0FH = (10 AND 5 OR 3)GE 0FH =

(00001010B AND 00000101B OR 00000011B)GE 0FH = 03H GE 0FH = 0

(N2 AND N1 XOR N3)LE 0FH = (5 AND 10 XOR 3)LE 0FH = (00000000B XOR 00000011B)LE 0FH = 03H LE 0FH = 全1

(N1 MOD N3)LT(N2 SHR 1)=(10 MOD 3)LT(5 SHR 1)=1 LT 2 =全1

汇编后,变量内容分别如下:

CON1 DB 0

CON2 DW 0FFFFH

CON3 DB 0FFH

9.执行程序段以后,CX和SI的内容是多少

XOR AX,AX ;(AX)=0

MOV CX,LENGTH ARRY ;(CX)=20,循环中的记数初值

MOV SI,SIZE ARRY – TYPE ARRY ;(SI)=20*2-2=38,指向数组的最后一个元素

显然,执行后,(CX)=20,(SI)=38。

13.(这道题目主要涉及到变量定义和位置计数器)

把自己当作汇编程序,浏览一遍这个数据段,记下每一次位置计数器的改变:

DA TA SEGMENT

; $=0

ORG 30H

; $=30H

CON EQU 10H

S1 DB ‘IBM PC’

; $=36H

DB 0AH,0DH ; 字符串末尾的“换行”和“回车”字符

; $=38H

CUNT EQU $ - S1 ; CUNT相当于字符串S1的长度

S2 DW ‘IB’, ‘M ’, ‘PC’, 0A0DH ;注意M后面有个空格字符

; $=40H

DA TA ENDS

根据上面记载的位置计数器变化情况,S1的偏移量为0030H,S2的偏移量为0038H。CUNT 的值为8。S2在内存中的初值情况如下:(左边为数组内部偏移量,右边为初值)

0000H:‘B’

0001H:‘I’

0002H:‘’

0003H:‘M’

相关文档
最新文档