微机接口原理课件第3章 80x86的指令系统和寻址方式_第1页
微机接口原理课件第3章 80x86的指令系统和寻址方式_第2页
微机接口原理课件第3章 80x86的指令系统和寻址方式_第3页
微机接口原理课件第3章 80x86的指令系统和寻址方式_第4页
微机接口原理课件第3章 80x86的指令系统和寻址方式_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

第3章

8086汇编语言指令系统

《微机原理与接口技术》2

本章主要内容8086指令的格式常用汇编语言指令介绍汇编语言编程的格式(补)38086指令的格式

操作码操作数…….操作数操作码字段指示计算机要干什么?操作数字段指出在指令执行操作的过程中所需要数据的来源。举例:三条指令:MOVAX,0064H;数据传送指令机器码:B86400ADDAX,0100H;加法指令机器码机器码:050001MOV[2000],AX;数据传送指令机器码:A30020指令一般格式操作数字段的三种形式:

1、操作数本身(立即寻址方式)

2、操作数地址(直接寻址方式)

3、指向操作数地址的指针(间接寻址方式)3.18086的寻址方式一、数据寻址方式(二、程序寻址方式)

1、立即寻址方式例:MOVAL,08H2、寄存器寻址方式例:MOVAX,BX3、直接寻址方式例:MOVAX,[2000H];段地址在DS中,指令不用写

4、寄存器间接寻址例:MOVAX,[BX]

如已知(DS)=2000H,(BX)=1000H,(21000H)=3050H

问:此指令执行后,(AX)=?

二、程序寻址方式1、段内直接转移

JMPNEARPTRPROGIA

;无条件转,16位跳转范围

JMPSHORTQUEST

;无条件转,08位跳转范围;PROGIA,QUEST

为符号地址

2、段间直接寻址方式

JMPFARPTRNEXT

;NEXT

为符号地址

3.28086的指令系统常用汇编指令:1、MOVAX,1234H立即寻址方式指令2、MOVAX,[1234H]直接寻址方式指令3、MOVAX,BX寄存器寻址方式4、MOVAX,[BX]寄存器间接寻址方式5、MOVAX,[BX][DI]基址变址寻址方式6、INAX,28HI/O口传送指令—设备信号读入7、OUT5,ALI/O口传送指令—写入设备,如遇大地址用DX8、JMPOPR无条件转移到OPR9、JCOPR有进位转移到OPR10、JZOPR结果为零转移到OPR11、JNZOPR结果非零转移到OPR12、MOVBX,OFFSETLIST地址传送指令13、ADDAX,BX不带进位加14、ADCAX,BX带进位加15、INCAX;加1指令16、DECCX;减1指令17、INTN调用指令,N为中断号18、IRET中断服务返回指令7

I/O口传送指令:外设输入指令:

例1:INAX,28H;从端口28H输入一字例2:MOVDX,3FCHINAX,DX;对16位地址必须借助;DX寄存器寻址

向外设输出指令:

例1:OUT5,AL;向端口5输出一字节例2:MOVDX,500HOUTDX,AL;对16位地址必须借助

;DX寄存器寻址注意:I/O大地址必须用DX寄存器寻址方式条件转移指令的应用编程举例:MOVCX,30MOVBX,0AGAIN:

INCBXDECCXJNZAGAINMOVAX,BX循环指令:LOOP

MOVCX,30

MOVBX,0AGAIN:INCBXLOOPAGAINMOVAX,BX简单学习附录1:8086指令系统一览表9常用伪指令:1、等值伪指令:EQUmmequ56;定义后,mm就等于56

2、定义数据的伪指令:DB,DW

它们分别定义:1个字节、2个字节

ABCDB39,250,?,0,?;定义字节单元

DEFDW983,2358,?,?;定义字单元(像数组)3、地址计数器:$

arraydb32,43,56,8,65countequ$-array4、段定义伪指令:SEGMENT……ENDS〈段名〉SEGMENT..〈段名〉ENDS10汇编语言程序的格式数据段名SEGMENT

;SEGMENT

段定义伪指令,与ENDS构成一对使用数据空间预置数据段名ENDS堆栈段名

SEGMENT

堆栈空间预置堆栈段名ENDS代码段名SEGMENTASSUME

段地址说明START:

段地址装填(除代码段CS外,其它段均要装填。CS段是系统在加载程序后自动装填的,即由操作系统的任务管理程序自动完成装填的,此项装填不需要用户管理。)主程序体

..代码段名ENDS;代码段结束

ENDSTART;全部程序结束11datasegment;数据段

arraydb32,43,56,8,65countequ$-arraysumdw?dataendsstacksegment;堆栈段

stakdb10dup(?)stackendscodesegment;代码段

assumecs:code;段地址说明

ds:datass:stack;前面全是伪指令

start:movax,data;段地址装填

movds,axmovax,stackmovss,ax;;;;代码段不用装填!!

movdi,offsetsum;有效地址

movbx,offsetarraymovcx,countmovax,0Lop:addal,[bx]adcah,0;带进位加

incbxlooplopmov[di],axmovah,4chint21h;返回DOSCodeendsendstart例:编一个程序,其功能是对5个数据求和,并将结果放入SUM单元。14、

ABCDB39,250,?,0,?

定义数据的伪指令15、SEGMENT……ENDS

段定义伪指令14常用汇编语言指令介绍一、数据寻址方式类指令(只讲以后用到的主要指令)

2.

寄存器寻址方式

例3.4(a)MOVAX,BX;16位例3.4(b)MOVECX,EDX

;32位,80386机及以后才有

1.

立即寻址方式

例3.1MOVAL,8;(AL)=08H,08H是立即数例3.2MOVAX,1234H;(AX)=1234H例3.3MOVEAX,12345678H;(EAX)=12345678H.

注意:立即数长度应予目的操作数长度一致。153.

直接寻址方式

例3.5MOVAX,[2000H];注意2000H是偏移地址,也称有效地址如(DS)=3000H,(32000H)=3050H,执行结果为:(AX)=3050H。说明:该指令的有效地址为2000H,操作数的物理地址=数据段基地址*16+有效地址(2000H)注意:不要与立即寻址方式相混淆。(害怕混淆所以用了[])164.基址变址寻址方式

例:MOVAX,[BX][DI](或写为:MOVAX,[BX+DI])对于32位寻址方式可有:

MOVEDX,[EBX][EDI]

这种寻址方式适用于数组(一维、二维)或表格处理,其首地址可存放在基址寄存器中,而通过修改变址寄存器的内容来访问数组中的各个元素。一、数据寻址方式类指令[上面所讲]二、程序寻址方式类指令[程序跳转]1、段内无条件转移指令:

JMPNEARPTRPP;近转移(16/32)PP为符号地址

;NEARPTR

为操作符。;对8086转移16位,对386及以后机型转移32位

2、段间无条件远转移指令:

JMPWORDOTROPR

;OPR为符号地址●后面还要介绍有条件跳转17

其他类型汇编语言指令补充1、PUSHAX;进栈指令2、POPAX;出栈指令3、PUSHF;标志寄存器内容进栈4、POPF;标志寄存器内容出栈

I/O口传送指令:5、外设输入指令:例1:INAX,28H;从端口28H输入一字例2:MOVDX,3FCHINAX,DX;对16位地址必须借助;DX寄存器寻址6、向外设输出指令:例1:OUT5,AL;向端口5输出一字节例2:MOVDX,500HOUTDX,AL;对16位地址必须借助

;DX寄存器寻址注意:I/O大地址必须用DX寄存器寻址方式4187、地址传送指令:LEALEABX,LIST;将符号地址LIST的有效地址送BXMOVBX,OFFSETLIST;同上,又一种写法,建立中断向量;时要用到。;表示某段子程序LIST:***************

8、加减指令

ADDAX,CX;不带进位加AX(AX)-(CX)

ADCDX,BX;带进位加

SUBAX,BX;减法指令AX(AX)-(BX)

INCAX;加1DECCX;减1注意:MOVBX,LIST([LIST])什么意思?199、逻辑运算指令(1)AND逻辑与指令格式:ANDDST,SRC

执行的操作:(DST)←(DST)∧(SRC)

(2)TEST测试指令格式:TESTOPR1,OPR2

执行的操作:(OPR1)∧(OPR2),两个操作数相与的结果不保存,只改变相关标志位,如零标志。例:TESTAX,01H;测试AX的第0位

JZEVEN;为0转移,条件转移指令JZ,下面要讲到例:TESTAX,01H;测试AX的第0位

JNZEVEN;为1转移2010、条件转移指令[程序何往?凭啥条件?]①JZOPR测试条件:ZF=1,结果为零转移;②JNZOPR测试条件:ZF=0,结果不为零转移;③JCOPR测试条件:CF=1,有借位(进位)转移;

条件转移指令的应用举例:MOVCX,30MOVBX,0AGAIN:

INCBXDECCXJNZAGAINMOVAX,BX11、循环指令LOOP

MOVCX,30

MOVBX,0AGAIN:INCBXLOOPAGAINMOVAX,BX2112.比较指令CMPop1,op2;op1-op2有借位吗?执行后只改变借位标志注:op1是寄存器,op2是立即数或存储器单元;此指令要配合条件转移指令使用。例:x1x2为两个字节单元,请按由小到大顺序放入y1y2

字节单元。编程

温馨提示

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

评论

0/150

提交评论