微机原理期末考试复习课案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、统计出某数组中相邻两数之间符号变化的次数DATA SEGMENT
ARRAY DB 20 DUP (?)
NUM DB 0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
STARTUP:LEA SI , ARRAY;
MOV AL ,[SI]
MOV BL,0
MOV CX,19
AGAIN: INC SI
XOR AL ,[SI]
J NS NEXT
INC BL
NEXT: MOV AL ,[SI]
LOOP AGAIN
MOV NUM,BL
MOV AH ,4CH
INT 21H
CODE ENDS
END STARTUP
2、乘法指令实现32位二进制数与16位二进制数相乘MODEL SMALL
.8086
.DATA
N1 DW 1234H
N2 DW 5678H
N3 DW 4444H
M1 DW 0
M2 DW 0
M3 DW 0
CODE
. STARTUP
MOV AX ,N2
MUL N3
MOV M3,AX
MOV M2,DX
MOV AX,N3
MUL N1
ADD M2,AX
ADC M1,DX
.EXIT
END
3、设有3个自变量的变量名及其内容如下:
V AR1 3C46H , V AR2 F678H , V AR3 0059H
设计一个数据段定义这三个变量及其地址表变量DDRTABL
DATA SEGMENT
V AR1 DW 3C46H
V AR2 DW F678H
V AR3 DW 0059H
ADDRTABL
DD V AR1
DD V AR2
DD V AR3
DATA ENDS
4、设有一个符号数组,共M个,求其中最大的数,如需要求绝对值最大应如何修改,如为无符号数,程序如何修改。
DATA SEGMENT
M EQU 10
DAT DW M DUP(?)
MAX DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE ,DS:DATA
STARUP : MOV AX ,DAT
MOV MAX ,AX
CLD
LEA SI ,DAT
MOV CX ,M
L1: LODSW
CMP AX ,MAX
JNG LAB
MOV MAX ,AX
LAB : LOOP L1
MOV AH ,4CH
INT 21H
CODE ENDS
END STARTUP
绝对值修改:需要在LODSW插入
AND AX ,AX
JNS LAB1
NEG AX
LAB1: CMP AX ,MAX
程序初始化时MAX应送入0
无符号数程序修改:
判别条件CMP AX ,MAX
JNG LAB
修改为CMP AX,MAX
JBE LAB
5、编制一个程序将20个字节的数组分为正数和负数组,并计算两个数组中数据的个数
DATA SEGMENT
DAT DB 20 DUP (?)
PDAT DB 20 DUP(?)
PDAT DB ?
PLEN DB ?
NDAT DB 20 DUP (?)
NLEN DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE ,DS:DATA
STARTUP:
XOR BX ,BX
LEA SI ,DAT
XOR DI,DI
CLD
MOV CX,20
LOOP0 : LODSB
CMP AL,0
JGE LOOP1
MOV NDAT[BX] ,AL
INC BX
JMP LAB
LOOP1:
MOV PDAT[DI] ,AL
INC DI
LAB: DEC CX
JNZ LOOP0
MOV PLEN ,DI
MOV NLEN,BX
MOV AH,4CH
INT 21H
CODE ENDS
END STARTUP
6、把从A开始的8个字节单元内容依次和从B开始的8个相应的字节单元内容互换。
DATA SEGMENT
A D
B 'ABCDEFGH'
B DB '12345678'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE ,DS:DATA
START: MOV AX ,DATA
MOV DS,AX
LEA SI ,A
LEA DI ,B
MOV CX,8
LP:MOV AL ,[SI]
XCHG AL ,[DI]
MOV [SI], AL
INC SI
INC DI
LOOP LP
MOV AH ,4CH
INT 21H
CODE ENDS
END START
7、计算BUF开始的数组中的100个元素中非零元素的个数,并将其存入COUNT单元,补全指令
BUF DB 100 DUP (?)
COUNT DB 0
..............
STARTUP: MOV AX,DATA
MOV DS,AX
LEA SI, (1)________
MOV CX ,(2)______
CON:MOV AL,[SI]
CMP AL ,(3)_______
.JZ NEXT
INC (4)_____
NEXT: INC SI
LOOP (5)______
HLT
答案:BUF 100 0 COUNT CON
8、程序执行后寄存器的值:
MOV AX,01H
MOV BX ,02H
PUSH BX