第五套
===============================================================================
試題說明 :
===============================================================================
請編制程序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)