社区
汇编语言
帖子详情
为什么在调用中断前,要给ah赋个值?
kyq9
2004-07-08 09:06:08
例如
mov al,1ch
mov ah,25h
int 21h
不明白为什么啊?
...全文
207
8
打赏
收藏
为什么在调用中断前,要给ah赋个值?
例如 mov al,1ch mov ah,25h int 21h 不明白为什么啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fly4free
2004-07-15
打赏
举报
回复
这是硬件设计的问题。
IBM-PC在响应(恩……,查看?)中断时,是要根据AH的值,也就是相应电路端点的高低电平来判断是哪个功能。
dunkel(内心和夜 哪个黑)
“用户自己设计了一个中断功能组”,怎么设计?还不是基于硬件的设计。当然,硬件逻辑也可抽象到软件上面……,这样说的话,所有的问题不都是软件问题?哈哈
wangziz
2004-07-14
打赏
举报
回复
35h是取中断向量
snowegale888
2004-07-09
打赏
举报
回复
good
dunkel
2004-07-09
打赏
举报
回复
fanxero(方舟二号) 上面的说法不完全对吧. 调用中断, 这里的中断应该是软中断了, 象是 int10h, int21h 等等这样的. 这样的中断, 往往是能够完成许多功能的, 如何来区别用户要实现的是哪个功能呢, 就是通过 AH 来判断的, 这就是所谓的功能号了. 把功能号置于 AH 中, 这只是个约定俗成的做法, 不是 "硬件这样设计的". 如果是用户自己设计了一个中断功能组的话, 它完全可以把功能号放到其他的寄存器里, 当然这样的做法在大家都已经习惯了在 AH 里时, 是否恰当就是另外一回事了. 实际上, 有些时候情况可能还要复杂些, 就是一个功能里面, 还可能包含更细的子功能, 象是 int21h 的 AH=44h 功能组, int10h 的 AH=0Bh 功能组等等. 这时, 除了要将功能号置于 AH 中之外, 还需要设置子功能号, 这时的做法各个中断就不完全一致了, 有放在 AL 中的, 有在 BH 中的, ...
以功能的类别来理解中断调用的参数设置, 主要是寄存器值的设置, 这样比较有条例些, 也容易理解. 虽然也可以笼统地以函数调用的参数来看, 但可能就不如前面的那种方法直观了.
SDFDSAC
2004-07-09
打赏
举报
回复
int是dos系统功能调用
ah里放的是功能号,就是具体调用哪个功能
你上面的就是调用25号功能(设置中断向量)
al里放的是调用参数
fanxero
2004-07-08
打赏
举报
回复
在C语言中,假如你定义了一个函数void fun(int a),整型变量a就是函数fun的参数。参数是处理的对象。
汇编语言调用中断服务程序,也需要给它参数,放ah里的值就是传给中断服务程序的参数,对于同一个中断不同的参数值代表不同的处理。放ah里的值所代表意义不直观,没什么为什么,硬件这样设计的。为什么要放ah里是还是因为硬件的设计这样做,完全可以设计为放在其它寄存器里。
kyq9
2004-07-08
打赏
举报
回复
tankbattle(坦克大战) 老兄能讲的详细点吗?
tankbattle
2004-07-08
打赏
举报
回复
int21h是dos提供的一个软中断,已给用户提供通用的服务,就像win32api一样。ah的值是入口参数,就像我们调用函数的参数一样,只是传递的方式不同
单片机程序设计 电子钟程序
关于8255单片机的程序设计 ;变量声明区 SECOND EQU 30H ;秒 MINUTE EQU 31H ;分 HOUR EQU 32H ;时 DAY EQU 33H ;日 MONTH EQU 34H ;月 YEAR_L EQU 35H ;年低位 YEAR_H EQU 36H ;年高位 DISPBUF EQU 37H ;显示缓冲区(6字节) DISPBIT EQU 3DH ;位选偏移量 FLAG EQU 3EH ;标记(0表示在主界面,1-6分别代表显示时、分、秒、年、月、日,0为一般显示(当
前
位置为主界面),7为显示日期,8为显示闹铃开关,9、10显示闹铃时和分,11表示不做缓冲处理) KEY EQU 3FH ;按键值 CLOSE_BIT EQU 40H ;显示屏蔽(和位选相与后送P2) A1_MINUTE EQU 41H ;闹铃1 分钟 A1_HOUR EQU 42H ;闹铃1 小时 A1_SWITCH EQU 43H ;闹铃1 开关 A2_MINUTE EQU 44H ;闹铃2 分钟 A2_HOUR EQU 45H ;闹铃2 小时 A2_SWITCH EQU 46H ;闹铃2 开关 A3_MINUTE EQU 47H ;闹铃3 分钟 A3_HOUR EQU 48H ;闹铃3 小时 A3_SWITCH EQU 49H ;闹铃3 开关 FLAG_KEEP EQU 4
AH
;闹钟持续鸣叫标志(1开启,0关闭) FLAG_ALARM EQU 4BH ;闹钟响标志(为1蜂鸣器响,为0蜂鸣器不响) FLAG_NUM EQU 4CH ;当
前
闹钟标志(1-3个闹钟) FLAG_MOVING EQU 4DH ;流水显示初始化标志(0未初始化 1已经初始化) COUNT EQU 4EH ;T0
中断
次数(T0内部使用) COUNT_1S EQU 4FH ;计数1S(满N秒后执行程序) FLAG_1S EQU 50H ;满1秒取反标志(1秒执行程序1,另一秒执行程序2) FLAG_ADD EQU 51H ;时间设置标记(1代表FLAG对应的时段加1) FLAG_CLOSE EQU 52H ;闪烁显示标记(为0不闪烁) DATE_STYLE EQU 53H ;日期显示模式标志(为1跳变切换显示,为2流水显示,为3下滑切换显示) CLOSE_BIT_TEMP EQU 54H ;屏蔽位暂存(流水显示模式) CLOSE_BIT_CODE EQU 55H ;段选屏蔽位(和段选相与后送P0) KEY_TEMP EQU 56H ;临时按键值(串口发送内容) COUNT_50MS EQU 57H ;50毫秒计数 TEMP_R0 EQU 58H ;保护R0 TEMP_R1 EQU 59H ;保护R1 TEMP_R2 EQU 5
AH
;保护R2 FLAG_DOWN_S EQU 5BH ;下移显示阶段标志(每0.2s加1;0无显示,1、2移入显示,3-17正常,18、19移出显示) MOVING_DISPBUF EQU 5CH ;临时缓冲区(流水显示模式) ;---------------------------------------------------------------------------------------------- ;主程序 ORG 00H SJMP START ORG 0BH LJMP INT_T0 ORG 13H AJMP INT_1 ORG 30H START: ;初始化 MOV SECOND,#00 MOV MINUTE,#42 MOV HOUR,#02 MOV DAY,#09 MOV MONTH,#12 MOV YEAR_L,#09 MOV YEAR_H,#20 MOV A1_SWITCH,#00H MOV A1_MINUTE,#22 MOV A1_HOUR,#12 MOV A2_SWITCH,#00H MOV A2_MINUTE,#00H MOV A2_HOUR,#00H MOV A3_SWITCH,#00H MOV A3_MINUTE,#00H MOV A3_HOUR,#00H MOV DISPBIT,#00H MOV FLAG_KEEP,00H MOV P3,#0FH ;键盘进入监控输入状态 MOV R7,#00H ;整点报时鸣铃次数清0 S
INT 21H 功能
调用
是DOS的
中断
调用
比如 MOV
AH
4CH INT 21H 是返回DOS系统的 通过给
AH
寄存器赋值4CH,然后
调用
INT 21H指令,计算机就会根据
AH
寄存器中的值执行相应的操作,其中4CH是返回DOS系统,还可给
AH
寄存器赋其他值,所对于的操作这里也有 INT 21H 功能
调用
一览表 编号 功能 入口参数 出口参数 0 程序终止 CS=PSP
汇编语言:键盘
中断
汇编语言:键盘
中断
实验目的:了解8259
中断
控制器的使用,掌握键盘
中断
的编程,观察
中断
的执行情况。 实验任务:每按下任意一个键就向CPU发出
中断
请求信号,该信号由8259的IRQ1引入,
中断
类型号为09, CPU响应
中断
后转入执行
中断
服务程序,并在屏幕上显示“OK!”,按下10次键后返回DOS。 附加任务:通过DOS系统功能
调用
的25H,35H功能实现
中断
向量的设置和读取;在显示”OK
前
加上按键次数;按下10次键盘后直接返回;修改显示字符属性
汇编语言
中断
程序实例——定时小程序
;计算机在系统加电期间,把系统定时器初始化为每55ms发出一次
中断
请求。CPU在相应定时
中断
请求后转入08H号
中断
处理程序。 ;BIOS提供的08H号
中断
处理程序中有一条
中断
指令“INT 1CH”。所以每秒要
调用
1000/55≈18.2次1CH号
中断
处理程序。 ;而BIOS的1CH号
中断
处理程序实际上并没有执行任何工作,只有一条
中断
返回指令(IRET) ;这样安排的目的就是为应用程序留下一个软
51单片机
中断
的
调用
寄存器组(PSW)的作用,以及汇编堆栈的作用,堆栈指针的SP的使用方法,RAM的运行和ROM在单片机具体运行和C语言的优势和
中断
,定时器基础知识(上)
一,
中断
和定时器的基础知识 1.1
中断
在看逻辑图和寄存器映射编写自己的程序是要注意两点:1,逻辑关系走向,2,寄存器是否可以位寻址。 CPU在正常执行程序的过程中,由于某种已经预见到的外部或CPU内部事件的发生,使CPU暂停执行当
前
的程序,而去处理临时发生的事件,在事件处理完毕后,再返回原先暂停的程序继续向下执行,这个过程叫做
中断
(Interrupt)。 编者按:下图是51系列的
中断
(在我们现在大部分是STC89C52,它又加了额外的
中断
和优先级(但兼容51),这里就不详细描述,具体可以根据数
汇编语言
21,459
社区成员
41,600
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章