




已阅读5页,还剩60页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
子程序调用指令CALL,CALL指令用在主程序中,实现子程序的调用分成段内调用(近调用)和段间调用(远调用)目标地址采用相对寻址、直接寻址或间接寻址入栈返回地址:将CALL下一条指令的地址压入堆栈16位段段内:16位偏移地址,段间:再加16位段地址32位段段内:32位偏移地址,段间:再将16位段选择器零位扩展为32位保存到堆栈,CALLlabel;调用标号指定的子程序CALLreg16/reg32;调用寄存器指定地址的子程序CALLmem16/mem32;调用存储单元指定地址的子程序,子程序返回指令RET,RET指令用在子程序结束,实现返回主程序RET;无参数返回:出栈返回地址RETi16;有参数返回:出栈返回地址,ESPESPi16,过程定义,过程定义伪指令获得子程序信息过程名PROC;过程体过程名ENDP;过程名为符合语法的标识符PROC后面可加参数:NEAR或FAR,CSEGSEGMENTASSUMECS:CSEGSTART:.CALLSUBT.MOVAH,4CHINT21HSUBTPROC(NEAR).RETSUBTENDPCSEGENDSENDSTART,子程序设计,利用过程定义,获得子程序名和调用属性RET指令返回主程序,CALL指令调用子程序压入和弹出操作要成对使用,保持堆栈平衡开始保护寄存器,返回前相应恢复安排在代码段的主程序之外子程序允许嵌套和递归可共用一个数据段,也可具有独立数据段,最好有完整的注释,难点是参数传递,子程序的参数传递,主程序与子程序间通过参数传递建立联系入口参数(输入参数):主程序子程序出口参数(输出参数):子程序主程序传递参数的多少反映程序模块间的耦合程度参数的具体内容数据本身(传递数值)数据的存储地址(传递地址,传递引用)参数传递方法:寄存器、变量或堆栈,寄存器传递参数(例5-16),最简单和常用的参数传递方法把参数存于约定的寄存器少量数据直接传递数值大量数据只能传递地址带有出口参数的寄存器不保护带有入口参数的寄存器可以保护、也可以不保护,但最好能够保持一致,例题5-16字符串显示程序-1,;数据段msgdbWell,Imadeit!,0;代码段(主程序)movsi,offsetmsg;主程序提供显示字符串calldpstri;调用子程序movah,4chint21h,寄存器地址参数传递,例题5-16字符串显示程序-2,;代码段(子程序)dpstriproc;子程序:显示字符串pushax;寄存器保护dps1:moval,si;取显示字符cmpal,0;是结尾,则显示结束jzdps2calldpchar;调用字符显示子程序incsijmpdps1dps2:popax;寄存器恢复retdpstriendp,寄存器数值参数传递,例题5-16字符串显示程序-3,dpcharproc;子程序显示字符pushax;顺序入栈,保护寄存器pushdxmovah,2movdl,al;显示一个字符int21hpopdx;逆序出栈,恢复寄存器popaxretdpcharendp,共享变量传递参数,子程序和主程序使用同一个变量名存取数据变量定义和使用不在同一个源程序中,需要利用PUBLIC、EXTREN声明共享变量传递参数,子程序的通用性较差特别适合在多个程序段间、尤其在不同的程序模块间传递数据,例题5-19有符号十进制数输出程序-1,算法如下:首先判断数据是零、正数或负数,是零显示“0”退出;是负数,显示“”,求数据的绝对值;接着数据除以10,余数加30H转换为ASCII码压入堆栈;重复第3步,直到商为0结束;依次从堆栈弹出各位数字,进行显示,例题5-19有符号十进制数输出程序-2,movecx,countmovebx,0again:moveax,arrayebx*4movdtemp,eax;入口参数存放到共享变量calldispsid;调用子程序显示一个数据incebxcalldpcrlf;光标回车换行loopagain,例题5-19有符号十进制数输出程序-3,dispsidproc;显示有符号十进制数子程序pusheax;入口参数:共享变量DTEMPpushebxpushedxmoveax,dtemp;取出显示数据testeax,eax;判断数据是零、正数或负数jnzdsid1movdl,0;是零,显示“0”后退出movah,2int21hjmpdsid5,例题5-19有符号十进制数输出程序-4,dsid1:jnsdsid2;是负数,显示“-”movebx,eax;EAX数据暂存于EBXmovdl,-movah,2int21hmoveax,ebxnegeax;数据求补(绝对值),例题5-19有符号十进制数输出程序-5,dsid2:movebx,10pushbx;10压入堆栈,作为退出标志dsid3:cmpeax,0;数据(商)为零,转向显示jzdsid4subedx,edx;扩展被除数EDX.EAXdivebx;数据除以10:EDX.EAX10adddl,30h;余数(09)转换为ASCII码pushdx;数据先低位后高位压入堆栈jmpdsid3,例题5-19有符号十进制数输出程序-6,dsid4:popdx;数据先高位后低位弹出堆栈cmpdl,10;是结束标志10,则退出jedsid5movah,2;进行显示int21hjmpdsid4dsid5:popedxpopebxpopeaxret;子程序返回dispsidendp,字符串输入功能,例题5-12输入字符串大小写转换程序-1,;数据段keynum=255keybufdbkeynum;键盘输入缓冲区db0dbkeynumdup(0);代码段movdx,offsetkeybuf;设置入口参数DXmovah,0ahint21h;用户用回车键结束movdl,0ah;回车后再进行换行movah,2int21h,输入“Hi”,回车,缓冲区:FF0248690D00,例题5-12输入字符串大小写转换程序-2,movbx,offsetkeybuf+1;输入字符个数movcl,bxmovch,0;作为循环的次数again:incbx;BX指向输入字符movdl,bx;取出一个字符cmpdl,a;小于小写字母“a”jbdispcmpdl,z;大于小写字母“z”jadisp;直接去显示subdl,20h;小写字母转换为大写字母disp:movah,2;显示一个字符int21hloopagain;循环,计数控制循环,堆栈传递参数,主程序将入口参数压入堆栈,子程序从堆栈中取出参数子程序将出口参数压入堆栈,主程序弹出堆栈取得它们采用堆栈传递参数是程式化的,它是编译程序处理参数传递、以及汇编语言与高级语言混合编程时的常规方法,例题5-20计算有符号数平均值程序-1,算法如下:被加数进行符号扩展求和除以数据个数得到平均值32位有符号数扩展到64位,32位表示数据个数(最大232),不会溢出,例题5-20计算有符号数平均值程序-2,moveax,countpusheax;压入数据个数(0表示232个)movebx,offsetarraypushebx;压入缓冲区的偏移地址callmean;调用子程序,求平均值addesp,8;平衡堆栈movdmed,eax;保存出口参数,例题5-20计算有符号数平均值程序-3,meanproc;计算有符号数平均值pushebpmovebp,esppushebx;保护寄存器pushecxpushedxpushesipushedimovebx,ebp+6;从堆栈取偏移地址movecx,ebp+10;从堆栈取数据个数,例题5-20计算有符号数平均值程序-4,xoresi,esi;ESI保存求和的低32位值movedi,esi;EDI保存求和的高32位值mean1:moveax,ebx;取出一个数据EAXcdq;符号扩展EDX.EAXaddesi,eax;求和低32位adcedi,edx;求和高32位addebx,4;指向下一个数据loopmean1;循环moveax,esi;累加和在EDX.EAXmovedx,edi,例题5-20计算有符号数平均值程序-5,movecx,ebp+10;数据个数在CXidivecx;有符号数除法,EAX平均值(EDX余数)popedi;恢复寄存器popesipopedxpopecxpopebxpopebpretmeanendp,第6章微处理器外部特性,6.18086的引脚信号6.1.1地址/数据信号6.1.2读写控制信号6.1.3其他控制信号6.28086的总线时序6.2.1写总线周期6.2.2读总线周期6.3奔腾微处理器引脚和时序6.3.1引脚定义6.3.2总线周期6.4微机系统总线6.4.1微机总线技术6.4.2ISA总线6.4.3PCI总线,CPU,外设、存储器,地址,数据,控制,运算单元,控制单元,微型计算机系统硬件结构,1.微处理器2.存储器3.I/O接口和I/O设备4.系统总线,控制总线CB,数据总线DB,地址总线AB,微处理器,I/O设备,I/O接口,存储器,系统总线BUS,处理器总线,数据总线(DB:DataBus)处理器与存储器或外设交换信息的通道个数(条数)是一次能够传送数据的二进制位数地址总线(AB:AddressBus)指定存储器或外设的具体单元个数反映访问的主存储器容量或外设范围控制总线(CB:ControlBus)控制处理器数据传送等操作,一个信号两种状态(高或低)两种编码(1或0),引脚信号,信号的功能用英文单词或英文缩写表示引脚名称信号的流向微处理器输出到外部,从外部输入到微处理器内部有效方式低电平有效,高电平有效,上升沿或下降沿有效高电平和低电平都有效三态能力高阻状态放弃对引脚的控制其他设备控制该引脚,总线信号图形表示,单一信号用单线表示,实线高低表示电平高低,虚线表示状态任意;成组信号用高低双线表示,两线交叉表示成组信号改变。双线变为一条居中横线表示输出高阻状态。,总线复用,同一引脚在不同时刻具有不同功能,最常复用:地址引脚数据引脚目的:减少引脚个数,8086的数据总线和地址总线,AD15AD0(Address/Data)地址/数据分时复用引脚,共16个引脚单向输出地址总线,双向数据总线,三态输出,8086的数据总线和地址总线,AD15AD0(Address/Data)地址/数据分时复用引脚,共16个引脚单向输出地址总线,双向数据总线,三态输出A19/S6A16/S3(Address/Status)地址/状态分时复用引脚,4个三态输出信号输出高4位地址,输出状态信号,8086的数据总线和地址总线,AD15AD0(Address/Data)地址/数据分时复用引脚,共16个引脚单向输出地址总线,双向数据总线,三态输出A19/S6A16/S3(Address/Status)地址/状态分时复用引脚,4个三态输出信号输出高4位地址,输出状态信号ALE(AddressLatchEnable)地址锁存允许,三态、输出、高电平有效有效时,表示复用引脚正在传送地址信号,8086的基本读写引脚,WR*(Write)写控制,三态、输出、低电平有效有效时,表示微处理器正将数据写到存储单元或I/O端口RD*(Read)读控制,三态、输出、低电平有效有效时,表示微处理器正从存储单元或I/O端口读取数据M/IO*(Memory/InputandOutput)访问存储器或者I/O,三态、输出、高低电平均有效高电平(M),表示微处理器访问存储器低电平时(IO*),表示微处理器访问I/O端口,基本总线操作,存储器读(MemoryRead)微处理器从存储器读取代码或读取操作数每条指令执行前都需从主存取指以存储单元为源操作数的指令在执行时存储器写(MemoryWrite)微处理器向存储器写入操作数以存储单元为目的操作数的指令在执行时,CPU,地址,数据,控制,专用寄存器,通用寄存器,.,.,地址就是号码,CPU,A0A19地址,AD0AD15数据,ALE,.,.,RD/WR,M/IO*,总线时序,总线时序(Timing)描述总线信号随时间变化的规律以及总线信号间的相互关系采用时序图形象化地表现时序指令周期一条指令从取指、译码到最终执行完成的过程总线周期或机器周期伴随有数据交换的总线操作T状态微处理器的基本工作节拍,对应时钟周期,8086的写总线周期,完成对存储器或I/O端口的一次写操作T1状态输出20位存储器地址A19A0M/IO*输出高电平,表示存储器操作或者M/IO*输出低电平,表示I/O操作ALE输出正脉冲,表示复用总线输出地址T2状态输出控制信号WR*和数据D15D0T3状态检测数据传送是否能够完成T4状态完成数据传送,MOVmem,imm/reg,M/IO*为高,8086的读总线周期,完成对存储器或I/O端口的一次读操作T1状态输出20位存储器地址A19A0M/IO*输出高电平,表示存储器操作或者M/IO*输出低电平,表示I/O操作ALE输出正脉冲,表示复用总线输出地址T2状态输出控制信号RD*,存储器或I/O端口发送数据T3状态和Tw状态检测数据传送是否能够完成T4状态获取数据,完成传送,MOVreg,mem,M/IO*为高,BHE*/S7(ByteHighEnable/Status)高字节允许/状态分时复用引脚,三态输出信号输出低有效表示传送高字节数据,输出状态信号,I/O读(Input/OutputRead)只有执行输入指令IN时才有微处理器从外设读取操作数I/O写(Input/OutputWrite)微处理器向外设写出操作数只有执行输出指令OUT时才有,基本总线操作,OUTDX/i8,AL/AX/EAX,M/IO*为低,INAL/AX/EAX,DX/i8,M/IO*为低,等待状态,微处理器运行速度远远快于存储器和I/O端口控制READY信号为低无效,不进入T4状态,插入等待状态TwTw状态:引脚信号延续T3时的状态一个Tw状态的长度是一个时钟周期在Tw的前沿,继续对READY进行测试无效继续插入Tw;有效时转入T4状态,同步操作引脚,同步操作读写操作要保证存储器或外设与微处理器速度一致否则,慢速的I/O或存储器发出一个信号让快速的微处理器等待READY就绪(准备好)输入信号,高电平有效表示可以进行数据读写利用该信号无效请求微处理器
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 社会热点事件在初中历史教学中的应用策略与实践研究
- 海洋调查设备项目风险评估报告
- 中国集成显卡行业市场深度分析及发展趋势预测报告
- 2025年 沧州市人民医院招聘考试笔试试题附答案
- 2025年中国全铜红冲三角阀行业市场发展前景及发展趋势与投资战略研究报告
- 2022-2027年中国瓜子行业市场供需现状及投资战略研究报告
- 2025年中国网络视频监控系统行业发展前景预测及投资战略研究报告
- 2024-2030全球RJ11连接器行业调研及趋势分析报告
- 小河口水电站环境影响评价报告书【专业版】
- 老年三轮车项目投资可行性研究分析报告(2024-2030版)
- 医疗保险基本政策培训PPT
- 连云港师范高等专科学校辅导员考试题库
- 2023年湖北黄冈市检察机关招聘雇员制检察辅助人员50人高频考点题库(共500题含答案解析)模拟练习试卷
- 05G525-吊车轨道联结及车挡(适用于钢吊车梁)课件
- TQGCML 757-2023 硫酸钙晶须规程
- 计数型MSA分析表
- 军校招生政治考核表格式-双面打印
- 急救-毒蛇咬伤
- YY 0334-2002硅橡胶外科植入物通用要求
- GB/T 41261-2022过程工业报警系统管理
- (完整版)杭州电子科技大学数字电路期末考试试卷及答案
评论
0/150
提交评论