POP A POP B
试回答:A.上述程序段执行后(A)= 5678H ,(B)= 1234H 。 7、设寄存器AL,BL,CL中内容均为76H,
XOR AL,0FH AND BL,0FH OR CL,0FH
执行上述指令序列后,AL=______79h_____________。
BL=________06H___________,CL=______7FH_____________。
8、已知:BX=1357H,BP=2468H,SI=1000H,DI=2000H,SS=1000H,DS=2000H,ES=3000H,试分别指出下列各指令中存储器操作数的物理地址。
MOV AL,[BP+20H]的物理地址是 12488H 。 MOV [BX+DI-80H],AL的物理地址是 232D7H 。
MOV BL,ES:[SI+40H]的物理地址是 31040H 。 9、阅读程序段:
BLOCK DB 20H,1FH,08H,81H,0FFH,? RESULT DB ?
?
START:LEA SI,BLOCK
MOV CX,[SI] INC SI MOV AL,[SI]
LOP1: CMP AL,[SI+1]
JNG NEXT
MOV AL,[SI+1] NEXT:INC SI LOOP LOP1 MOV RESULT,AL
HLT
请问:(1)该程序完成的功能是什么?
(2)该程序循环的次数是多少?
答:(1)该程序完成的功能是从20H(32)个有符号数中找出最小的数送入RESULT单元中。 (2)该程序的循环次数是1FH(31)。
10、STRING DB ‘ABCDEFGHI’
:
MOV AH,01;从键盘输入字符1~9 INT 21H AND AL,0FH DEC AL XOR AH,AH
MOV BX,OFFSET STRING ADD BX,AX MOV BL,[BX]
MOV AH,02H ;显示输出
INT 21H :
试回答:(1)上述程序段的功能是什么?
(2)如从键盘输入字符‘4’,程序段有什么结果?
答:①程序段功能:根据从键盘输入的字符‘1’~‘9’,确定在显示器上显示STRING中第几个字符。 ②显示器显示字符‘D’
四、编程题(30分)
1、设在数据段中有X,Y两变量(字节单元),试编写程序段计算(只写有关程序功能的指令):
Y= X 当X >=0 Y= 0 当X<0 答: MOV AL ,X
CMP AL,0 JGE BIGR MOV AL,0 BIGR:MOV Y,AL
2、试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。 见课本P138例9.3 3、已知在以ARRAY为首地址的数据区中存放10个带符号字数据: ARRAY DW 1,2,-1,3,4,-2,-3,4,5,-6 编程统计ARRAY中正数项个数和负数项个数。 4、设 X、Y、Z、W为十六位有符号数编程计算: W ←(X + Y * Z)/8 -Y 除法余数丢弃 若ZF=1 ,程序转EQ;否则转NOT_EQ。
5、X,Y,Z三个字节存储单元中各有一个无符号数,其中有两个数据相等,找出不相等的哪个数,并存入W单元中,试编写完成上述功能的程序段(只编写有关代码部分,勿需书写源程序格式)。
第 5 题代码: MOV AX,DATA MOV DS,AX MOV AL,[X] MOV AL,[Y] JNZ YZ
MOV AL,[Z] JMP DONE
YZ:MOV AL,[Y] CMP AL,[Z] JNZ YW MOV AL,[X] JMP DONE YW:MOV AL,[Y] DONE:MOV [W],AL

