- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
微机原理和应用第四章第二部分
堆栈操作指令。
(1) 堆栈
堆栈——按照先进后出原则组织的一段内存区域,
特点:
① 下推式的(规定堆栈设置在堆栈段内)改变SP的内容
② 随着推入堆栈内容增加,SP的值减小。
③先进后出工作原则(Last In First Out 简称LIFO);堆栈在内存中的情况:
可以用一条立即数传送指令给SP赋值,确定SP在SS段中的初始位置。 例:设:
(SS)=9000H , 堆栈段为64KB
MOV SP,0E200H;(SP)=0E200H
则:整个堆栈段的物理地址范围为: 90000H~9FFFFH
栈顶的物理地址为:9E200H
堆栈在内存中的情况如右图所示:;(2) 堆栈操作指令 (堆栈操作指令有两条):
入栈指令
格式:PUSH src ; (SP) ? (SP)-2
;((SP)+1,(SP)) ? (src)
修改堆栈指针,把一个字的源操作数?压入堆栈顶部
e.g. PUSH AX
出栈指令
格式:POP dest ; (dest) ? ((SP)+1,(SP))
; (SP) ? (SP)+2
把现行SP所指向堆栈顶部的一个字 ? 指定的目的操作数,同时进行修改堆栈指针的操作。
e.g. POP BX;(3)堆栈用途:
存放CPU寄存器或存储器中暂时不使用的数据,使用数据时将其弹出;
调用子程序, 响应中断时都要用到堆栈。
调用子程序(或过程)或发生中断时要保护断点的地址,子程序或中断返回时恢复断点。; 存放CPU寄存器或存储器中暂时不使用的数据,
PUSH AX ; 将(AX)入栈;使用数据时将其弹出:
POP BX; 调用子程序(或过程)或发生中断时要保护断点的地址,子程序或中断返回时恢复断点。; 应用时注意:
① 堆栈操作都按字操作。
② PUSH , POP 指令的操作数可能有三种:
寄存器(通用寄存器,地址指针,变址寄存器),
段寄存器(CS除外,PUSH CS 合法,POP CS 非法),
存储器。
③ 执行PUSH 指令, (SP)-2 ? (SP),低字节放在低地址,高字节放在高地址。随着推入堆栈内容增加,堆栈就扩展,SP的值减少,但SP总是指向栈顶。
④ 堆栈工作原则后进先出。 PUSH ,POP指令应该成对使用,保持堆栈原有状态。
⑤ 堆栈最大容量即为SP的初值与SS???间的差。;堆栈应用举例:
;;应用举例:
XCHG BL, DL
XCHG AX, SI
XCHG COUNT[DI], AX
XCHG [BX],[DI] (错)
XCHG DS, AX (错);该指令不影响标志位。
格式:XLAT ;(AL)←((BX )+(AL))
起始地址预存在BX中,AL中存放的是偏移地址。;XLAT指令应用:
若把字符的扫描码转换成ASCII码; 或数字0~9转换成7段数码所需要的相应代码(字形码)等就要用XLAT指令。
例:内存的数据段中有一张十六进制数字的ASCII码表。
首地址为:Hex_table ,欲查出表中第10个元素(‘A’)
;执行指令序列:
MOV BX,OFFSET Hex_table
MOV AL,0AH
XLAT
假设:
(DS)=0F000H,
Hex_table=0040H
(AL)=0AH
执行XLAT以后:
(AL)=41H=(0F004AH),
即“A”的ASCII码。;输入输出指令共两条,用于CPU和外设之间的数据传送
1. IN
2. OUT
输入指令用于CPU从外设端口接收数据(读),
输出指令用于CPU向外设端口发送数据(写)。
无论接受还是发送数据,必须通过累加器AX(字)或AL(字节),又称累加器专用传送指令 。
输入、输出指令不影响标志位。; 每个外设要占几个端口:数据口,状态口和控制口。每个端口像存储单元一样要赋予一个地址,称端口地址。;信息交换要通过端口:
在IBMPC机
文档评论(0)