4.9练习题
10、写一个宏定义,要求能把任意一个寄存器的最低位移至另一个存储器的最高位中。
DATA SEGMENT
VAR1 DB 4,6
VAR2 DD 200 DUP(?)
DATA ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATA,SS:STACKS
START:
MOV AX,DATA
MOV DS,AX
XTY MACRO X,Y
MOV AX,X
AND AX,1
ROR AX,1
MOV Y,AX
ENDM
MOV DX,1
MOV AX,0
XTY DX,AX,
MOV AH,4CH
INT 21H
CODES ENDS
END START
11、利用DOS功能调用从键盘输入60个字符到缓冲区BUF中,在按下ENTER键后在屏幕上显示这些字符。请写出程序段。
DATA SEGMENT
ST1 DB 'Please input 60 characters from keyboard.',0DH,0AH,'$'
BUF DB61 DUP(?)
DATA ENDS
COD SEGMENT
ASSUME CS:COD,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV DL,07H
MOV AH,2
INT 21H
MOV DX,OFFSET ST1
MOV AH,9
INT 21H
LEA SI, BUF
MOV CX,60
LP:
MOV AH,7
INT 21H
MOV [SI],AL
CMP AL,0DH
JZ EXIT
INC SI
LOOP LP
EXIT:
MOV BX,60
SUB BX,CX
MOV CX,BX
LEA SI, BUF
LP2:
MOV DL,[SI]
MOV AH,6
INT 21H
INC SI
LOOP LP2
MOV AH,4CH
INT 21H
COD ENDS
END START
12、试写一段程序,要求先给出一声铃响提示,屏幕上显示:“Please input a alphabet:”,然后从键盘输入一个字母送BL。
DATAS SEGMENT
ST1 DB 'Please Input a alphabet:',0DH,0AH,'$'
ST2 DB ?
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
MOV DL,7
MOV AH,2
INT 21H
MOV DX,OFFSET ST1
MOV AH,9
INT 21H
MOV AH,1
INT 21H
MOV BL,AL
MOV AH,4CH
INT 21H
CODES ENDS
END START
第五章汇编语言程序设计
例5-1:试用8086CPU的指令实现Y = (X1 +X2)/2的程序设计。
DATAS SEGMENT
X1 DB 34H
X2 DB 89H
Y DW ?
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV AX,0
MOV AL,X1
MOV BL,X2
ADD AL,BL
ADC AH,0
SAR AX,1
MOV [Y],AX
MOV AH,4CH
INT 21H
CODES ENDS
END START
例5-1(老书):编制实现两个三十二位数相乘的程序。
DATA SEGMENT
MULNUM DW 1234H
DW 0B8FDH
DW 0DFE6H
DW 78FFH
DW 4 DUP(?)
DATA ENDS
COD SEGMENT
ASSUME CS:COD,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
XOR AX,AX
LEA BX,MULNUM
MUL32:
MOV AX,[BX]
MOV SI,[BX+4]
MOV DI,[BX+6]
MUL SI ;B*d
MOV [BX+8],AX
MOV [BX+0AH],DX
MUL DI ;B*C
ADD AX, [BX+0AH]
ADC DX,0
MOV [BX+0AH],AX
MOV [BX+0CH],DX
XOR AX ,AX
XOR DX ,DX
MOV AX,[BX+2]
MUL SI ;A*D
ADD AX,[BX+0AH]
ADC DX,[BX+0CH]
PUSHF
MOV AX,[BX+0AH]
MOV DX,[BX+0CH]
XOR AX ,AX
XOR DX ,DX
MOV AX,[BX+2]
MUL DI ;A*C
POPF
ADC AX,[BX+0CH]
ADC DX,0
MOV [BX+0CH],AX
MOV [BX+0EH],DX
XOR AX,AX
MOV AH,4CH
INT 21H
COD ENDS
END START
例5-2:将一位十六进制数转换成与它相对应的ASCII码。
DATAS SEGMENT
TAB
DB 30H,31H,32H,33H,34H,35H,36H,37H
DB 38H,39H,41H,42H,43H,44H,45H,46H
HEX DB 8
ASC DB ?
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
MOV BX,OFFSET TAB
MOV AL,HEX
XLAT
MOV ASC,AL
MOV AX,4C00H
INT 21H
CODES ENDS
END START
例5-3:要求对不足250个的学生成绩进行统计分析,统计出优秀、及格和不及格的人数。
DATAS SEGMENT
BUF DB 15
DB 64,78,89,55,69,98,45,67,96,99,92,89,85,91,45
NUM DB 3 DUP(?)
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV SI,OFFSET BUF
MOV CH,[SI]
MOV CL,0
MOV BX,0
INC SI
LP:
MOV AH,[SI]
CMP AH,90
JB BLOW90
INC BH
NEXT:
INC SI
DEC CH
JNZ LP
MOV SI,OFFSET NUM
MOV [SI],BH
MOV [SI+1],BL
MOV [SI+2],CL
MOV AH,4CH
INT 21H
BLOW90:
CMP AH,60
JB BLOW60
JMP ABOV60
ABOV60:
INC BL
JMP NEXT
BLOW60:
INC CL
JMP NEXT
CODES ENDS
END START
例5-5利用表内地址跳转法来实现使键盘上A、B、C、D4个字母键成为4条输入命令,使之分别对应4个具有不同算法的控制子程序。
DATAS SEGMENT
BASE DB 'pa','pb','pc','pd'
KEY DB ?
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
LOP:
XOR AX,AX
MOV AH,1
INT 21H
CMP AL,41H
JB LOP
CMP AL,44H
JA LOP
SUB AL,41H
MOV BX,OFFSET KEY
MOV AH,0
ADD BX,AX
JMP WORD PTR[BX]
MOV AH,4CH
INT 21H
CODES ENDS
END START
例5-6:试编写一程序,统计出某一字数据中“1”的个数。
DAT SEGMENT
XDA DW 3AD8H
CONT DB ?
DAT ENDS
COD SEGMENT
ASSUME CS:COD,DS:DAT
START:
MOV AX,DAT
MOV DS,AX
MOV CL,0
MOV AX,XDA
LOP:
CMP AX,0
JZ EXIT
SHL AX,1
JNC NEXT
INC CL
NEXT:
JMP LOP
EXIT:
MOV CONT,CL
INT 20H
COD ENDS
END START
例5-7:编写程序将两个n字节的无符号数相加,结果存入SUM开始的n+1字节存储区中。
DAT SEGMENT
DAT1 DB 12H,34H,56H,71H,23H,45H,67H
DAT2 DB 76H,54H,32H,17H,65H,43H,21H
SUM DB 8 DUP(?)
DAT ENDS
COD SEGMENT
ASSUME CS:COD,DS:DAT
START:
MOV AX,DAT
MOV DS,AX
XOR AX,AX
MOV BX,OFFSET DAT1
MOV SI,OFFSET DAT2
LEA DI,SUM
MOV CX,7
CLC
LP:
MOV AL,[SI]
ADC AL,[BX]
MOV [DI],AL
INC BX
INC SI
INC DI
LOOP LP
ADC BYTE PTR [DI],0
MOV AH,4CH
INT 21H
COD ENDS
END START
例5-8:编制程序用单字符输出的DOS功能调用向屏幕输出以“%”结束的字符串。
DAT SEGMENT
ST1 DB 'How are you?%'
DAT ENDS
COD SEGMENT
ASSUME CS:COD,DS:DAT
START:
MOV AX,DAT
MOV DS,AX
LEA SI,ST1
AGAIN:
MOV DL,[SI]
CMP DL,'%'
JZ ENDOUT
MOV AH,2
INT 21H
INC SI
JMP AGAIN
ENDOUT:
MOV AH,4CH
INT 21H
COD ENDS
END START
例5-9:设有16个内存单元需要修改,修改规律是第1、3、6、9、12号单元均加5,其余单元均加10,试用循环结构变成实现。
DATAS SEGMENT
XDA DB 16 DUP(?)
LRULER DW 0A490H
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
MOV SI,0
MOV CX,16
MOV BX,OFFSET XDA
MOV DX,LRULER
AGAIN:
MOV AX,BX[SI]
SHL DX,1
JC ADD5
ADD AX,10
JMP SHORT RESULT
ADD5:
ADD AX,5
RESULT:
MOV BX[SI],AX
INC SI
LOOP AGAIN
MOV AH,4CH
INT 21H
CODES ENDS
END START
例5-10:设某一数组的长度为N,各元素均为字数据,试编制一个程序使该数组中的数据按照从小到大的次序排列。
DATAS SEGMENT
DAT DB 25,68,86,98,34,67,12,4,49,27
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
MOV BX,0
MOV CX,10
DEC CX
LOP1:
MOV DX,CX
LOP2:
MOV AL,DAT[BX]
CMP AL,DAT[BX+1]
JBE CONTI
XCHG AL,DAT[BX+1]
MOV DAT[BX],AL
CONTI:
ADD BX,1
LOOP LOP2
MOV CX,DX
MOV BX,0
LOOP LOP1
MOV AH,4CH
INT 21H
CODES ENDS
END START
例5-11:定义一个显示两个十六进制数的子程序:
DATAS SEGMENT
BUF DB 12H
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
LEA SI,BUF
MOV BL,[SI]
CALL DISPP
MOV AH,4CH
INT 21H
DISPP PROC NEAR
PUSH DX
PUSH CX
MOV DL,BL
MOV CL,4
ROL DL,CL
AND DL,0FH
CALL DISP1
MOV DL,BL
AND DL,0FH
CALL DISP1
POP CX
POP DX
RET
DISPP ENDP
DISP1 PROC NEAR
OR DL,30H
CMP DL,3AH
JB DDD
ADD DL,07H
DDD:
MOV AH,2
INT 21H
RET
DISP1 ENDP
CODES ENDS
END START
例5-12:编制显示四位十六进制数的子程序。
DATAS SEGMENT
BUF DW 1234H
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
LEA SI,BUF
MOV AX,[SI]
CALL DISP4
MOV AH,4CH
INT 21H
DISP4 PROC NEAR
PUSH BX
PUSH CX
PUSH DX
PUSH AX
MOV AL,AH
CALL DISP2
POP AX
CALL DISP2
POP DX
POP CX
POP BX
RET
DISP4 ENDP
DISP2 PROC NEAR
MOV BL,AL
MOV DL,AL
MOV CL,4
ROL DL,CL
AND DL,0FH
CALL DISP1
MOV DL,BL
AND DL,0FH
CALL DISP1
RET
DISP2 ENDP
DISP1 PROC
OR DL,30H
CMP DL,3AH
JB DDD
ADD DL,07H
DDD:
MOV AH,2
INT 21H
RET
DISP1 ENDP
CODES ENDS
END START
例5-13:已知数组由100个字数据组成,试变成求出这个数组元素之和。
DATAS SEGMENT
ARY DW 25 DUP(12H,5DH,3CH,7AH)
SUM DW ?
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
CALL RADD
MOV AH,4CH
INT 21H
RADD PROC NEAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
LEA BX,ARY
MOV CX,100
XOR AX,AX
MOV DX,AX
CL1:
ADD AX,[BX]
JNC CL2
INC DX
CL2:
ADD BX,2
LOOP CL1
MOV SUM,AX
MOV SUM+2,DX
POP DX
POP CX
POP BX
POP AX
RET
RADD ENDP
CODES ENDS
END START
例5-14:已知数组A由100个字数据组成,数组B由50个字数据组成,试编程分别求出这两个数组元素之和。
DATAS SEGMENT
CA DW 100
ARA DW 20 DUP(34H,5FH,8DH,4AH,9BH)
SA DD ?
CB DW 50
ARB DW 10 DUP(3DH,4CH,2EH,88H,1CH)
SB DD ?
TAB DW 3 DUP(?)
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV AX,OFFSET CA
MOV TAB,AX
MOV AX,OFFSET ARA
MOV TAB[2],AX
MOV AX,OFFSET SA
MOV TAB[4],AX
MOV SI,OFFSET TAB
CALL RADD
MOV AX,OFFSET CB
MOV TAB,AX
MOV AX,OFFSET ARB
MOV TAB[2],AX
MOV AX,OFFSET SB
MOV TAB[4],AX
MOV SI,OFFSET TAB
CALL RADD
MOV AH,4CH
INT 21H
RADD PROC NEAR
MOV BX,[SI]
MOV CX,[BX]
MOV BX,[SI+2]
MOV DI,[SI+4]
XOR AX,AX
MOV DX,AX
CL1:
ADD AX,[BX]
JNC CL2
INC DX
CL2:
ADD BX,2
LOOP CL1
MOV [DI],AX
MOV [DI+2],DX
RET
RADD ENDP
CODES ENDS
END START
5.8 练习题(新书)
3、编程题
(1)试编写一程序,把数组STRING中存放的20个8位二进制数分成正整数组和负数数组,并统计正数、负数和零的个数,结果分别存放到P、M、Z三个单元。
DAT SEGMENT
STRING DW 2 DUP(3045H,0FD34H,0D3DH,9899H,0,3DF2H,0,0FFDEH,93FDH,0DE6CH)
P DW 20 DUP(?)
M DW 20 DUP(?)
Z DW 20 DUP(?)
DAT ENDS
COD SEGMENT
ASSUME CS:COD,DS:DAT
START:
MOV AX,DAT
MOV DS,AX
XOR BP,BP
LEA SI ,P ;正数
LEA DI ,M ;负数
LEA BP ,Z ;零
PUSH SI
PUSH DI
PUSH BP
LEA BX,STRING
MOV CX,20
LL:
MOV AX,[BX]
PUSH AX
ADD AX,AX
JZ L1
POP AX
PUSH AX
SAL AX,1
JC L2
POP AX
MOV [SI] ,AX
ADD SI,2
JMP LA
LA:
ADD BX ,2
LOOP LL
XOR CX,CX
MOV CX,2
POP AX
MOV DX,BP
SUB DX,AX
SHR DX,CL
MOV [BP] ,DX
POP AX
MOV DX,DI
SUB DX,AX
SHR DX,CL
MOV [DI] ,DX
POP AX
MOV DX,SI
SUB DX,AX
SHR DX,CL
MOV [SI] ,DX
MOV AH,4CH
INT 21H
L1:
POP AX
MOV [BP],AX
ADD BP ,2
JMP LA
L2:
POP AX
MOV [DI] ,AX
ADD DI,2
JMP LA
COD ENDS
END START
(2)试编写一个程序,完成10个一位十进制数累加,累加结果以分离式BCD码形式存放于AH(高位),AL(低位)寄存器。
DAT SEGMENT
D1 DB 2,3,4,5,6,7,8,3,4,5
D2 DB ?
DAT ENDS
COD SEGMENT
ASSUME CS:COD,DS:DAT
START:
MOV AX,DAT
MOV DS,AX
LEA SI,D1
XOR AX,AX
MOV CX,10
L1:
ADD AL,[SI]
AAA
INC SI
LOOP L1
MOV AH,4CH
INT 21H
COD ENDS
END START
(3)试编写一程序,将2个字节的二进制数,变换成用ASCII码表示的四位十六进制书(用四字节表示)。
DATAS SEGMENT
TAB DB 41H,42H,43H,44H,45H,46H
BIN DB '1101101110011110'
BUF DB 4 DUP(?)
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
LEA BX,TAB
LEA SI,BIN
LEA DI,BUF
MOV CX,4
LP1:
MOV AX,[SI+2]
PUSH CX
XOR CX,CX
MOV CL,8
ROR AX,CL
SUB AX,3030H
MOV DX,[SI]
ROR DX,CL
SUB DX,3030H
SHL AH,1
ADD AH,AL
MOV CL,2
SHL DL,CL
MOV CL,3
SHL DH,CL
ADC DH,DL
ADC AH,DH
CMP AH,0AH
JB LP2
SUB AH,0AH
MOV AL,AH
XLAT
LP3:
MOV [DI],AL
ADD DI,1
ADD SI,4
POP CX
LOOP LP1
MOV AH,4CH
INT 21H
LP2:
ADD AH,30H
MOV AL,AH
JMP LP3
CODES ENDS
END START
(6)编写一个程序,计算100个16位正整数之和,如果和不超过16位字的范围(0 ~ 65535),则保存其和到SUM,如果超过则显示“OVERFLOW!!”。
DAT SEGMENT
DAT1 DW 25 DUP (2D4EH,5611H,1234H,7891H)
BUF DW ?
STR1 DB 'overflow!!',0DH,0AH,'$'
DAT ENDS
COD SEGMENT
ASSUME CS:COD,DS:DAT
START:
MOV AX,DAT
MOV DS,AX
MOV SI,OFFSET DAT1
MOV BX,OFFSET BUF
MOV CX,100
XOR AX,AX
L1:
ADD AX,[SI]
JC DISP
LOOP L1
MOV [BX],AX
MOV AH,4CH
INT 21H
DISP PROC NEAR
MOV DX,OFFSET STR1
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
DISP ENDP
COD ENDS
END START
5.8练习题(老书)
(4)试编写一个汇编程序,要求实现将ASCII码表示的两位十进制数转换为一字节二进制数。
DATA SEGMENT
ASC DB 32H,38H
ASCEND DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
MAIN PROC FAR
START:
MOV AX,DATA
MOV DS,AX
XOR BX,BX
MOV BX,OFFSET ASC
MOV AX,0
MOV AL,[BX]
CMP AL,30H
JL EXIT
CMP AL,39H
JG EXIT
SUB AL,30H
MOV DL,[BX+1]
CMP DL,30H
JL EXIT
CMP DL,39H
JG EXIT
SUB DL,30H
MOV CL,4
SHL DL,CL
ADD AL,DL
MOV ASCEND,AL
EXIT:
MOV AH,4CH
INT 21H
MAIN ENDP
CODE ENDS
END START
(5)某存储区中存有20个单字节数,试编写一汇编程序分别求出其绝对值并且将结果保存到CL中。
DAT1 SEGMENT
MUM DB 1,2,3,-9,0,7,5,-4,-7,-11,34,-67,-44,-51,1,3,6,8,9,3
DAT1 ENDS
COD SEGMENT
ASSUME CS:COD, DS:DAT1
START PROC FAR
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DAT1
MOV DS,AX
MOV CX,20
MOV SI,OFFSET MUM
LP1:
MOV AL,[SI]
AND AL,AL
JNS DONE
NEG AL
DONE:
MOV [SI],AL
INC SI
LOOP LP1
MOV AH,4CH
INT 21H
START ENDP
COD ENDS
END START
(6)试编写一汇编程序,将AX中各位取反,然后统计出AX中“0”的个数,将结果保存到CL中。
DATA SEGMENT
DATA ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE ,DS:DATA
START:
MOV AX,0E001H
MOV DL,0
MOV CL,16
NOT AX
RETEST:
AND AX,AX
JS SKIP
INC DL
SKIP:
SHL AX,1
LOOP RETEST
MOV CL,DL
EXIT:
MOV AH,4CH
INT 21H
MAIN ENDP
CODE ENDS
END START
(12)已知a1~a20依次存放在以BUF为首地址的数据区,每个数据占两个字节,SUM也是两个字节。试编程计算word/media/image1.gif。
DATA SEGMENT
DAT DW 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
SUM DW ?
DATA ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE, DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AX,0
MOV SI,OFFSET DAT
MOV CX,20
CLC
LP1:
ADC AX,[SI]
INC SI
INC SI
LOOP LP1
MOV SUM,AX
MOV AH,4CH
INT 21H
MAIN ENDP
CODE ENDS
END START
(14)编一个子程序,计算word/media/image2.gif。设a,b,c,d,t均为一位十进制数,结果存入RESULT单元。
DATA SEGMENT
A DB 1
B DB 2
C DB 3
D DB 4
T DB 2
Q DW 3 DUP(?)
RESULT DW ?
DATA ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE ,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET Q
MOV BL,T
MOV BH,0
MOV AX,BX
MUL BX
MOV [SI],AX
MUL BX
MOV [SI+2],AX
MOV AL,A
MOV AH,0
MUL WORD PTR[SI+2]
MOV RESULT,AX
MOV AL,B
MOV AH,0
MUL WORD PTR[SI]
ADD RESULT,AX
MOV AL,C
MUL T
ADD RESULT,AX
MOV AL,D
MOV AH,0
ADD RESULT,AX
MOV AH,4CH
INT 21H
MAIN ENDP
CODE ENDS
END START
(15)求出前20个斐波那契数,存入数据变量FN开始的区域中。
斐波那契数列定义为:word/media/image3.gif,word/media/image4.gif,word/media/image5.gif。
DATA SEGMENT
F1 DW 0
F2 DW 1
FN DW 20 DUP(?)
RESULT DW ?
DATA ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE ,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV CX,19
MOV AX,F1
MOV BX,F2
MOV SI,OFFSET FN
MOV [SI],AX
INC SI
INC SI
MOV [SI],BX
LL:
ADD AX,BX
ADD SI,2
MOV [SI],AX
MOV BX,[SI-2]
LOOP LL
MOV AH,4CH
INT 21H
MAIN ENDP
CODE ENDS
END START
完。
PS:
以上这些程序汇编代码峰哥已经全部调试过了。
本来想自己编译,调试,验证是否能出来正确的结果,再将正确的代码写进来。
可无奈每次整理完代码已经快凌晨一点,笔记本电脑的电池已经快耗光。
有时候一进入死循环,只能按住笔记本电脑电源键大约三秒来解决问题。
所以,如果以上汇编代码有错误的地方,(比如我在整理的时候,误删了某个字符等。)
恳请大家斧正。
当然,在这之前,请务必将你认为是对的程序代码,以及你认为是错误的代码输入电脑,
按照
“轻松汇编——TD调试——VIEW——CPU——Trace——Trace——Trace——……”
的方式看每个寄存器的状态是否符合要求,来进行调试。
最后,还是那句老话,祝愿大家《微型计算机原理与接口技术》这门课以及它的课设,
都能得到一个不错的成绩。