微机原理 问题
编程题(共计4题)1.试编制程序,求出下列公式中的z值,并将其存放在寄存器SI中。
其中x、y、z为无符号数。请写出程序注释。
data segment
x dw 6
y dw 7
data ends
code segment
assume cs:code, ds:data
start: mov ax, data
mov ds, ax
…………
…………
…………
…………
…………
…………
…………
…………
…………
code ends
end start
2.试编制程序,统计DA数据区中正数的个数。统计结果放入AL中。
画出程序流程图,写出程序注释。
data segment
DA dw -1, 0, 3, -3, 0AH, 0EF, 8, -5
data ends
code segment
assume cs:code, ds:data
start: mov ax, data
mov ds, ax
…………
…………
…………
…………
…………
…………
…………
…………
…………
…………
…………
…………
…………
…………
…………
code ends
end start
3. 从带符号字节数据存储变量VAR开始存放N个数,找出其中的最小数,放在BL中。画出程序流程图,写出程序注释。
DSEG SEGMENT
VAR DB 5,-7,19H,23H,8H,-2
N EQU $-VAR
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG , DS:DSEG ; 说明代码段、数据段
BG: MOV AX, DSEG
MOV DS, AX 给DS赋段值
…MOV CX, N-1 ; 设置循环次数………
…MOV SI , 0
MOV BH , VAR [SI] ; 取第一字节数到 BH
JCXZ LAST…… ; 如果CX=0则转
AGN : INC SI
CMP BH, VAR[SI]
JAE NEXT
MOV BH ,VAR[SI]
NEXT: LOOP AGIN ; CX CX-1若不等于0则转移
LAST: MOV AH ,4CH
INT 21H
CSEG ENDS
END BG
4. 接口应用题
8255A用作连接打印机的接口,工作于方式0,端口地址为D0H~D3H,要打印的字符放在BL中。编写初始化8255A以及将BL中字符送打印机输出的子程序。并写出注释。
工作过程如下:
1. 需要打印时,首先查询打印机是否忙?
2. 如果打印机不忙,通过8255A发送一个字符给打印机。
3. 为使打印机接收数据,生成一个选通脉冲(即初始值是1,置0,
再置1 )。
8255控制字格式如下:
D7=1,工作方式控制字。
D7=0,C口的置1/置0控制字。