计算机等级考试三级PC上级题汇总(1)2
添加时间: 2007-5-22 4:04:43 作者: 计算机等级考试认证参考 阅读次数:34 来源: http://www.d9soft.com
MOV CX,N ; 结果字节数
CALL SAVE ; 保存结果到文件
RETSTART ENDPCODE ENDS
END START
input1.dat 内容如下:
C0 FF 80 7F FE 41 40 3F 01 00 00 01 3F 40 41 FE 7F 80 FF C0
output1.dat 内容应当如下:
3C 2D 3C 3E 2D 3E 3E 2B 2B 30 30 2B 2B 3E 3E 2D 3E 3C 2D 3C
上机题之四
以下内容为程序代码:
请编制程序PROG1.ASM, 其功能是: 内存中连续存放的二十个八位无符号数是一个自动抄表仪抄录的二十个用户某月的用水量(立方米),为了控制用水量,水费计算公式如下(X表示用水量; Y表示水费,单位为分):
a). Y= X*70 X<=10
b). Y= 10*70+(X-10)*120 X>10
例如:
用水量(X): 04H, 0FH, 18H,...
水费( Y ): 0118H,0514H,094CH,...试计算出这二十个用户应缴纳的水费, 结果用字(word)表示。部分程序已在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
RATE1 EQU 70
RATE2 EQU 120
DELTA EQU 10
STAC SEGMENT STACK
DB 128 DUP (?)
STAC ENDS
DATA SEGMENT
SOURCE DB N DUP(?)
RESULT DW 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
CLD
MOV CX,N
MOV BL,RATE1
MOV BH,RATE2
NEXT: mov al,[si]
;_________________________
CMP AL,DELTA
ja great
;J__ GREAT
MUL BL
JMP STORE
GREAT: sub ax,delta
;_________________________
MUL BH
add ax,delta*rate1
;_________________________
STORE: mov [di],ax
add di,2
;_________________________
;_________________________
INC SI
LOOP NEXT
; **** END ****
LEA DX,RESULT ; 结果数据区首址
LEA SI,NAME1 ; 结果文件名起始地址
MOV CX,N*2 ; 字节数
CALL SAVE ; 保存结果到"output1.dat"文件中
RET
START ENDP
CODE ENDS
END START
input1.dat 内容如下:
05 03 0A 22 0C 03 04 05 19 0C 0B 04 03 11 10 01 15 83 0F 0A
output1.dat 内容应当如下:
5E 01 D2 00 BC 02 FC 0D AC 03 D2 00 18 01 5E 01 C4 09 AC 03 34 03 18 01 D2 00 04 06 8C 05 46 00 E4 07 74 3B 14 05 BC 02
上机题之五
以下内容为程序代码:
请编制程序PROG1.ASM, 其功能是: 计算10×3矩阵中每一行元素(八位二进制数)之和, 并将其存放在指定的内存区中。
例如:
内存中有 0,0,0(第1行),1,1,1(第2行),.....,9,9,9(第10行)
结果为 0000H,0003H,...,001BH
部分程序已经给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中, 转换结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。
填空BEGIN和END之间已经给出的一段源程序使其完整,填空处已经用横线标出, 每个空白一般只需要填一条指令或指令的一部分(指令助记符或操作数), 考生也可以填入功能相当的多条指令, 或删去BEGIN和END之间原有的代码并自行编程来完成要求的功能。
对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。
EXTRN LOAD:FAR,SAVE:FAR
N EQU 30
DSEG SEGMENT
SOURCE DB N DUP(?)
RESULT DW N/3 DUP(0)
I EQU 10
J EQU 3
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,SS:SSEG,DS:DSEG
START PROC FAR
RET
START ENDP
CODE ENDS
END START
input1.dat 内容如下:
20 20 30 31 32 20 33 34 35 36 20 20 37 38 39 20 33 32 31 20
output1.dat 内容应当如下:
24 24 00 01 02 24 03 04 05 06 24 24 07 08 09 24 03 02 01 24
上一篇文章: 计算机等级考试三级PC上级题汇总(1)1 下一篇文章: 2005年4月2日三级网络标准答案及试题(网友推荐)

