答:(1)子程序的功能是判别AL和BL中的数是否为异号数,当为异号时交换,否则不变。 (2) AL=77H, BL=9AH 16、阅读程序段: CXFX
BLOCK DB 20H,1FH,08H,81H,OFFH? LOP1:CMP AL,[SI+1] RESULT DB? JNG NEXT ? MOV AL,[SI+1]
START:LEA SI,BLOCK NEXT:INC SI MOV CX,[SI] LOOP LOP1 INC SI MOV RESULT,AL MOV AL,[SI] HLT 请问:(1)该程序完成的功能是什么?(2)该程序循环的次数是多少?
答:(1) 该程序完成的功能是从20H(32)个有符号数中找出最小的数送入RESULT单元中。 (2) 该程序的循环次数是1FH(31)。
17、阅读如下程序段,回答所提出的问题,假定X1,X2,XN为无符号数。 CXFX ORG 100H
BLOK DW X1,X2,?,XN COUNT EQU($-BLOLOK)/2 RESULT DW COUNT,? LEA BX,BLOK-2 MOV CX,RESULT XOR AX,AX
GOON:ADD BX,2 CMP AX,[BX] JAE NEXT MOV AX,[BX] NEXT:LOOP GOON MOV RESULT+2,AX
程序段执行完,回答下述问题
RESULT+2字存储单元的内容=______ BX=______
程序循环次数=______
答: RESULT+2字存储单元的内容是MAX(X1, X2, ? XN) BX= 100H + 2×(COUNT-1) 程序循环次数= COUNT
18、下面程序的功能是什么? CXFX MOV AX,X CMP AX,Y JGE LAB XCHG AX,Y
LAB:MOV X,AX 答:选择X,Y中的较大值存入X中
19、某程序欲用单个字符显示的2号功能调用去显示STRING中的字符串‘COMPUTER’(不显示字符‘$’!).试在空白处填上适当的一条指令。 CXTK
STRING DB‘COMPUTER’,‘$’ ┇
26
MOV BX,0FFSET STRING LOP:MOV DL,[BX] MOV AH,02H INT 21H
_____ INC BX_______________ _____CMP [BX],24H________ JNE LOP
20下面程序段是判断寄存器AH和AL中第3位是相同,如相同,AH置0,否则AH置全1。试把空白处填上适当指令.CXTK
____ XOR AH,AL_______________ AND AH,08H
_____ JE ZERO______________ MOV AH,OFFH JMP NEXT
ZERO:MOV AH,0 NEXT:??
21、在表TABLE处存放着N个无符号字节数,求表中前10个字节数的总和并保存在AX寄存器中。如果总和值超过AX寄存器的容量,则置AX寄存器内容不变。请在程序中的空格处填入适当指令使其完整。 CXTK
LEA BX,TABLE (2) MOV CX,10 JC END0
MOV SUM,AX DON:INC BX MEXT: (1) (3)
ADC AH,0 ENDO:HLT
JNC DON 答: (1) ADD AL, [BX] (2) MOV AX, SUM (3) LOOP NEXT
22、试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。 BC 答: BEGIN:MOV AH,1 INT 21H
CMP AL,’a’ JB STOP
CMP AL,’z’ JA STOP SUB AL,20H MOV DL,AL MOV AH,2 INT 21H JMP BEGIN STOP:RET
23、试编制一源程序,统计DA1字单元中含0的个数,如统计的个数为奇数,则将进位位置1,否则进位位清0。 BC
DATA SEGMENT DA1 DW XXXX DATA ENDS
27
答:
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI,DA1 MOV CX,16 XOR BL,BL AGAIN: MOV AL,[SI] HL AL,1 JC NEXT INC BL NEXT:INC SI LOOP AGAIN TEST BL,01H JNE L1 CLC
JMP DONE L1: STC
DONE: MOV AH,4CH INT 21H CODE ENDS
END START
24、编定程序段,用DOS的1号功能调用通过键盘输入一字符,并判断输入的字符。如字符是\,则转向YES程序段;如字符是\,则转向NO程序段;如是其他字符,则转向DOS功能调用,重新输入字符。(考生勿需写出源程序格式,只需写出与试题要求有关的指令序列) (YES和NO分别是两程序段入口处的标号) BC
KEY:MOV AH,1 INT 21H
CMP AL,‘Y’ JE YES
CMP AL,‘N’ JE NO JMP KEY 答案:
DATA SEGMENT
BUF1 DW -56,24,54,-1,89,-8,---- BUF2 DW 45,-23,124,345,-265,---- SUM DW 10 DUP(0) DATA ENDS
STACK1 SEGMENT PARA STACK DW 20H DUP(0) STACK1 ENDS CODE SEGMENT
28
ASSUME CS:CODE,DS:DATA,SS:STACK1 START:MOV AX,DATA MOV DS,AX MOV CX,10 LEA SI,BUF1 LEA DI,BUF2 LEA BX,SUM
NEXT:MOV AX,[SI] MOV DX,[DI] TEST AX,8000H JE TDX NEG AX
TDX:TEST DX,8000H JE ADDS NEG DX
ADDS:ADD AX,DX MOV [BX],AX ADD SI,2 ADD DI,2 ADD BX,2 LOOP NEXT MOV AH,4CH INT 21H CODE ENDS END START 25、
LEA SI,STR MOV AL,ODH XOR CX,CX
GOON:CMP AL,[SI] JZ NEXT INC CX INC SI JMP GOON
NEXT:MOV COUNT,CX
字节变量STR中存放着一个字符串‘abcdefGHIJK’,以0DH为结束标志,上述指令序列完成的功能是 求字符串长度 ,执行以上指令后字变量COUNT= 11 。 CXFX
26、下列程序片段用来分别统计ARRAY数组中奇数和偶数的个数。请在空白处填写合适的指令。 CXTK
DATA SEGMENT
ARRAY DW 23ABH,1570H,567,1765H,46,5210H COUNT EQU ($-ARRAY)/2 DA1 DB ? DA2 DB ?
29
DATA ENDS ??
LEA SI,ARRAY MOV CX,COUNT LOP1:MOV AX,[SI]
TEST AX,0001H JZ LOP2 INC BL JMP LOP3 LOP2:INC BH
LOP3: ADD SI,2 DEC CX JNZ LOP1 MOV DA1,BL MOV DA2,BH
-1 x<0 27、编写计算下面函数值的程序 y= 0 x=0 1 x>0 其中,输入数据x和输出数据y均在数据段中定义,且皆为字节变量。DATA SEGMENT X DB 45H Y DB ?
DATA ENDS ;
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:MOV AX,DATA
MOV DS,AX MOV AL,XXX MOV AH,0 CMP AL,0
JGE NEXT1 MOV BL,-1
JMP OVER NEXT1:CMP AL,0
JE NEXT2 MOV BL,1
JMP OVER NEXT2:MOV BL,0 OVER: MOV ZZZ,BL
MOV AH,4CH INT 21H CODE ENDS
END START
30
BC