微机原理与接口技术程序求助

微机原理与接口技术程序求助,第1张

1,首字单元AAA40H 末字单元AAA80H A7F00+2B40=AAA40 为什么在A7F0后+个0这个老师应该上课讲过,这是因为8086微处理器与内存存储器之间所有信息交换都要使用20位物理地址,而在程序中所涉及的地址都是16位的逻辑地址,所以在计算时是通过将16位段基址左移4位再加上16位段内偏移量而生成的 AAA40+40H=AAA80 32个字转换成十六进制就是20H个字,换成字节就是40H个字节 2,起始地址是61000H,末地址是70FFFH 61000没什么好解释了,同上 段内最大偏移量是0FFFFH 所以70FFFH=61000H+0FFFFH 3, XOR AH, AH AH清0 SAL AX, 1 AX算数左移1位 MOV BX, AX 把AX放到BX(BX是原始AX的2倍) MOV CL, 2 CL=2 SAL AX, CL 再把AX算数左移2位(此时AX是原来的8倍) ADD AX, BX 两数相+ 其实就是8x+2x=10x,算一个数的10倍

8255端口地址:

A口20H,B口21H,C口22H,方式控制寄存器23H

SSEG SEGMENT PARA STACK堆栈段定义

DW 30H DUP(?)

SSEG ENDS

CSEG SEGMENT代码段定义

ASSUME CS:CSEG,DS:CSEG,SS:SSEG 内存段分配

ORG 100H 主程序首址

START: MOV AL,99H 方式控制字,方式0,A口入,B口出,C口入

OUT 23H,AL 方式控制字送入方式控制寄存器

IN AL,20H从A口读入数据

OUT 21H,AL 向B口输出数据

CMP AL,80H 将A口读入的数据与80H比较

JGE SetPc2 若读入的据>=80H, 准备将PC2置1

ClrPc2: IN AL,22H 读入C口当前状态

AND AL,11111011B 若A口读入的数据<80H,准备将PC2清0复位

MOV DL,AL 将AL的值暂存于DL

JMP PcOut 转跳至C口输出程序入口

SetPc2: IN AL,22H 读入C口当前状态

OR AL,00000100B 准备将PC2位置1

MOV DL,AL 将AL的值暂存于DL

PcOut: MOV AL,90H 方式控制字,方式0,A口入,B口出,C口出

OUT 23H,AL 方式控制字送入方式控制寄存器

MOV AL,DL 将暂存于DL的值回送到AL

OUT 22H,AL C口输出

JMP START 循环

CSEG ENDS 代码段定义完毕

END START 主程序结束


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7756344.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-09
下一篇2023-04-09

发表评论

登录后才能评论

评论列表(0条)

    保存