计算机等级考试三级PC上级题汇总(1)1
添加时间: 2007-5-24 4:02:24 作者: 计算机等级考试认证参考 阅读次数:36 来源: http://www.d9soft.com
PC上机题之一
;* 请编制程序PROG1.ASM, 其功能是: 内存中连续存放的二十
;* 个八位有符号数(补码)是由一个八位A/D转换器采集的双极性信
;* 号(Xn), 现要求对该信号作如下限幅处理 (处理后的信号记为
;* Yn):
;* a). Yn= -100 Xn<-100
;* b). Yn= Xn │Xn│<=100
;* c). Yn= 100 Xn>100
;* 例如:
;* Xn: 67H,61H,8EH,38H,...
;* Yn: 64H,61H,9CH,38H,...
;* 部分程序已在PROG1.ASM中给出, 请填空BEGIN和END之间已给
;* 出的源程序使其完整(空白已用横线标出, 每行空白一般只需一条
;* 指令, 但功能相当的多条指令亦可)或删除BEGIN和END之间原有的
;* 代码并自行编写程序片段来完成要求的功能。
;* 原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内
;* 存单元中, 结果要求从RESULT开始存放, 由过程SAVE保存到文件
;* OUTPUT1.DAT中。
;* 对程序必须进行汇编, 并与IO.OBJ链接产生PROG1.EXE 执行文
;* 件, 最终运行程序产生结果(无结果或结果不正确者均不得分)。
EXTRN LOAD:FAR,SAVE:FAR
N EQU 20
MAX_VAL EQU 100
STAC SEGMENT STACK
DB 128 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
LEA DX,SOURCE ; 数据区起始地址
LEA SI,NAME0 ; 原始数据文件名起始地址
MOV CX,N ; 字节数
CALL LOAD ; 从"input1.dat"中读取数据
; **** BEGIN ****
LEA SI,SOURCE
LEA DI,RESULT
mov cx,N
;____________________
NEXT: MOV AL,[SI]
CMP AL,-MAX_VAL
jl LESS
;J__ LESS
CMP AL,MAX_VAL
jl store
;______________________
MOV AL,MAX_VAL
JMP STORE
LESS: MOV AL,-MAX_VAL
STORE: MOV [DI],AL
inc si
inc di
loop next
;______________________
;______________________
;______________________
; **** END ****
LEA DX,RESULT ; 结果数据区首址
LEA SI,NAME1 ; 结果文件名起始地址
MOV CX,N ; 字节数
CALL SAVE ; 保存结果到"output1.dat"文件中
RET
START ENDP
CODE ENDS
END START
input1.dat 内容如下:
1C 65 7F 72 63 56 D3 99 D9 39 75 83 C8 2D 61 7E 43 8E 6C 61
output1.dat 内容应当如下:
1C 64 64 64 63 56 D3 9C D9 39 64 9C C8 2D 61 64
43 9C 64 61
PC上机题之二
io.obj 与以前几次考试的相同
以下内容为程序代码:
;* 请编制程序PROG1.ASM, 其功能是: 内存中连续存放着10个用
;* ASCII码表示的十进制个位数,将它们转换成相应的二进制无符号
;* 字节N0, N1,…, N9, 并统计N0, N1,…, N9中大于等于5的十进制
;* 数的个数n。转换结果按原序存放,之后存放n(n用字节表示)。
;* 例如:
;* 内存中有 30H('0'),39H('9'),31H('1'), …
;* 结果为 00H,09H,01H,…,(后跟n,n为N0,N1,…, N9中大于
;* 等于5的十进制数的个数)
;* 部分程序已给出,其中原始数据由过程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 N DUP(?)
RESULT DB N+1 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 ****
MOV DI,OFFSET RESULT
MOV BX,0
MOV CX,N
mov dl,0
;MOV DL,__
PRO: MOV AL,[BX]
sub al,30h
;SUB AL,___
CMP AL,05
jl jump
inc dl
;__ JUMP ; 小于5
;INC __ ; 大于等于5
JUMP: MOV [DI],AL
INC BX
INC DI
DEC CX
JNZ PRO
mov [di],dl
;_______________
; **** END ****
LEA DX,RESULT ; 结果数据区首址
LEA SI,NAME1 ; 结果文件名
MOV CX,N+1 ; 结果字节数
CALL SAVE ; 保存结果到文件
RET
START ENDP
CODE ENDS
END START
input1.dat 内容如下:
30 39 31 38 32 37 33 36 34 35
output1.dat 内容应当如下:
00 09 01 08 02 07 03 06 04 05 05
上机题之三
以下内容为程序代码:
;* 请编制程序PROG1.ASM,其功能是:
;* 对内存中存放的20个带符号8位二进制数进行处理。处理方法
;* 为:大于等于+64的数用ASCII字符'>'(3EH)表示;大于0小于+64的数
;* 用ASCII字符'+'(2BH)表示;等于0的数用ASCII字符'0'(30H)表示;
;* 小于0大于-64的数用ASCII字符'-'(2DH)表示; 小于等于-64的数用
;* ASCII字符'<'(3CH)表示。
;* 例如:
;* 内存中有 00H,01H,3FH,40H,41H,7EH,7FH,80H,FFH,C0H,…
;* (共20个字)
;* 结果为 30H,2BH,2BH,3EH,3EH,3EH,3EH,3CH,2DH,3CH,…
;* (共20个ASCII码)
;* 部分程序已给出, 其中原始数据由过程LOAD从文件INPUT1.DAT
;* 中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,
;* 由过程SAVE保存到文件OUTPUT1.DAT中。
;* 请在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 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
LEA DX,SOURCE ; 数据区起始地址
LEA SI,NAME0 ; 原始数据文件名
MOV CX,N ; 字节数
CALL LOAD ; 从 'INPUT1.DAT'中读取数据
; **** BEGIN ****
LEA SI,SOURCE
LEA DI,RESULT
mov cx,N
NEXT: MOV AL,[SI]
CMP AL,0
jl fu
jg zheng
mov al,30h
jmp store
fu: CMP AL,-64
jle less
mov al,2dh
jmp store
less: mov al,3ch
jmp store
zheng: cmp al,64
jge great
mov al,2bh
jmp store
great: mov al,3eh
STORE: MOV [DI],AL
inc si
inc di
dec cx
jne next
; **** END ****
LEA DX,RESULT ; 结果数据区首址
LEA SI,NAME1 ; 结果文件名
上一篇文章: 考试复习资料:C语言出错中英文对照表 下一篇文章: 计算机等级考试三级PC上级题汇总(1)2

