9、以BUF为首址的字节单元中,存放了COUNT个无符号数,下面程序段是找出其中最大数并送入MAX单元中。 CXTK
BUF DB 5,6,7,58H,62,45H,127,?? COUNT EQU $-BUF MAX DB?
┇
MON BX,OFFSET BUF MOV CX,COUNT-1 MOV AL,[BX] LOP1:INC BX
____ CMP AL,[BX]_______ __ JAE NEXT MOV AL,[BX] NEXT:DEC CX
_____ JNZ LOP1___________ MOV MAX,AL
10、编程序段计算SUM=∑ai=a1+a2+...+a20,已知a1......a20依次存放在以BUF为首址,i=1的数据区,每个数据占两个字节,和数SUM也为两个字节。(要求用循环结构编写,循环控制采用计数控制)。(此题勿需书写源程序格式,只需把试题要求的有关指令序列书写出来。) CX
MOV AX,0
MOV BX,OFFSET BUF
MOV CX,20
LOP:ADD AX,[BX] INC BX INC BX
LOOP LOP MOV SUM,AX
11、试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。 CX 答: 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 12、
AND AL,AL JZ BRCH1 RCR AL,1
16
JZ BRCH2
RCL AL,1 INC AL JZ BRCH3 :
上述程序运行后,试回答: CXFX
(1)当(AL)=__0________时,程序转向BRCH1 (2)当(AL)=__1________时,程序转向BRCH2 (3)当(AL)=__-1________时,程序转向BRCH3 13、下面程序的功能是什么? CXFX MOV CH,4 LAB:MOV CL,4 ROL BX,CL MOV DL,BL AND DL,0FH ADD DL,30H CMP DL,3AH JL PRINT ADD DL,7 PRINT:MOV AH,02 INT 21H
DEC CH JNZ LAB
显示输出BX寄存器里的内容 14、阅读如下程序: CXFX
ADRR DB XXH,XXH,??,XXH CMP ADRR[BX],0 NUM EQU $ -ADRR LOOPZ DON RETT DB? JNZ NEXT ? MOV BL,OFFH
MOV CX,NUM NEXT:MOV RETT,BL MOV BX,-1 HLT DON:INC BX
请问:(1)该程序完成的功能是什么?(2)程序执行后指出RETT字节单元中的内容是什么? 答:(1) 在以ADRR为起始地址的数组中,查找第一个非0数据。
(2) 若找到则将第一个非0数据在数组中的偏移量送入RETT单元中;若无非0数据,则将OFFH送入RETT单元中。
15、现有一子程序: CXFX
SUB1 PROC PLUS:TEST BL,80H TEST AL,80H JE EXITO JE PLUS XCHANGE:XCHG AL,BL TEST BL,80H EXITO:RET JNE EXITO SUB1 ENDP JMP XCHANGE 试回答:
17
(1)子程序的功能是什么?
(2)若调用子程序前AL=9AH,BL=77H,则返回主程序时,AL=______,BL=______。 答:(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
18
STRING DB‘COMPUTER’,‘$’ ┇
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
19
DA1 DW XXXX
DATA ENDS 答:
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)
20