第五套
===============================================================================
試題說明 :
===============================================================================
請編制程序PROG1.ASM, 其功能是: 內(nèi)存中連續(xù)存放著十六個
12位二進制數(shù)DB(11)DB(10)…DB(0), 每個二進制數(shù)均用兩個字節(jié)表示,
其存放格式均為
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
│←──低地址字節(jié)──→││←──高地址字節(jié)──→│
請按序?qū)⒚總12位二進制數(shù)轉(zhuǎn)換成以下格式
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)
│←─ 低地址字節(jié)──→││←───高地址字節(jié)──→│
轉(zhuǎn)換結(jié)果按原序存放在內(nèi)存中。
例如:
內(nèi)存中有12H,30H(12位二進制數(shù)000100100011B(123H)按12H、
30H的形式順序存放);04H,50H(12位二進制數(shù)000001000101B(45H)
按04H、50H的形式順序存放); 61H,00H(12位二進制數(shù)
011000010000B(610H)按61H、00H的形式順序存放;
結(jié)果為 0123H,0045H,0610H,…
部分程序已給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT
中讀入SOURCE開始的內(nèi)存單元中。運算結(jié)果要求從RESULT開始存放,
由過程SAVE保存到OUTPUT1.DAT文件中。
填空BEGIN和END之間已給出的源程序使其完整 (空白已用橫線
標(biāo)出,每行空白一般只需一條指令,但采用功能相當(dāng)?shù)亩鄺l指令亦
可), 或刪除BEGIN和END之間原有的代碼并自行編程來完成要求的
功能。
對程序必須進行匯編, 并與IO.OBJ鏈接產(chǎn)生PROG1.EXE執(zhí)行文
件,最終運行程序產(chǎn)生結(jié)果(無結(jié)果或結(jié)果不正確者均不得分)。調(diào)
試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改。
===============================================================================
程序 :
===============================================================================
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 ; 數(shù)據(jù)區(qū)起始地址
LEA SI,NAME0 ; 原始數(shù)據(jù)文件名
MOV CX,N*2 ; 字節(jié)數(shù)
CALL LOAD ; 從 'INPUT1.DAT'中讀取數(shù)據(jù)
; **** BEGIN ****
MOV BX,0
MOV DI,OFFSET RESULT
MOV CH,N
MOV CL,__
PRO: MOV AX,_______________
MOV DX,AX
SHR DL,__ ; 12位無符號二進制數(shù)高八位右移
SHR AH,__ ; 12位無符號二進制數(shù)低四位右移
SHL AL,__ ; 12位無符號二進制數(shù)高八位左移
OR __________ ; 新格式12位無符號二進制數(shù)低八位
MOV AL,AH
MOV AH,DL ; 新格式12位無符號二進制數(shù)高四位
MOV BYTE PTR [DI],__
MOV BYTE PTR [DI+1],__
ADD DI,2
ADD BX,2
DEC CH
JNZ PRO
; **** END ****
LEA DX,RESULT ; 結(jié)果數(shù)據(jù)區(qū)首址
LEA SI,NAME1 ; 結(jié)果文件名
MOV CX,N*2 ; 結(jié)果字節(jié)數(shù)
CALL SAVE ; 保存結(jié)果到文件
RET
START ENDP
CODE ENDS
END START
===============================================================================
所需數(shù)據(jù) :
===============================================================================
@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, 其功能是:內(nèi)存中連續(xù)存放著十六個10
位無符號二進制數(shù)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
│←─── 低地址字節(jié) ───→││←──高地址字節(jié)──→│
請判別這十六個10位二進制數(shù)是否小于等于200H;若小于等于
200H,則相應(yīng)地在內(nèi)存中存入01H;否則,存入00H。最后存放這十
六個10位二進制數(shù)中小于等于200H的10位無符號二進制數(shù)的個數(shù)n
(n用一個字節(jié)表示)。
例如:
內(nèi)存中有 48H,C0H(10位二進制數(shù)0100100011B(123H)按48H、
C0H的形式順序存放);91H,40H(10位二進制數(shù)1001000101B(245H)按
91H、40H的形式順序存放);80H,00H(10位二進制數(shù)1000000000B
(200H)按80H、00H的形式順序存放);…
結(jié)果為 01H,00H,01H…(共十六個字節(jié)),后跟n
部分程序已給出,其中原始數(shù)據(jù)由過程LOAD從文件INPUT1.DAT
中讀入SOURCE開始的內(nèi)存單元中。運算結(jié)果要求從RESULT開始存放,
由過程SAVE保存到OUTPUT1.DAT文件中。
填空BEGIN和END之間已給出的源程序使其完整 (空白已用橫線
標(biāo)出,每行空白一般只需一條指令,但采用功能相當(dāng)?shù)亩鄺l指令亦
可), 或刪除BEGIN和END之間原有的代碼并自行編程來完成要求的
功能。
對程序必須進行匯編, 并與IO.OBJ鏈接產(chǎn)生PROG1.EXE執(zhí)行文
件,最終運行程序產(chǎn)生結(jié)果(無結(jié)果或結(jié)果不正確者均不得分)。調(diào)
試中若發(fā)現(xiàn)整個程序中存在錯誤之處,請加以修改。
===============================================================================
程序 :
===============================================================================
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 ; 數(shù)據(jù)區(qū)起始地址
LEA SI,NAME0 ; 原始數(shù)據(jù)文件名
MOV CX,N*2 ; 字節(jié)數(shù)
CALL LOAD ; 從 'INPUT1.DAT'中讀取數(shù)據(jù)
; **** BEGIN ****
MOV DI,OFFSET RESULT
MOV CH,N
MOV CL,___
MOV BX,0
MOV DX,0100H
PRO: MOV AH,BYTE PTR SOURCE[BX] ; 10位無符號二進制數(shù)高八位
MOV AL,______________________ ; 10位無符號二進制數(shù)低二位
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 ; 結(jié)果數(shù)據(jù)區(qū)首址
LEA SI,NAME1 ; 結(jié)果文件名
MOV CX,N+1 ; 結(jié)果字節(jié)數(shù)
CALL SAVE ; 保存結(jié)果到文件
RET
START ENDP
CODE ENDS
END START
===============================================================================
所需數(shù)據(jù) :
===============================================================================
@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