第4题
例如:
内存中为:4FH,83H,34H…
则结果为:26H,40H,18H…
部分程序已经给出,原始数据由过程LOAD从文件INPUT.DAT中读入以SOURCE开始的内存单元中。运算结果要求从 RESULT开始的内存单元存放,由过程SAVE保存到文件OUTPUT.DAT中。
请填空BEGIN和END之间已给出的源程序使其完整,空缺处已经用横线标出,空缺处一般只需要一条指令,但采用功能相当的多条指令也可以,考生也可以删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。
[试题程序]
EXTRN LOAD:FAR,SAVE:FAR
N EQU 10
DSEG SEGMENT
SOURCE DB N DUP(?)
RESULT DB N DUP(0)
NAME0 DB 'INPUT.DAT',0
NAME2 DB 'OUTPUT.DAT',0
DSEG ENDS
SSEG SEGMENT STACK
DB 256 DUP(?)
SSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG,SS:SSEG
START PROC FAR
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DSEG
MOV DS,AX
LEA DX,SOURCE
LEA SI,NAME0
MOV CX,N
CALL LOAD
; ******** BEGIN ********
LEA SI,SOURCE
LEA DI,RESULT
MOV BX,N
AGAIN: MOV AL,[SI]
MOV DX,0
MOV DL,AL
AND AX, (1)
MOV CL,3
(2) AX,CL
(3)
SUB AX,5
MOV CL,3
(4) AX,CL
MOV [DI],AL
INC SI
INC DI
DEC BX
(5)
; ****+**** END ********
LEA DX,RESULT
LEA SI,NAME1
MOV CX,N
CALL SAVE
RET
START ENDP
CSEG ENDS
END START
第5题
A、左移N位
B、右移N位
C、以上都对
D、以上都不对
第6题
请编制程序,其功能是:从20个有符号字节数据中取出负数并计算其绝对值之和(字型),然后存放在指定的内存区中,多余的空间填0。
例如:
内存中有:80H,02H,00H,7CH,7BH,81H……
结果为: 80H,FEH,FDH,05H,00H,00H……
部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,运算的结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。补充BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
对程序进行汇编,并与IO.OBJ链接产生执行文件,最终运行程序产生结果。调试中发现整个程序中存在错误之处,请加以修改。
试题程序:
EXTRN LOAD: FAR, SAVE: FAR
N EQU 20
STAC SEGMENT STACK
DB 256 DUP (?)
STAC ENDS
DATA SEGMENT
SOURCE DB N DUP(?)
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
MOV ES, AX
LEA DX, SOURCE ; 数据区起始地址
LEA SI, NAME0 ; 原始数据文件名
MOV CX, N ; 字节数
CALL LOAD ; 从'INPUT1.DAW'中读取数据
**** BEGIN ****
LEA SI, SOURCE
LEA DI, RESULT
MOV DX, 0
MOV CX, N
CLD
CON: LODSB
(1)
JGE (2)
MOV [DI], AL
INC DI
(3)
INC DI
ADD DL, AL
(4)
NEXT: LOOP CON
MOV [DI], DX
ADD DI, 2
MOV CX, 40
SUB CX, DI
MOV AL, (5)
(6)
; **** END ****
LEA DX, RESULT ; 结果数据区首址
第7题
例如:
原采集数据:1EH,31H,31H,33H,58H,75H,38H,34H,49H,A2H,98H,DFH,99H,64H,64H,B7H……
结果为:3DH,CCH……
部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件 OUTPUT1.DAT中。
填空BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。
试题程序:
EXTRN LOAD:FAR, SAVE:FAR
N EQU 10
STAC SEGMENT STACK
DB 128 DUP (?)
STAC ENDS
DATA SEGMENT
SOURCE DB 8*N DUP(0)
RESULT DB N DUP(0)
NAME0 DB 'INPUT1.DAT',0
NAME 1 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,8*N ; 字节数
CALL LOAD ; 从INPUT1.DAT中读取数据
; **** BEGIN ****
LEA SI,SOURCE
MOV (1)
MOV DX,N
MAGN1: XOR AX,AX
XOR BX,BX
MOV CX, (2)
MAGN2: MOV AL,[SI] ; 取数并求和放BX中
ADD BX, (3)
INC SI
(4)
MOV AX,BX
(5)
(6)
(7)
(8)
DEC DX
(9) MAGN1
; **** END ****
LEA DX,RESULT ; 结果数据区首址
LEA SI,NAME1 ; 结果文件名起始地址
MOV CX,N ; 字节数
CALL SAVE ; 保存结果到OUTPUT1.DAT文件中
RET
START ENDP
CODE ENDS
第8题
例如:
原采集数据 1EH,31H,31H,33H,58H,75H,38H,34H,49H,A2H,98H, DFH,99H,64H,64H,B7H,…
结果为 3DH,CCH,…
部分程序已经给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。
请填空BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程宋完成所要求的功能。
对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。
试题程序:
第9题
(1)子程序入口地址(标号):MAX;
(2)入口参数:SI=字数组首地址(位于数据段中);
CX=字数组元素个数;
(3)出口参数:AX=最大数;
第10题
Yi=(15*Yi-1/16)+(Xi/16),Y0=0
Yi(i=1,2…,20)为滤波后得到的新序列,结果存入内存。
例如:
内存中有01FFH,02FFH…
结果 001H,004DH…
部分程序已经给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,转换结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。
请填空BEGIN和END之间已经给出的一段源程序使其完整,需填空处已经用横线标出,每个空白一般只需要填一条指令或指令的一部分(指令助记符或操作数),也可以填入功能相当的多条指令,或删去BEGIN和END之间原有的代码并自行编程来完成所要求的功能。对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。
试题程序:
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!