题目
请编制程序,其功能为:内存中存放着10个二进制数,需对此数组进行加密。方法为将前一个字节数(两位十六进制数a1a2表示)的低位十六进制数a2与后一个字节数(两位十六进制数b1b2表示)的高位十六进制数b1进行交换:第一个字节数的高位十六进制数与最后一个字节的低位十六进制数进行交换,加密后的结果存入内存。
例如:内存中原始数据为:50H,61H,72H,83H,94H,…,E9H
结果:90H,07H,18H,29H,3AH,…,85H
部分程序已经给出,其中原始数据由LOAD 过程从文件INPUT1.DAT 中读入从SOURCE开始的内存单元,转换结果(要求从RESULT开始读入)由SAVE过程保存到OUTPUT1.DAT文件中。请在BEGIN和END之间补充使其完整,完成要求的功能。或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
对程序必须进行汇编,并与IO.OBJ链接产生PROG1. EXE执行文件,最终产生运行结果。
部分程序如下:
;PROG1.ASM
EXTRN LOAD:FAR, SAVE:FAR
N EQU 10
DSEG SEGMENT
SOURCE DW N DUP ()
RESULT DW N DUP (0)
NAME0 DB 'INPUT1.DAT',0
NAME1 DB 'OUTPUT1.DAT',0
DSEG ENDS
SSEG SEGMENT STACK
DB 128 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
MOV ES, AX
LEA DX,SOURCE
LEA SI,NAME0
MOV CX,N
CALL LOAD
; *** BEGIN ***
MOV DI,0
MOV SI,0
MOV CX,N
CONT: MOV AL, SOURCE [SI]
MOV AH,AL
AND AL,0FH
AND AH,0F0H
INC SI
CMP SI,N
____________
MOV SI,0
ONE: MOV BL, SOURCE [SI]
MOV BH,BL
AND BL,0FH
AND BH,0FOH
____________
MOV CX,4
LI: SBR BH, 1
SHL AL,1
LOOP L1
______,CX
OR AH,BH
OR AL,BL
CMP DI, 0
JNZ STOPE1
MOV SOURCE [SI] ,AL
DEC SI
MOV SOURCE [SI], AH
INC SI
JMP NEXT
STORE1: CMP DI, N-1
JL STORE2
MOV RESULT [DI], AH
MOV DI, 0
MOV RESULT [DI], AL
JMP NEXT
STORE2: MOV ______, AH
MOV ______, AL
NEXT: INC DI
LOOP CONT
; *** END ***
LEA DX, RESULT
LEA SI, NAME1
MOV CX, N
CALL SAVE
RET
START ENDP
CSEG ENDS
END START
第1题
请编制程序,其功能是:内存中连续存放着20个十六位二进制数,对每个数逻辑右移,使其最低位为"1"(值为零的字不变)。
例如:
内存中有A704H(1010011100000100B),0000H,9A58H…
结果为 29C1H(0010100111000001B),0000H,134BH…
部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。
请填空BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并白行编程来完成所要求的功能。
对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。
试题程序:
第2题
请编制程序,其功能是:内存中连续存放着20个无符号字节数序列,请将它们排成升序(从小到大)。
例如:
内存中有01H,04H,02H…(假设后17个字节均大与04H)
结果为 01H,02H,04H…(后跟17个字节,按从小到大的顺序排列)
部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。
请填空BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并白行编程来完成所要求的功能。
对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。
试题程序:
第3题
例如;
内存中有:01H,02H,03H ……
结果为:01H,02H,03H …… (参加运算的字节),后跟一个字(为前面各字节的和)
部分程序已经给出,其中原始数据由LOAD过程从文件INPUT1.DAT中读入从SOURCE开始的内存单元,运算结果要求从RESULT开始存放,由SAVE过程保存到OUTPUT1.DAT文件中。请在BEGIN和END之间补充使其完整,完成要求的功能。或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终产生运行结果。
部分程序如下:
;PROG1.ASM
EXTRN LOAD:FAR,SAVE:FAR
N EQU 20
DSEG SEGMENT
SOURCE DW N DUP ()
RESULT DW N DUP (0)
NAME0 DB 'INPUT1.DAT',0
NAME1 DB 'OUTPUT1.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 CX,N
MOV BX,0
NEXT: MOV AL,[SI]
____________
____________
MOV [DI],______
____________
____________
LOOP NEXT
MOV [DI],______
; *** END ***
LEA DX,RESULT
LEA SI,NAME1
MOV CX,N+2
CALL SAVE
RET
START ENDP
CSEG ENDS
END START
第4题
请编制程序,其功能是:内存中连续存放着16个12位无符号二进制数DB11DB10…DB0,其存放格式均为
DB11 DB10 DB9 DB8 DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0
请判别这16个12位二进制数是否大于800H:若大于800H,则相应地在内存中存入01H;否则,存入00H。最后存放这16个12位二进制数中大于800H的数的个数n(n用一个字节表示)。
例如:
内存中有12H,30H,84H,50H,80H,00H…
结果为 00H,01H,00H…(共16个字节),后跟n
部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。
请填空BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成所要求的功能。
对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。
试题程序:
第5题
请编制程序,其功能是:内存中连续存放着20个无符号二进制字序列Xi(i=1,2,…,20),字的最高3位为000,此序列对应某一信号在一段时间内的连续变化,现对该信号进行一阶低通数字滤波,其滤波方程为:
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链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。
试题程序:
第6题
例如:
数据为:09H,7EH,89H,F6H,17H……67H(N个数据)
结果为:7EH (最大数),F6H,81H,76H,0CH,E8H……98H(原N个数的逻辑反)
部分程序已经给出,其中原始数据由LOAD过程从文件INPUT1.DAT 中读入从SOURCE开始的内存单元,运算结果要求从RESIULT开始存放,由SAVE 过程保存到OUTPUT1.DAT 文件中。请在BEGIN和END 之间补充使其完整,完成要求的功能。或删除BEGIN和END 之间原有的代码井自行编程来完成要求的功能。
对程序必须进行汇编,并与IO. OBJ 链接产生PROG1. EXE 执行文件,最终产生运行结果。
部分程序如下;
;PROG1. ASM
EXTRN LOAD: FAR,SAVE:FAR
N EQU 30
DSEG SEGMENT
SOURCE DW N DUP ()
RESULT DW N DUP (0)
NAME0 DB 'INPUT1.DAT,0
NAME1 DB 'OUTPUT1.DAT',0
DSEG ENDS
SSEG SEGMENT STACK
DB 128 DHP ()
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
MOV ES, AX
LEA DX,SOURCE
LEA SI,NAME0
MOV CX,N
CALL LOAD
; *** BEGIN ***
______ SI,SOURCE
MOV BX,OFFSET SOURCE
LEA DI,RESULT
L1: MOV CX,N
MOV DX,CX
DEC DX
MOV AL,______
L2: INC BX
______ AL,[BX]
______________
MOV AL,[BX]
L3: DEC DX
JNZ______
MOV [DI],AL
INC DI
CLD
MAX: LODSB
NOT AL
______________
LOOP MAX
; *** END ***
LEA DX,RESULT
LEA SI,NAME1
MOV CX,N
CALL SAVE
RET
START ENDP
CSEG ENDS
END START
第7题
例如:
内存中有61H('a'),62H('b'),31H('1'),41H('A'),42H('B')…
结果为 41H('A'),42H('B'),31H,41H('A'),42H('B')…
部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。
请填空BEGIN和END之间已给出的源程序使其完整(空白己用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成所要求的功能。
对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。
试题程序:
第8题
请编制程序PROG1.ASM,其功能是:内存中从SOURCE开始连续存放着20个字(WORD),试统计每个字中二进制位为1的个数。结果以字节存放。例如:内存中有139CH,518CH,1489H,…,结果为07H,08H,05H,….
部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。
填空BEGIN和END之间已给出的源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
对程序必须进行汇编,并与IO.OBJ连接生成PROG1.EXE执行文件,最终运行程序产生结果 (无结果或结果不正确者均不得分)。
注意:源程序非填空部分可能存在个别非法指令,考生阅读源程序或调试该程序时若发现这些非法指令,请加以修改!
EXTRN LOAD:FAR,SAVE:FAR
N EQU 20
STAC SEGMENT STACK
DB 128 DUP()
STAC ENDS
DATA SEGMENT
SOURCE DW N DUP()
RESULT DB NDUP(0)
NAMEO 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 S1,NAMEO ;原始数据文件名
MOV CX,N * 2 ;字节数
CALL LOAD ;从INPUT1.DAT中读取数据
; * * * * BEGIN * * * *
LEA SI,SOURCE
LEA DI,RESULT
CLD
MOV DX,N
LOOP0: LODS _____
_______
MOV CX,16
LOOP1: ROL AX,1
J_____ NEXT
INC BX
NEXT: LOOP _____
MOV [D1],BL
______
DEC DX
JNZ LOOP0
; * * * * END * * * *
LEA DX,RESUIT ;结果数据区首址
LEA SI,NAME1 ;结果文件名
&nbs
第9题
a)Y=X×80 X≤6
b)Y=X×120 6<X≤10
c)Y=X×160 X>10
计算每个用户需要交的天然气费,结果用字表示,并将结果存入指定单元。
例如:
用天然气量:05H,07H,12H……
天然气费: 0190H,0348H,0780H……
部分程序已经给出,其中原始数据由过程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 DW N DUP(0)
A DB 80
B DB 120
C DB 160
NAME0 DB 'INPUT.DAT',0
NAME1 DB 'OUTPUT.DAT',0
DSEG ENDS
SSEG SECMENT 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
CLD
MOV CX,N
AGAIN: MOV AL,[SI]
CMP AL,6
JA (1)
(2)
JMP NEXT
LIMIT6:CMP AL,10
JA (3)
(4)
JMP NEXT
LIMIT10: (5)
NEXT: MOV [DI],AX
INC SI
ADD DI,2
LOOP AGAIN
; ******** END ********
LEA DX,RESULT
LEA SI,NAME1
MOV CX,N*2
CALL SAVE
RET
START ENDP
CSEG ENDS
END START
第10题
例如:内存中:0010H,0100H,0200H……
近似方根:0004H,0010H,0016H……
部分程序已经在PROG1中给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入,存放在SOURCE开始的内存单元中,转换结果存放在RESULT开始的内存单元中,并由过程SAVE保存到文件OUTPUT1.DAT文件中。
对BEGIN和END之间已经给出的源程序填空,使其完整,填空处已经用横线标出,每个空白一般只需填一条指令或指令的一部分;考生也可填入功能相当的多条指令,或删去 BEGIN和END之间原有的代码自行编制程序完成相应的要求。
对程序必须进行汇编并与IO.OBJ连接产生可执行文件,最终运行程序产生结果(无结果和结果不正确均不得分)。
部分源程序如下:
EXTRN LOAD:FAR,SAVE:FAR
N EQU 10
STACK SEGMENT
DB 128 DUP()
STACK ENDS
DATA SEGMENT
SOURCE DW N DUP()
RESULT DW N DUP(0)
NAMED DB 'INPUT1. DAT',
NAME1 DB 'OUTPUT1. DAT',
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS : DATA,SS : STACK
START PROC FAR
PUSH DS
XOR AX, AX
PUSH AX
MOV AX, DATA
MOV DS; AX
LEA DX, SOURCE
LEA SI, NAMFO
MOV CX, N * 2
CALL LOAD
**********BEGIN**************
LEA DI, RESULT
LEA SI, SOURCE
MOV CX, N
LOOP0: MOV AX, [SI]
MOV BX, 0
LOOP1: (1)
SUB AX, BX
(2) , STORE0
(3)
IMP LOOP1
STOREO: INC BX
(4)
MOV [DI], BX
INC DI
(5)
INC SI
(6) ,
LOOP LOOP0
***************END*************
LEA DX, RESULT
LEA SI, NAME1
MOV CX, N * 2
CALL SAVE
RET
START ENDP
CODE ENDS
&nbs
为了保护您的账号安全,请在“赏学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!