您的位置 企业管理资料下载大全,策划方案 >> 计算机考试认证 >> 计算机等级考试三级PC技术 >> 全国三级PC技术上机编程题10道

全国三级PC技术上机编程题10道

来源:管理策划编辑:Admin2007-11-10 16:10:14

第一套

===============================================================================

试题说明 :

===============================================================================

 请编制程序PROG1.ASM,其功能是:内存中连续存放着二个无

符号字节序列A(k)和B(k)(k=0,…,9;下同),求序列C(k),C(k)=A(k)+B(k)。

C(k)以字的形式按C(0),…,C(9)的顺序连续存放。

 例如:

 序列A(k)为30H,31H,61H,FFH,…;

 序列B(k)为00H,01H,F1H,0AH,…。

 则结果C(k)为0030H,0032H,0152H,0109H,…。

 部分程序已给出, 其中原始数据由过程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*2 DUP(?) ; 顺序存放A0,…,A9,B0,…,B9

RESULT DW N DUP(0) ; 顺序存放C0,…,C9

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,DATAr> MOV DS,AX

 LEA DX,SOURCE ; 数据区起始地址

 LEA SI,NAME0 ; 原始数据文件名

 MOV CX,N*2 ; 字节数

 CALL LOAD ; 从 ’INPUT1.DAT’中读取数据

; **** BEGIN ****

 MOV DI,___________

 MOV BX,__

 ___________________

PRO: MOV AH,0

 MOV AL,SOURCE[BX+10] ; 序列Bk中的一个字节

 __________________________ ; Ck=Bk+Ak

 JNC JUMP ; 无进位转JUMP

 __________________ ; 有进位,进位入AH

JUMP: MOV [DI],AX ; Ck=Bk+Ak的字的形式存入RESULT

 INC BX

 ________________

 DEC CX

 JNZ PRO

; **** END ****

 LEA DX,RESULT ; 结果数据区首址

 LEA SI,NAME1 ; 结果文件名

 MOV CX,N*2 ; 结果字节数

 CALL SAVE ; 保存结果到文件

 RET

START ENDP

CODE ENDS

END START

===============================================================================

所需数据 :

===============================================================================

@2 input1.dat 001

FF 80 7F 00 7F 80 FF 80 81 00 FF FF 80 00 81 00 00 81 FE FF

#E

@3 $output1.hex 001

01FE80FE00FFFFFFFFFE7FFF00FFFEFE80FE00FF7F

#E



第二套

===============================================================================

试题说明 : ===============================================================================

 请编制程序PROG1.ASM, 其功能是: 内存中连续存放着二个有

符号字节序列A(k)和B(k)(k=0,…,9;下同),求序列C(k),C(k)=A(k)-B(k)。

C(k)以有符号字的形式按C(0),…,C(9)的顺序连续存放。

 例如:

 序列A(k)为30H,80H(-128D),7FH(127D),…;

 序列B(k)为00H,7FH(127D),80H(-128D),…。

 则结果C(k)为0030H,FF01H,00FFH,…。

 部分程序已给出,其中原始数据由过程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*2 DUP(?) ; 顺序存放A0,…,A9,B0,…,B9

RESULT DW N DUP(0) ; 顺序存放C0,…,C9

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*2 ; 字节数

 CALL LOAD ; 从 ’INPUT1.DAT’中读取数据

; **** BEGIN ****

 LEA DI,RESULT ; 结果从RESULT开始存放

 MOV CX,N

 MOV BX,0

 MOV AH,0

PRO: MOV AL,SOURCE[BX] ; 序列Ak中的一个字节

 MOV DH,AL

 ___________________ ; Ck=Ak-Bk

 JNO STAY ; 无溢出转STAY

 ADD DH,0 ; 有溢出

 ___ DEC1 ; Ak为正数(为一个正数减去一个负

 ; 数,结果为负数的溢出情况)转DEC1

 MOV AH,____ ; Ak为负数(为一个负数减去一个正

 ; 数,结果为正数的溢出情况)将结果

 ; 变为有符号字的形式(为负)

 JMP _____

DEC1: MOV AH,00H ; 将结果变为有符号字的形式(为正)

 JMP _____

STAY: ____ ; AL中数的符号扩展到AH,正的字节

 ; 变成正的字,负的字节变成负的字

JUMP1: MOV [DI],AX

 ADD DI,2

 INC BX

 DEC CX

 JNZ PRO

; **** END ****

 LEA DX,RESULT ; 结果数据区首址

 LEA SI,NAME1 ; 结果文件名

 MOV CX,N*2 ; 结果字节数

 CALL SAVE ; 保存结果到文件

 RET

START ENDP

CODE ENDS

END START

===============================================================================

所需数据 :

===============================================================================

@2 input1.dat 001

80 C0 81 00 7F 40 3F 7F C0 81 7F 40 7F 00 7F 3F 40 80 81 9C

#E

@3 $output1.hex 001

FE007F00FD00FFFFFFFFFEFF000000FFC0FF1A00A1

#E



第三套

===============================================================================

试题说明 :

===============================================================================

 请编制程序PROG1.ASM, 其功能是: 内存中连续存放着二个无

符号字节序列A(k)和B(k)(k=0,…,9;下同),求序列C(k),C(k)=A(k)×B(k)。

C(k)以字的形式按C(0),…,C(9) 的顺序连续存放。

 例如:

 序列A(k)为FFH,80H,7FH,00H,…;

 序列B(k)为FFH,80H,01H,02H,…。

 则结果C(k)为FE01H,4000H,007FH,0000H,…。

 部分程序已给出,其中原始数据由过程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*2 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*2 ; 字节数

 CALL LOAD ; 从 ’INPUT1.DAT’中读取数据

; **** BEGIN ****

 ________________,OFFSET RESULT

 MOV BX,0

 _________________

PRO: ________________,SOURCE[BX+N]

 ________________

 MOV [DI],AX

 ADD DI,2

 INC BX

 _______________

 JNZ PRO

; **** END ****

 LEA DX,RESULT ; 结果数据区首址

 LEA SI,NAME1 ; 结果文件名

 MOV CX,N*2 ; 结果字节数

 CALL SAVE ; 保存结果到文件

 RET

START ENDP

CODE ENDS

END START

===============================================================================

所需数据 :

===============================================================================

@2 input1.dat 001

FF 80 7F 00 01 80 FF 80 01 00 FF 80 01 02 00 FF FF 03 FF FF

#E

@3 $output1.hex 001

FE01FFBF80FFFFFFFFFF7F80FE017FFE00FFFFFF3C

#E



第四套

===============================================================================

试题说明 : ===============================================================================

 请编制程序PROG1.ASM, 其功能是: 内存中连续存放着二个有

符号字节序列A(k)和B(k)(k=0,…,9;下同),求序列C(k),C(k)=A(k)÷B(k)。

运算结果按序以字的形式连续存放(低字节为商,高字节为余数)。

 例如:

 序列A(k)为FFH(-1D), 81H(-127D),C0H(-64D),80H(-128D),…;

 序列B(k)为81H(-127D),40H(64D),81H(-127D),01H(1D),…。

 则结果C(k)为FF00H(00H(0D)为商、FFH(-1D)为余数),C1FFH,

C000H,0080H,…。

 部分程序已给出,其中原始数据由过程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*2 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*2 ; 字节数

 CALL LOAD ; 从’INPUT1.DAT’中读取数据

; **** BEGIN ****

 ___________________

 MOV DI,___________

 MOV CX,N

PRO: MOV AL,____________

 ____ ; AL中数的符号扩展到AH,正的字节

 ; 变成正的字,负的字节变成负的字

 _____ SOURCE[BX+N]

 MOV ____,AX

 ADD DI,2

 INC BX

 DEC CX

 JNZ PRO

; **** END ****

 LEA DX,RESULT ; 结果数据区首址

 LEA SI,NAME1 ; 结果文件名

 MOV CX,2*N ; 结果字节数

 CALL SAVE ; 保存结果到文件

 RET

START ENDP

CODE ENDS

END START

===============================================================================

所需数据 :

===============================================================================

@2 input1.dat 001

FF 81 C0 80 00 80 40 7F 20 7F 81 40 81 01 7F 80 C0 81 01 7F

#E

@3 $output1.hex 001

FF00003EFF3F7FFFFFFFFEFF00FF00FFDFFFFEFF1F

#E



第五套

===============================================================================

试题说明 :

===============================================================================

 请编制程序PROG1.ASM, 其功能是: 内存中连续存放着十六个

12位二进制数DB(11)DB(10)…DB(0), 每个二进制数均用两个字节表示,

其存放格式均为

DB(11)DB(10)DB(9)DB(8)DB(7)DB(6)DB(5)DB(4) DB(3)DB(2)DB(1)DB(0) 0 0 0 0

│←──低地址字节──→││←──高地址字节──→│

 请按序将每个12位二进制数转换成以下格式

DB(7)DB(6)DB(5)DB(4)DB(3)DB(2)DB(1)DB(0) 0 0 0 0 DB(11)DB(10)DB(9)DB(8)

│←─ 低地址字节──→││←───高地址字节──→│

转换结果按原序存放在内存中。

 例如:

 内存中有12H,30H(12位二进制数000100100011B(123H)按12H、

30H的形式顺序存放);04H,50H(12位二进制数000001000101B(45H)

按04H、50H的形式顺序存放); 61H,00H(12位二进制数

011000010000B(610H)按61H、00H的形式顺序存放;

 结果为 0123H,0045H,0610H,…

 部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT

中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,

由过程SAVE保存到OUTPUT1.DAT文件中。

 填空BEGIN和END之间已给出的源程序使其完整 (空白已用横线

标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦

可), 或删除BEGIN和END之间原有的代码并自行编程来完成要求的

功能。

 对程序必须进行汇编, 并与IO.OBJ链接产生PROG1.EXE执行文

件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调

试中若发现整个程序中存在错误之处,请加以修改。

===============================================================================

程序 :

===============================================================================

 EXTRN LOAD:FAR,SAVE:FAR

N EQU 16

STAC SEGMENT STACK

 DB 128 DUP (?)

STAC ENDS

DATA SEGMENT

SOURCE DB N*2 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&nbs

关于我们 | 隐私政策 | 站点地图 |
Copyright © 2004 www.manage365.com.cn All Rights Reserved.