电子科大教材-第四章作业解答
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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’