微机原理编程题

  • 格式:docx
  • 大小:13.73 KB
  • 文档页数:13

微机原理编程题
分支程序设计
①.编写一段程序,已知BUF1单元中有一带符号字节数据X, BUF2中有一带符号字节数据Y,根据以下函数关系编写程序求Z的值,结果存入RESULT单元。

Z=|X-Y| ;
DATA SEGMENT
BUF1 DB 05H
BUF2 DB 02H
RESULT DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV AL,BUF1
MOV BL,BUF2
SUB AL,BL
JNC GREAT
NEG AL
GREAT:MOV RESULT,AL
EXIT: MOV AH,4CH
INT 21H
CODE ENDS END START
②.编写一段程序,已知BUF单元中有一无符号字节数据据以下函数关系编写程序求丫的值,结果存入RESULT单元。

X>=10;
DATA SEGMENT
BUF DB 8
RESULT DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV AL,BUF
CMP AL,10
JAE GRE
MOV BL,AL
ADD AL,AL
ADD AL,AL
ADD AL,BL
JMP DONE
GRE: SUB AL,5 X,假设为8,根Z=5X X<10,X-5
DONE: MOV RESULT,AL
MOV AH,4CH
INT 21H
CODE ENDS
END START
③•在内存单元BUF中存放一个带符号字节数据X,假定为-2,试根据以下函数关系编写程序求丫的值,结果存入RESULT单元。

Y=1 X>0,0 X=0,-1 X<0;
DATA SEGMENT
BUF DB -2
RESULT DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AL,BUF
CMP AL,0
JGE L1
MOV AL,-1
JMP L3
L1:JZ L2
MOV AL,1
JMP L3
L2:MOV AL,0
L3:MOV RESULT,AL
MOV AH,4CH
INT 21H
CODE ENDS
END START
N个数中求最大值、最小值•假定N=10,已知原始数据存放在BUF开始的内存单元中,将结果存入MAX, MIN内存单元中。

DATA SEGMENT
BUF DB 3,5,7,8,5,3,9,7,13,1
COUNT EQU $-BUF
MAX DB ?
MIN DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV CX,COUNT-1
MOV AL,BUF
MOV MAX,AL
MOV MIN,AL
LEA SI,BUF
AGAIN:
MOV AL,[SI+1]
CMP AL,MIN
JGE S1
MOV MIN,AL
S1: CMP AL,MAX
JLE S2
MOV MAX,AL
S2: INC SI
LOOP AGAIN
MOV AH,4CH
INT 21H
CODE ENDS
END START
编写程序求1+2+3+••…+N<10时最大的N值,将N值送NUM单元中,同时将1+2+3+••…+N勺和送到SUM单元中。

DATA SEGMENT
NUM DB
SUM DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX
MOV AL,0
MOV BL,0
AGAIN:INC BL
ADD AL,BL
CMP AL,100
JB AGAIN
SUB AL,BL
DEC BL
MOV NUM,BL
MOV SUM,AL
MOV AH,4CH
INT 21H
CODE ENDS
END START
统计字符,正数,负数,零的个数。

①.若自STRING单元开始存放一个字符串,以'$'结尾,试编写程序,
COUNT单元
统计字符串的长度,并将结果存入
DATA SEGMENT
STRING DB 'abcdefg$'
COUNT DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
LEA SI,STRING
MOV CX,0
NEXT: MOV AL,[SI]
CMP AL,'$'
JZ DONE
INC CX
INC SI
JMP NEXT
DONE: MOV COUNT,CX
MOV AH,4CH
INT 21H
CODE ENDS
END START
②.自BUF单元开始存放10个带符号字节数据,将其中的正数、负数和零选出来,并统计其个数,分别存入PLUS MINUS和ZERO单元中。

DATA SEGMENT
BUF DB 5,-2,0,-1,4,0,-4,8,0,-7
PLUS DB ?
MINUS DB ?
ZERO DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:DATA,DS:DATA
START:MOV AX,DATA
MOV DS,AX
LEA SI,BUF
MOV CX,10
AGAIN:MOV AL,[BX]
INC BX
AND AL,AL
JS M1
JZ M2
INC PLUS
JMP NEXT
M1: INC MINUS
JMP NEXT
M2: INC ZERO
JMP NEXT
NEXT: LOOP AGAIN
MOV AH,4CH
INT 21H
CODE ENDS
END START
求压缩BCD码的和。

已知从BUF1和BUF2单元开始,存放两个各为字节
10个的BCD数,求这两个数的和,并将结果存入BUF3单元中。

DATA SEGMENT
BUF1 DB 01H,01H,01H,01H,01H,01H,01H,01H,01H,01H
BUF2 DB 03H,03H,03H,03H,03H,03H,03H,03H,03H,03H
BUF3 DB 11 DUP⑺
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV CX,10
LEA SI,BUF1
LEA DI,BUF2
LEA BX,BUF3
AGAIN:
MOV AL,[SI]
ADC AL,[DI]
DAA
MOV [BX],AL
INC SI
INC DI
INC BX
LOOP AGAIN
ADC AH,0
MOV [BX],AH
MOV AH,4CH
INT 21H
CODE ENDS
END START
6. 8255编程题:(课后实验)
8255工作于方式0,此时PA、PB PC均为可独立输入/输出的并行口。

8255的各寄存器对应的口地址为:PA 口:200H, PB 口:202H,PC 口:204H, 控制口:206H。

要求8255工作于方式0, PA 口设置为输入,
PC 口设置为输出。

DATA SEGMENT
C8255 EQU 206H
P8255A EQU 200H
P8255C EQU 204H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV DX,C8255 ;设置为A 口输入,C 口输出
MOV AL,90H
OUT DX,AL
BG: MOV DX,P8255A ;将A 口状态从C 口输出
IN AL,DX
MOV DX,P8255C
OUT DX,AL
JMP BG
CODE ENDS
END START。