能: 。
答:
程序功能:把DX AX构成的双精度数左移四位
28. 以下程序段实现从键盘输入一个十进制数并转换成二进制数,试分析程序并填写恰当的
指令使程序完整。
MOV BX,0
NEWCHAR: INT 21H SUB AL,30H JL EXIT
CMP AL,9D JG EXIT
XCHG AX,BX MOV CX,10D XCHG AX,BX ADD BX,AX JMP NEWCHAR
EXIT:RET
答:
MOV AH,1 CBW
MUL CX
29. 下列程序段实现计算(V-(X*Y+Z-540))/X,并把结果的商存入AX,余数存入DX,其
中X,Y,Z,V都是16位带符号数,已经分别装入了X,Y,Z,V单元中。试分析程序并填写恰当的指令使程序完整。
MOV AX,X IMUL Y MOV CX,AX MOV BX,DX MOV AX,Z CWD
ADD CX,AX
SUB CX,540 MOV AX,V
SUB AX,CX SBB DX,BX IDIV X
答:
ADC BX,DX SBB DX,0 CWD
平分标准:有写错指令操作码的不给分。
30. 在ADDR单元中存放着数据Y,试编写一程序把Y中1的个数存入COUNT单元中。
答:
DATA SEGMENT
ADDR DW Y COUNT DW ? DATA ENDS CODE SEGMENT MAIN PROC FAR
ASSUME CS:CODE ,DS:DATA START:
PUSH DS SUB AX,AX PUSH AX
MOV AX,DATA MOV DS,AX MOV CX,0 MOV AX,ADDR
REPEAT:TEST AX,0FFFFH JZ EXIT JNS SHIFT INC CX SHIFT:SHL AX,1 JMP RETEAT EXIT:MOV COUNT,CX RET MAIN ENDP CODE ENDS
END START
31. 设有5个学生的成绩分别是76,69,84,90,55。试编写程序统计成绩在80~100,60~
79以及60分以下人数的个数分别存放在COUNT开始的三个字节单元中。
答:
DATA SEGMENT
ARRAY DB 76,69,84,90,55 COUNT DB 3 DUP(0) DATA ENDS CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE ,DS:DATA START:
PUSH DS SUB AX,AX PUSH AX
MOV AX,DATA MOV DS,AX
MOV CX,5 MOV SI,0 LOOP1: MOV AL,ARRAY[SI] CMP AL,80 JGE G80 CMP AL,60 JL L60 INC COUNT[1] JMP L1 G80: INC COUNT[0] JMP L1
L60: INC COUNT[2] L1: INC SI LOOP LOOP1 RET MAIN ENDP CODE ENDS
END START