v1.0 可编辑可修改 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的个数,如统计的个数为奇数,则将进位位置
3131
v1.0 可编辑可修改 1,否则进位位清0。 BC
DATA SEGMENT DA1 DW XXXX DATA ENDS 答: CODE SEGMENT
ASSUME CS:CODE,DS:DATA AX,DATA MOV DS,AX LEA SI,DA1 MOV CX,16 XOR BL,BL 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
3232
START: MOV AGAIN: MOV v1.0 可编辑可修改 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
ASSUME CS:CODE,DS:DATA,SS:STACK1 START:MOV AX,DATA MOV DS,AX MOV CX,10 LEA SI,BUF1 LEA DI,BUF2
3333
LEA BX,SUM NEXT:MOV AX,[SI] MOV DX,[DI] TEST AX,8000H JE TDX NEG AX
TDX:TEST DX,8000HJE 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
v1.0 可编辑可修改 3434
v1.0 可编辑可修改 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 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
3535