汇编语言程序设计33_第1页
汇编语言程序设计33_第2页
汇编语言程序设计33_第3页
汇编语言程序设计33_第4页
汇编语言程序设计33_第5页
已阅读5页,还剩26页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

IBMPC机的指令系统80x86指令系统分成下列六大类:数据传送指令算术运算指令逻辑运算和移位指令控制转移指令串操作指令CPU控制指令与标志位处理指令控制转移指令无条件转移指令条件转移指令子程序调用和返回指令中断指令无条件转移指令格式:JMP地址表达式功能:使程序的流程无条件跳到转移地址所指的地方。转移目的地址=(CS)×16+(IP)段内转移:改变IP的内容,CS的内容不变。段间转移:IP、CS的内容都改变。段内直接寻址:指令中直接给出到达的目标地址例如:JMPPROG1;转移范围:-32768~+32767JMPSHORTNEXT;转移范围:-128~+127段内间接寻址:指定某个寄存器的内容或某个字单元的内容作为转移地址的偏移地址。例如:JMPBX;(BX)

IPJMPWORDPTR[1000H];(DS:1000H)

IPJMPWORDPTR[SI+2];(DS:SI+2)

IPJMPTABLE[BX];(DS:TABLE+(BX))

IP段间直接寻址:通过标号直接给出转移地址例如:JMPFARPTRNEXTP;NEXTP的段址

CS,偏址

IPJMPNEXTP1;NEXTP1的段址

CS,偏址

IP段间间接寻址:指定一个4字节的单元内容作为转移地址,其中低二字节内容

IP,高二字节内容

CS。例如:JMPDWORDPTR[100H]JMPDWORDPTR[BX]Notice!段内与段间直接寻址可以有相同的格式标号前可以有:SHORT、FAR(NEAR)PTR机器指令中使用的是位移量间接转移注意类型条件转移指令标志位条件转移指令二个无符号数比较转移指令二个带符号数比较转移指令标志位条件转移指令JC标号;当(CF)=1,则转移。JNC标号;当(CF)=0,则转移。JZ/JE标号;当(ZF)=1,则转移。JNZ/JNE标号;当(ZF)=0,则转移。JS标号;当(SF)=1,则转移。JNS标号;当(SF)=0,则转移。JO标号;当(OF)=1,则转移。JNO标号;当(OF)=0,则转移。JP标号;当(PF)=1,则转移。JNP标号;当(PF)=0,则转移。二个无符号数比较转移指令设A为被减数,B为减数。CMPA,BJA标号;当A>B时转移;JAE标号;当A≥B时转移;JB标号;当A<B时转移;JBE标号;当A≤B时转移。CFZF二个带符号数比较转移指令JG标号;当被减数大转移;JGE标号;当被减数大于等于减数转移;JL标号;当被减数小转移;JLE标号;当被减数小于等于减数转移SFOFZF例子1完成分段函数

-1AL<0AH=0AL=01AL>0JCXZ/JECXZ条件转移指令格式:JCXZ/JECXZ标号功能:当(CX)/(ECX)=0时,转向标号循环控制指令LOOP/LOOPE/LOOPNE格式:LOOP标号;功能:(CX)-1

CX,若(CX)≠0,则转移功能等价DECCXJNZ标号格式:LOOPE/LOOPNE(CX<>0)and(ZF==1/0)PUSHFDECCXJCXZOVERPOPFJZ标号OVER:Notice!除无条件转移指令只能使用标号;条件转移指令在386前只能是段内直接短转移,即偏移量为-128~127;JCXZ、JECXZ和LOOP只能是段内直接短转移。使用LOOP指令,注意初始值是否为0。(不同于rep)JCClabelJNCCskipnextJMPlabelSkipnext:习题找出100个有符号字节数中间的最大数。过程调用和返回指令调用指令CALL格式:CALL子程序/地址表达式功能:保护断点——将当前断点压入堆栈;转入子程序——将子程序段的入口地址送入IP(/CS);段内直接调用CALLSubx执行过程:PUSHIP;Subx入口地址

IP段内间接调用:子程序的入口偏移地址存放在Reg或者Mem中CALLBXCALLWORDPTR[1000H]执行过程:PUSHIP;子程序入口地址

IP段间直接调用CALLSubf或CALLFARPTRSubf执行过程:PUSHCS;PUSHIP;子程序入口地址

CS,IP

段间间接调用:子程序入口段地址和偏移地址存在DWORD中CALLDWORDPTRADDR执行过程:PUSHCS;PUSHIP;ADDR

IP;ADDR+2

CS子程序返回指令RET(N/F)格式:RET[n]功能:返回主程序。根据子程序的属性Near、Far决定:段内返回:POPIP段间返回:POPIP;POPCSRETn:返回;并执行SP=SP+n;CALL与RET类型必须一致codesegmentmainprocfar……

callsub……retmainendpsubprocnear……retsubendpcodeends

段内调用和返回code1segmentmainprocfar……

callsub……retmainendpcode1endscode2segmentsubprocfar……retsubendpcode2ends

段间调用和返回子程序调用和返回:段内、段间CALL与RET指令的模拟CALL模拟PUSHCS;段间需要MOVAX,OFFSETRETADD;PUSHAXJMP过程名RET模拟POPAX;弹出IPJMPAX;段内段间怎么办?中断调用与返回指令中断:数据传输方式;软中断和硬中断中断服务程序:处理中断的子程序;中断向量:中断子程序的入口地址中断向量表:存放在00000H地址的四字节表格中断类型码:给中断向量的一个编号

(中断向量表查看:debug)中断调用指令INT格式:INTn功能:调用n号中断子程序操作:PUSHF;PUSHCS;PUSHIP取得中断向量,转入中断返回指令IRET格式:IRET操作:POPIP;POPCS;POPFDOS中断调用MS-DOS“API”&System“API”AH为功能号DOSINT部分使用AL/AX作为返回值—0-成功;1-失败

IBMPC机硬件系统

基本输入输出系统(BIOS)

磁盘操作系统(DOS)

高级语言

用户程序

DOS21H号中断调用1.从键盘读入一个字符MOVAH,1/8[回显/不回显]INT21H;键入字符的ASCII存入AL中2.显示一个字符到屏幕MOVAH,2MOVDL,ASCIIINT21H;DOS21H号中断调用3.显示一个字符串到屏幕MOVAH,9LEADX,STRINGINT21H;;字符串要求以”$”结束4.从键盘读入一个字符串到屏幕MOVAH,0AHLEADX,STRINGINT21HSTRING第一个字节为长度;第二个为实际输入的长度。DOS21H号中断调用5. 返回DOSMOVAH,4CHINT21HIBMPC机的指令系统80x86指令系统分成下列六大类:数据传送指令算术运算指令逻辑运算和移位指令控制转移指令串操作指令CPU控制指令与标志位处理指令CLCCF←0CMCCF←

CFSTCCF←1CLDDF←0STDDF←1

CLIIF←0

STIIF←1

注意:只影响本指令指定的标志

标志处理指令NOP空操作(机器码:90H)与XCHGA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论