汇编编程,中断程序,并显示中断次数!

发布网友

我来回答

3个回答

热心网友

以单片机,51系列,外中断0为例
BZHI BIT 00H ;中断标志
JISHU EQU 30H ;计数器

ORG 0000H
START: AJMP MAIN
ORG 0003H
AJMP WZD0 ;转移到真正外中断服务程序入口

ORG 0040H
MAIN: MOV SP,#5FH ;预置栈指针
MOV IE,#81H ;开外中断0允许
DENGD: JNB BZHI,$ ;未见到外中断,等待
CLR BZHI ;清除标志,为下次准备
MOV A,JISHU ;取计数值
ACALL DISPL ;将A值送显示,具体内容由你所使用的硬件决定
AJMP DENGD ;返回等待
;==== 外中断0服务程序
WZD0: SETB BZHI ;设标志
INC JISHU ;计数器加一
RETI ;退出中断服务程序
;==== 将计数值(即中断次数)送显示,完成所定任务
DISPL:
;具体指令由所用硬件决定
RET追问可以详细点吗?刚学的汇编,看不大懂额!

追答上面注释已经够详细了,再补充几点:
BIT是定义位标志——即对二进制一位定义一个名称,比用00,01....要直观一点,这里用“标志”的拼音简化(BZHI),
EQU是定义字节标志,这个字节(30H)用于计数,所以用“计数器”的拼音(JISHU)
ORG是定义程序从哪里开始,本文复位(START)由0000H开始,外中断入口在0003H开始,真正程序由0040H开始

主要思路如下:
1。设好外中断——允许运行外中断程序
2。在外中断程序中,对计数器加一,因题目要求对中断次数显示,所以每中断一次,计数器加一(INC JISHU ),
3.在主程序中(DENGD:——到AJMP DENGD)将计数器值送到ACC中,再用显示程序(这里用DISPL)显示ACC中数值,就达到题目要求了。
4.为了避免连续显示一串同样的数字,就要求每中断一次才能才显示一次。为此,设了一个标志(BZHI),在中断里将它设为“1”,在主程序中,只有判到标志=1,才调用显示程序,并且将它清为“0”,只有下次再遇到中断,标志才再次=1。
5。显示程序(DISPL)因地制宜,没有硬件图,这里无法编写,你自己补上。

热心网友

建议一下 :你应该标明是哪种汇编 因为汇编语言是硬件平台相关的! 比如楼上的是单片机51系列的 你可能学的是inter的8086汇编或者AT&T之类的 格式都不一样!!!追问哦 是8086的!win_masm

追答呵呵 那楼上的代码你看不懂属于正常

热心网友

现在还有搞汇编的啊?围观之。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com