|
一、
现有(DS)= 182AH,(ES)= 192AH,(SS)= 2000H,(SP)= 0FFF0H,(AX)= 07A8H,(BX)= 0510H,(SI)=
0004H,(187B0H)= 0042H,(187B4H)= 0B02H,(184BEH)= 0100H,(187C0H)= 2000H,(192A0H)=
38A4H,(197B4H)= 0200H,CF = 1
请写出下列各条指令独立执行完后,值发生变化的有关寄存器及存储单元的内容,不必写标志位。
(1)MOV AH,[1000H]
(2)ADC [BX],AX
(3)CBW
(4)TEST AX,8000H
(5)MUL BYTE PTR 4[BX]
(6)DIV BL
(7)RCR WORD PTR [BX][SI],1
(8)XCHG AX,ES:[BX + SI]
(9)LES DI,[BX + SI + 0AH]
(10)PUSH DS
二、 下面是三个要连接在一起运行的汇编源程序,文件名分别为A1.ASM,A2.ASM和A3.ASM。
(1) 请在括号中填上适当的语句,以确保能正确汇编,连接和运行。
(2) 写出汇编,连接和运行这三个模块的命令。
A1.ASM的内容
------------------------------------------------------------
DSEG SEGMENT
ONE DB ?
TWO DB ?
DAT DB ?
DSEG ENDS
;
CSEG1 SEGMENT PUBLIC
MAIN PROC FAR
。
。
。
MOV AL,ONE
CMP AL,TWO
JE SAME
CALL FAR PTR NSAME
JMP EXIT
SAME:CALL FAR PTR PSAME
EXIT:RET
MAIN ENDP
CSEG1 ENDS
END MAIN
------------------------------------------------------------
A2.ASM的内容
------------------------------------------------------------
CSEG2 SEGMENT PUBLIC
PSAME PROC FAR
MOV AL,ONE
AND AL,0FH
MOV DAT,AL
RET
PSAME ENDP
CSEG2 ENDS
END
----------------------------------------------------------------
A3.ASM的内容
----------------------------------------------------------------
CSEG3 SEGMENT PUBLIC
NSAME PROC FAR
MOV AL,TWO
AND AL,0FH
MOV DAT,AL
RET
NSAME ENDP
CSEG3 ENDS
END
-------------------------
三、 下列各语句语法正确否(其中Y为数据段中的字变量):
(1)MOV AX,SS:Y
(2)MOV AX,BX + 1
(3)IMUL AX
(4)CALL DWORD PTR BX
(5)MOV BX,[SP]
(6)TEST AL,8000H
(7)JMP [BX]
(8)ADD Y,OFFSET Y
(9)SUB BYTE PTR [SI],F3H
(10)XOR BYTE PTR [BX],100
四、 画出下列程序执行过程中堆栈的变化过程,并给出执行完后X和Y单元的值。画堆栈状态时不必写堆栈每个单元的物理地址,只要标出栈顶的段内偏移地址即可。堆栈图的每一格填堆栈中的一个字。注意:仅当程序执行到一个标号处(如L1,BACK,EXIT等)时,才给出当前的堆栈状态图并写明该标号。
DSEG SEGMENT
X DW 0
Y DW 1
Z DW S3
DSEG ENDS
;
ST SEGMENT STACK 'STACK'
DW 100H DUP(?)
TOP DW 100H
ST ENDS
;
COD SEGMENT
ASSUME CS:COD,DS:DSEG,SS:ST
MAIN PROC FAR
MOV AX,ST
MOV SS,AX
MOV SP,TOP
PUSH DS
PUSH CS
POP DS
LEA DX,S1
MOV AX,257EH
INT 21H
MOV AX,0
PUSH AX
MOV AX,DSEG
MOV DS,AX
L1: CALL S2
L2: CMP X,1
JNE NEXT
INT 7EH
NEXT: RET
MAIN ENDP
;
S1 PROC FAR
L3: MOV BX,X
ADD Y,BX
CMP Y,1
JLE BACK
PUSH CS
LEA DX,S2
PUSH DX
RET
BACK: RET 2
S1 ENDP
;
S2 PROC FAR
L4: INC X
CMP Y,1
JE BACK1
MOV BX,4
JMP X[BX]
BACK1: RET
S2 ENDP
;
S3 PROC FAR
L5: INC X
INC Y
RET 2
S3 ENDP
COD ENDS
END MAIN
-----------------------------------------------------------------------
五、 假设有一台输入设备与主机相连,其对应中断类型号为0CH,输入数据端口为30H,该设备每向30H端口发送一个字节,就会产生一个中断,该中断的中断屏蔽位为第4位(从0计起)。当CPU发出中断结束命令后,该设备会向30H端口发送下一个数据。现要求编写如下一个程序:
(1) 能以中断方式接收输入设备发来的数据。
(2) 每当接收到80个字节的数据后,将这80个字节作为ASCII字符在屏幕上显示出来。即每产生80次中断才向屏幕上显示。
(3) 当接收到800个字节后(即向屏幕显示10次后),结束整个程序的执行。
(4) 向屏幕上显示时,只能使用写文件的方式。即把屏幕作为一个具有特殊文件代号的文件来处理。
|