第五套
===============================================================================
试题说明 :
===============================================================================
请编制程序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 AX
MOV AX,DATA
MOV DS,AX
LEA DX,SOURCE ; 数据区起始地址
LEA SI,NAME0 ; 原始数据文件名
MOV CX,N*2 ; 字节数
CALL LOAD ; 从 'INPUT1.DAT'中读取数据
; **** BEGIN ****
MOV BX,0
MOV DI,OFFSET RESULT
MOV CH,N
MOV CL,__
PRO: MOV AX,_______________
MOV DX,AX
SHR DL,__ ; 12位无符号二进制数高八位右移
SHR AH,__ ; 12位无符号二进制数低四位右移
SHL AL,__ ; 12位无符号二进制数高八位左移
OR __________ ; 新格式12位无符号二进制数低八位
MOV AL,AH
MOV AH,DL ; 新格式12位无符号二进制数高四位
MOV BYTE PTR [DI],__
MOV BYTE PTR [DI+1],__
ADD DI,2
ADD BX,2
DEC CH
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 F0 FF 00 F0 F0 0F F0 F0 00 0F 00 00 F0 00 00 00 50 05 00 50 00 0A A0 A0 A0 AA 00 AA A0 55 50
#E
@3 $output1.hex 001
00F00FF0F0F000FFFFF00FFFF0FFFFFFFAFFAFFFFFFA55FFF5F55FF555F5AAFA08
#E
第六套
===============================================================================
试题说明 :
===============================================================================
请编制程序PROG1.ASM, 其功能是:内存中连续存放着十六个10
位无符号二进制数DB(9)DB(8)…DB(0),其存放格式均为
DB(9) DB(8) DB(7) DB(6) DB(5) DB(4) DB(3) DB(2) DB(1) DB(0) 0 0 0 0 0 0
│←─── 低地址字节 ───→││←──高地址字节──→│
请判别这十六个10位二进制数是否小于等于200H;若小于等于
200H,则相应地在内存中存入01H;否则,存入00H。最后存放这十
六个10位二进制数中小于等于200H的10位无符号二进制数的个数n
(n用一个字节表示)。
例如:
内存中有 48H,C0H(10位二进制数0100100011B(123H)按48H、
C0H的形式顺序存放);91H,40H(10位二进制数1001000101B(245H)按
91H、40H的形式顺序存放);80H,00H(10位二进制数1000000000B
(200H)按80H、00H的形式顺序存放);…
结果为 01H,00H,01H…(共十六个字节),后跟n
部分程序已给出,其中原始数据由过程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 DW 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*2 ; 字节数
CALL LOAD ; 从 'INPUT1.DAT'中读取数据
; **** BEGIN ****
MOV DI,OFFSET RESULT
MOV CH,N
MOV CL,___
MOV BX,0
MOV DX,0100H
PRO: MOV AH,BYTE PTR SOURCE[BX] ; 10位无符号二进制数高八位
MOV AL,______________________ ; 10位无符号二进制数低二位
CMP AX,_____
JNBE C_0
MOV [DI],__
INC __
INC DI
JMP JUMP
C_0: MOV [DI],DL
__________________
JUMP: ADD BL,2
DEC CH
JNZ PRO
MOV [DI],CL
; **** END ****
LEA DX,RESULT ; 结果数据区首址
LEA SI,NAME1 ; 结果文件名
MOV CX,N+1 ; 结果字节数
CALL SAVE ; 保存结果到文件
RET
START ENDP
CODE ENDS
END START
===============================================================================
所需数据 :
===============================================================================
@2 input1.dat 001
FF C0 80 00 80 40 7F C0 FF 00 FA 40 FA 80 AA 40 CD 40 11 C0 00 00 31 80 31 40 66 40 66 C0 33 40
#E
@3 $output1.hex 001
FFFEFFFEFFFFFFFFFFFEFEFEFEFEFEFEF612
#E
- 推荐给朋友
- 收藏此页
·09上半年三级网络技术每日一练:08年11月18日 (2008-11-18 9:56:38)
·09上半年三级网络技术每日一练:08年11月17日 (2008-11-17 9:55:12)
·计算机等级考试C语言上机考试改错题分析总结 (2008-9-17 14:48:48)
·等考辅导:提高效率巧用脚本配置思科路由器 (2008-8-23 16:48:22)
·计算机二级考试C语言辅导:C++语言的应用 (2008-8-23 16:43:38)