22、数据段: BUF DB 15,?,15 DUP() 代码段: MOV AH,0AH MOV DX,OFFSET BUF INT 21H 若用户执行该程序段,从键盘输入字符串‘ABCDE’并回车后,BUF+1字节单元的内容是______H;BUF+2字节单元的内容是______H;BUF+7字节单元的内容是__________H。(注答案和答案之间用一个半角空格分开,英文字符全部大写,并且为半角字符。)
第1题:
完成下面的程序段,使程序显示中的字符串。
DATA SEGMENT
BUE DB ‘HOW DO YOU DO?’,ODH,OAH,’$‘
┆
DATA ENDS
CODE SEGMENT
┆
MOV AX,DATA
MOV DS,AX
┆
MOV DX【 】
MOV AH, 9
INT 21H
┆
CODE ENDS
第2题:
根据下面的程序段,AL寄存器中的数据是( )。 BUF DW 2152H,3416H,5731H,4684H MOV BX,OFFSET BUF MOV AL,3 XLAT
A.46H
B.57H
C.16H
D.34H
第3题:
执行下面的程序段后,AL中的内容是( )。 BUF 0W 1234H, 5678H, 0001H MOV BX, OFFSET BUF MOV AL,2 XLAT
A.12H
B.34H
C.56H
D.78H
第4题:
现有汇编语言目标程序A和B,它们的数据段类别名相同,组合类型皆为COMMON。若A程序数据段中有字符串‘ABC’,B程序数据段中有字符串‘DEF’,则执行LINK A+B操作后,产生的目标程序数据段中0000H单元的内容是( )。
A.A
B.D
C.41H
D.44H
第5题:
执行下面的程序段后,102H单元中的数据是( )。 ORG 100H DAT DB 12H,13H,14H MOV BX,OFFSET DAT INC BYTE PTR[BX] INC BX DEC BYTE PTR [BX] HLT
A.15H
B.12H
C.13H
D.14H
第6题:
执行下面的程序段后,AL中的内容是______。 BUF DW 1234H,5678H,0001H MOV BX,OFFSETBUF MOV AL,2 XLAT
A.12H
B.34H
C.56H
D.78H
第7题:
有程序如下: BUF DB. 12H,23H,34H,45H,56H,67H,78H,89H,91H MOV SI,O MOV AL,[ BUF +SI] LP: INC SI CMP SI,9 JAE EXIT CMP AL,[BUF +SI] JLE NEXT()MOV AL,[BUF +SI] A22:JMP LP EXIT:INT 3 程序执行后AL=?该程序的功能是什么?
第8题:
若NUM单元中的内容为23H,程序段如下:MOV AL, NUMOR AL, ALJZ ZERO:JS NUBYS;PLUS: MOV DL,‘+’;JMP EXITNUBYS: MOV DL.‘一’JMP EXITZERO: MOV DL.‘0’EXIT: MOV AH,2INT 21H......;说明程序执行后,屏幕上显示什么?
第9题:
已知下列程序: D1 DB 10 DUP(?) D2 DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H ┇ MOV CX,LENGTH D1 MOV SI,SIZE D1—TPYE D1 LP:MOV AL,D2[SI] MOV D1[SI],AL SUB SI,TYPE D1 DEC CX JNZ LP HLT 问: (1)该程序执行后,D1单元开始的10个字节内容是什么? (2)该程序完成的功能是什么?
第10题:
CMP BUF1,BYTE PTR BUF2+3
MOV AL,BUF1 CMP AL,BUF2+2
MOV AL,BUF1 CMP AL,BYTE PTR BUF2+2
MOV AL,BUF1 CMP AL,BUF2+3
第11题:
第一
第二
第三
第四
第12题:
第13题:
执行下面的程序段后,AL中的内容是( )。 BUF DW 1221H,5665H,0001H MOV BX,OPFSET BUF MOV AL,2 XLAT
A.12H
B.21H
C.56H
D.65H
第14题:
执行下面的程序段 ORG 100H DAT DB 12H,13H,14H MOV BX,OFFSET DAT INC BYTE PTR[BX] INC BX DEC BYTE FFR [BX] HLT 之后,102H单元中的数据是( )
A.15H
B.12H
C.13H
D.14H
第15题:
请编制程序,其功能是;内存中共有30个字节型数据,找出其中的两个ASCII字符串并进行校验。欲寻找的ASCII字符串由13个字符组成:(23H),7个ASCII字符,*(2AH),2个ASCII字符,回车符(0DH),换行符(0AH)。
校验方法为:对字符及字符,之间的7个ASCII字符进行异或操作,若异或操作结果的ASCII字符表示(异或操作结果高4位的ASCII字符表示在前,低4位的ASCII字符表示在后)与原字符串中字符,之后的两个ASCII字符相同,则将原字符串原样保存:反之,则将原字符串中的所有字符(共13个)均用字符!(21H)代替。
例如:
内存中有:33H,35H,23H('',第一个字符串开始),46H,41H,30H,2EH,34H,3DH,31H,2AH(''),32H,
31H,ODH,OAH,46H,23H('',第二个字符串开始),46H,41H,30H,2EH,34H,46H,41H,
30H,46H,41H,30H,2EH,34H,3DH,30H,2AH('*'),32H,31H,ODH,OAH,55H
结果为:23H,46H,41H,30H,2EH,34H,3DH,31H,2AH('*'),32H,31H(校验正确,该字符串原样保持),
ODH,OAH,21H,21H,21H,21H,21H,21H,21H,21H,21H,21H,21H,21H,21H(校验错,整个字符串用字符“!”代替)
部分程序已给出,其中原始数据由过程LOAD从文件INPUT.DAT中读入SOURCE开始的内存单元中。运算结果要求从 RESULT开始存放,由过程SAVE保存到文件OUTPUT.DAT中。
请填空BEGIN和END之间已给出的源程序使其完整,空白已用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可,或删除BEGIN和END之间原有的代码并自行编程来完成所要求的功能。
对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。
【试题程序】
EXTRN LOAD:FAR, SAVE:FAR
N EQU 26
STAC SEGMENT STACK
DB 128 DUP (?)
STAC ENDS
DATA SEGMENT
SOURCE DB N+4 DUP(?)
RESULT DB N DUP(0)
HH DB 2 DUP(0)
NAME0 DB 'INPUT.DAT',0
NAME1 DB 'OUTPUT.DAT',0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STAC
START PROC FAR
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
LEA DX, SOURCE ; 数据区起始地址
LEA SI,NAME0 ; 原始数据文件名
MOV CX, N+4 ; 字节数
CALL LOAD ; 从'INPUT. DAT' 中读取数据
;******** BEGIN ********
MOV SI,0
MOV DI,0
MOV BX,2 ; 两个ASCII 字符串
REPEAT: MOV AH,0
SEARCH: MOV AL,SOURCE[SI]
INC SI
CMP AL,''
(1) SEARCH
MOV RESULT[DI],AL
INC DI
SEARCH1: MOV AL,SOURCE[SI]
INC SI
CMP AL, (2)
JE ASCII
&nb
第16题:
请编制程序PROC1.ASM,其功能是:内存中有一个ASCII字符串(从S0URCE开始存放),试将其中所有连续的回车与换行符(0DH,0AH)置换成单个回车符(0DH)。字符串以00H结尾,长度(包括00H)不超过100个字节。
例如:字符串41H,42H,0DH,0AH,43H,00H
转换为41H,42H,0DH,43H,00H
部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUT- PUT1.DAT中。请编写BECIN到END之间的代码。对程序必须进行汇编,并与IO.OBJ连接产生PROC1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。
部分源程序如下:
EXTRN LOAD:FAR,SAVE:FAR
N EQU 100
STAC SEGMENT STACK
DB 128 DUP (?)
STAC ENDS
DATA SEGMENT
SOURCE DB N DUP (0)
RESULT DB N DUP (0)
NAME0 DB 'INPUT1. DAT', 0
NAME1 DB 'OUTPUT1. DAT', 0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STAC
START PROC FAR
PUSH DS
XOR AX, AX
PUSH AX
MOV AX, DATA
MOV DS, AX
LEA DX, SOURCE ; 数据区起始地址
LEA SI, NAME0 ; 原始数据文件名
MOV CX,N ; 字节数
CALL LOAD ; 从"INPUT1.DAT"中读取数据
**** BEGIN ****
***** END *****
LEA DX, RFSULT ; 结果数据区首址
LEA SI, NAME1 ; 结果文件名
MOV CX,N ; 结果字节数
CALL SAVE
RET
START ENDP
CODE ENDS
END START
编程思路:
第一步:分析程序要求的功能。
本程序需要完成以下功能。
(1)据文件INPUT1.DAT中读取100个ASCII码存放在SOURCE开始的内存单元中。
(2)将SOURCE开始的100个字单元中的ASCII码,将0DH后的0AH删除,并将结果存放在RFSULT开始的内存单元中。
(3)将结果存放在OUTPUT1.DAT中。
第二步:用相应的汇编程序来实现其功能。
(1) 数据的读取和存入文件部分的实现,题目中已经给出。
(2) 如果是将数据在原地进行处理,那么每删除一个数据就要将其后面的所有数据向前移动一个位置,如果直接将扫描处理完毕的数据复制到结果地址中,将会节省移动数据的开销;
因为要删除0DH后面的0AH,所以,在扫描数组的过程中除了要了解当前数据元素的内容还要了解前一个数据的内容。解决方法可使用标志单元记录前一个数据是否为 0DH,然后当前数据元素根据标志单元的内容决定当前元素是否复制到结果中;也可在扫描数组的过程中,如果碰到一个0DH,则进入不同的程序段,这个程序段决定是否将当前数据元素复制到结果中。我们的参考答案采用了后一种方法。
第17题:
执行下面的程序段后,AL 中的内容是( )。 BUF DW 2152H,3416H,5731H,4684H MOV BX,OFFSET BUF MOV AL,3 XLAT
A.46H
B.57H
C.16H
D.34H
第18题:
执行下面的程序段后,AX寄存器中的内容是______。 ARRAY DW 10 DUP(2) XOR AX, AX MOV CX,0AH MOV SI,12H NEXT: ADD AX,ARRAY [SI] SUB S1,2H Loop NEXT
A.20
B.30
C.32
D.40
第19题:
设8251的数据口地址为200H,控制口地址为201H,已完成初始化。要求用查询的方式接收8251串行口字符数据,并把该字符显示出来。试填空完善该程序段。 LOOP:MOV DX,() IN AL.DX TEXT AL.02 JZ LOOP MOV DX,() IN AL, () MOV DL,() MOV AH,() INT 21H JMP LOOP
第20题:
请阅读下列程序,分析其功能。MESS DB‘PRESS ANY KEY’,0DH,0AH,‘$’MOV AH,09MOV DX,SEG MESSMOV DS,DXMOV DX,OFFSETMESSINT 21H
第21题:
数据定义如下:BUF1 DB 10 BUF2 DW 20DUP(?) 实现将BUF1单元的内容与BUF2开始的条三个字节单元内容相比较的指令是()。
第22题:
OBH
42H
62H
A8H
第23题:
第24题: