一、8086寻址机制 ppt课件_第1页
一、8086寻址机制 ppt课件_第2页
一、8086寻址机制 ppt课件_第3页
一、8086寻址机制 ppt课件_第4页
一、8086寻址机制 ppt课件_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

1、第三章第三章 80868086指令系统和寻址方式指令系统和寻址方式 学习目的学习目的 了解编辑程序、汇编程序、衔接程序的功能及其输入、输出了解编辑程序、汇编程序、衔接程序的功能及其输入、输出文件的类型文件的类型 了解汇编言语源程序框架,熟习程序段定义和过程定义伪操了解汇编言语源程序框架,熟习程序段定义和过程定义伪操作作 熟习数据类型和数据定义伪操作熟习数据类型和数据定义伪操作 熟练掌握并运用熟练掌握并运用8086指令集及各类寻址方式指令集及各类寻址方式3.1 汇编言语程序格式汇编言语程序格式3.2 寻址方式与机器言语转换寻址方式与机器言语转换3.3 8086指令系统指令系统3.1 汇编言语程序

2、格式汇编言语程序格式1、一个简单程序的实例教材、一个简单程序的实例教材 P51;- - - - - - - - - - - - - - - - - - - - - - - - - - -STSEG SEGMENT DB 64 DUP(?)STGSEG ENDS;- - - - - - - - - - - - - - - - - - - - - - - - - - - -DTSEG SEGMENT DATA1DB 36H DATA2DB 4BH SUMDB ?DTSEG ENDS;- - - - - - - - - - - - - - - - - - - - - - - - - - - -;汇编

3、言语源程序的格式汇编言语源程序的格式 PAGE 60,132TITLE PROG0-ADDs the data together,and store the result堆栈段堆栈段数据段数据段CDSEGSEGMENTMAINPROC FAR ;this is the program entry pointASSUME CS:CDSEG,DS:DTSEG,SS:STSEGSTART: MOV AX,DTSEG ;load the data segment address MOV DS,AX ;assign value to DS MOV AL,DATA1 ;get the first oper

4、and MOV BL,DATA2 ;get the second operand ADD AL,BL ;add the operands MOV SUM,AL ;store result in location SUM MOV AH,4CH ;set up to INT 21H ;return to DOSMAINENDPCDSEGENDSENDSTART ;this is the program exit point代码段代码段 汇编言语程序源程序由一系列语句程序行汇编言语程序源程序由一系列语句程序行组成。组成。两类语句两类语句伪指令伪指令指示汇编程序如何将汇编言语指示汇编程序如何将汇编言语

5、指令转换成机器代码。指令转换成机器代码。汇编言语指令汇编言语指令指出指出CPU要执行的操作;要执行的操作;由操作符助记符、由操作符助记符、操作数组成。操作数组成。汇编语句组成汇编语句组成四个域:四个域:标号标号: 助记符助记符 操作数操作数 ;注释注释如如: DATA1 DB 36H ;变量变量-数据的数据的符号地址符号地址 START: MOV AX, DTSEG ;标号标号- 指令的指令的符号地址符号地址标号域经过标号名或变量名与紧随其后的代码行地址对标号域经过标号名或变量名与紧随其后的代码行地址对应。应。汇编言语指令行的标号必需用冒号:终了,如汇编言语指令行的标号必需用冒号:终了,如ST

6、ART: 伪指令行的标号不需求冒号作终了符,如伪指令行的标号不需求冒号作终了符,如DATA1 汇编言语指令及其操作数经汇编汇编言语指令及其操作数经汇编MASM和衔接和衔接LINK后生成机器代码。后生成机器代码。注释以注释以“;开场,它通常是对指令行或程序段功能的;开场,它通常是对指令行或程序段功能的阐明。汇编程序对注释不进展处置。阐明。汇编程序对注释不进展处置。伪指令伪指令(伪操作伪操作)伪指令是汇编程序对源程序进展汇编时处伪指令是汇编程序对源程序进展汇编时处置的操作命令。置的操作命令。伪指令不能生成机器代码,它只为汇编程伪指令不能生成机器代码,它只为汇编程序提供转换源程序的命令序提供转换源程

7、序的命令3 汇编言语指令汇编言语指令操作符助记符操作符助记符-对对CPU发出的操作发出的操作命令;命令;操作数一个或两个操作数一个或两个-指出要处置的指出要处置的数据;数据;两条常用指令:两条常用指令:MOV 和和 ADD MOV dst, src; (dst) (src) 操作符操作符 目的目的 源操作数源操作数 操作数操作数 例例: MOV AH,BL MOV AX,1234H ADD dst, src; (dst) (dst)+(src) 助记符助记符 目的目的 源操作数源操作数 操作数操作数 例例: ADD AL,36H ADD BX,CX4) 汇编言语程序的逻辑段汇编言语程序的逻辑段

8、 堆栈段堆栈段 数据段数据段 代码段代码段 附加段附加段堆栈段堆栈段-为程序堆栈定义一块存储区,大小由用为程序堆栈定义一块存储区,大小由用 户定义,最大户定义,最大64KB。 后进先出方式,堆栈指针后进先出方式,堆栈指针SP总指向栈顶总指向栈顶, 数据进出栈自动修正数据进出栈自动修正SP。数据段数据段-程序的数据存储区,定义程序要用的数据程序的数据存储区,定义程序要用的数据, 程序指令经过变量来援用数据;程序指令经过变量来援用数据; 变量变量-数据存储单元的符号地址;数据存储单元的符号地址;l附加段附加段-附加的数据存储区;附加的数据存储区;l 串操作时,存字符串的目的地址必需在串操作时,存字

9、符串的目的地址必需在l 附加段,故程序中必需定义附加段。附加段,故程序中必需定义附加段。l代码段代码段-程序代码存储区;程序代码存储区;l 代码段中指令的地址由代码段中指令的地址由CS段地址段地址和和l IP偏移地址确定;偏移地址确定;l IP总是保管着下一条将要执行的指令总是保管着下一条将要执行的指令的的l 偏移地址。偏移地址。1段定义段定义段名段名 SEGMENT 选项选项 - 段开头段开头 段名段名 ENDS - 段结尾段结尾 SEGMENT和和ENDS是段定义伪操作指令,是段定义伪操作指令,必需成对;必需成对;SEGMENT和和ENDS前的段名必需一致。前的段名必需一致。2、程序构造伪

10、操作、程序构造伪操作l堆栈段定义堆栈段定义l例:例:lSTSEG SEGMENT STACK ;段定义开场;段定义开场l DB 64 DUP?;段定义体内容?;段定义体内容lSTSEG ENDS ;段定义终了;段定义终了l给名为给名为STSEG的堆栈段定义了的堆栈段定义了64个字节的存储个字节的存储空间。空间。n数据段定义数据段定义n例例nDTSEGSEGMENTnDATA1DB 36HnDATA2DB 4BHnSUM DB ?nDTSEGENDS定义了定义了3个数据项:个数据项:DATA1、DATA2;其中;其中DATA1、DATA2分别定义了分别定义了初始值初始值36H、4BH,SUM没有

11、初始值没有初始值,只分配了一个字节的存储单元。,只分配了一个字节的存储单元。每个数据项都是字节变量;每个数据项都是字节变量; 数据段中定义的数据由代码段中的指令经过变量名来访问。数据段中定义的数据由代码段中的指令经过变量名来访问。 如代码段中:如代码段中: MOV AL ,DATA1 CPU执行时经过变量名执行时经过变量名DATA1获得数据获得数据36H送送AL存放器。存放器。l代码段定义代码段定义lCDSEGSEGMENT ;代码段定代码段定义开场义开场,段名段名CDSEGlMAINPROCFAR ;过程定义过程定义开场,过程名开场,过程名MAIN lASSUME CS:CDSEG,DS:D

12、TSEG,SS:STSEG ;段存放器段存放器分配分配lSTART: MOV AX,DTSEG l MOV DS,AX l MOV AL,DATA1 l MOV BL,DATA2 l ADD AL,BL l MOV SUM,AL l MOV AH,4CH l INT 21H lMAINENDP ;过程过程MAIN定义终了定义终了 lCDSEGENDS ;代码段定义代码段定义终了终了lEND START 定定义义一一个个过过程程代代码码段段l过程定义:过程定义:l过程过程-具有独立功能的子程序;具有独立功能的子程序;l一个代码段可以只需一个过程;为使程序构造更明一个代码段可以只需一个过程;为使程

13、序构造更明晰,一个代码段通常由几个过程组成;晰,一个代码段通常由几个过程组成;l格式:过程名格式:过程名 PROC 属性属性 开头开头l l 过程名过程名 ENDP 结尾结尾lPROC/ENDP-过程定义伪操作。过程定义伪操作。l属性属性-有两个:有两个:FAR/NEAR,默以为,默以为NEAR;阐;阐明当用明当用CALL指令对该过程调用时,是指令对该过程调用时,是NEAR段段内还是内还是FAR段间调用,从该过程前往时是近段间调用,从该过程前往时是近段内还是远段间前往。段内还是远段间前往。l主过程为主过程为FAR,子过程假设与调用它的主子,子过程假设与调用它的主子过程在同一代码段中,可定义为过

14、程在同一代码段中,可定义为NEAR;否那么为;否那么为FAR。 (P54) 程序清单程序清单3.2代码段由代码段由1个主过程个主过程MAIN和和3个子过程个子过程SUBR1、SUBR2、SUBR3组成。组成。ASSUME伪操作伪操作格式:格式:功能:把程序中定义的各个段分配给段存放器,使功能:把程序中定义的各个段分配给段存放器,使程序中运用的段名与段存放器建立起对应关系。程序中运用的段名与段存放器建立起对应关系。ASSUME伪操作在程序中是必需的。伪操作在程序中是必需的。段存放器段存放器:段名标识符段名标识符ASSUME,l程序终了伪操作程序终了伪操作l格式:格式:END labell功能:表

15、示源程序的终了。功能:表示源程序的终了。l 其中标号其中标号label指示程序开场执指示程序开场执行的行的l 起始地址。起始地址。l假设一个源程序由多个模块组成,那么主假设一个源程序由多个模块组成,那么主模块即主程序或主过程所在的模块中模块即主程序或主过程所在的模块中的的END伪指令必需带有伪指令必需带有label选项,其它模选项,其它模块中的块中的END伪指令不带伪指令不带label选项。选项。2. 程序运转步骤及生成的文件myfile.asmmyfile.crfotherfiles.objmyfile.lstmyfile.objmyfile.mapmyfile.exe编编 辑辑 程程 序序

16、汇汇 编编 程程 序序MASM.EXE连连 接接 程程 序序LINK.EXE源程序文件源程序文件目的程序文件目的程序文件可执行程序文件可执行程序文件列表文件列表文件交叉援用文件交叉援用文件映象文件映象文件建立建立, 运转汇编言语程序运转汇编言语程序CEDIT MYFILE.ASM 编辑源程序文件,文件名编辑源程序文件,文件名MYFILE,扩展名扩展名.ASMCMASM MYFILE.ASM 对源文件对源文件MYFILE.ASM进展汇编进展汇编 Microsoft (R) Macro Assembler Version 5.10 Copyright (C) Microsoft Corp 1981

17、,1988.All rights reserved. Object filename MYFILE.OBJ: Source listing NUL.LST: MYFILE.LST Cross-reference NUL.CRF: 47962 + 413345Bytes symbol space free 0 Warning Errors 0 Severe ErrorsCLINK MYFILE.OBJ 对目的文件对目的文件MYFILE.OBJ进展衔接进展衔接 Microsoft (R) Overlay Linker Version 3.64 Copyright (C) Microsoft Cor

18、p 1983-1988. All rights reserved. Run File MYFILE.EXE: List File NUL.MAP: Libraries .LIB: LINK : warning L4021: no stack segment CMYFILE 运转可执行文件运转可执行文件MYFILE.EXEl.asm文件文件-源程序文件,能过编辑产生。源程序文件,能过编辑产生。l.obj文件文件-执行汇编程序执行汇编程序MASM,将,将.asm源文件中的汇编言语指令转换成机器言语源文件中的汇编言语指令转换成机器言语-目的文件。目的文件。l.lst文件文件-列表文件,汇编列表文件,

19、汇编MASM时产生时产生的可选文件。的可选文件。.lst文件列出了全部机器言语代码、文件列出了全部机器言语代码、偏移地址以及由偏移地址以及由MASM检查出来的错误。检查出来的错误。l.crf文件文件-交叉援用文件,也是汇编交叉援用文件,也是汇编MASM时产生的可选文件。时产生的可选文件。.crf文件提供一个交叉援文件提供一个交叉援用表,列出了程序中运用的一切符号及其被定用表,列出了程序中运用的一切符号及其被定义的行号和被援用的行号。义的行号和被援用的行号。l.map文件文件-映象文件,是衔接程序映象文件,是衔接程序LINK产生的可选文件。产生的可选文件。.map文件给出了每个段的段文件给出了每

20、个段的段名及其在存储器中的起始地址、终了地址和段名及其在存储器中的起始地址、终了地址和段长度字节数长度字节数l.exe文件文件-可执行文件,是衔接程序可执行文件,是衔接程序LINK产生的。可被操作系统产生的。可被操作系统DOS装入内存并由装入内存并由微处置器执行。微处置器执行。3. 常用伪操作常用伪操作(1) 程序构造伪操作程序构造伪操作段定义伪操作段定义伪操作 段名段名 SEGMENT 段名段名 ENDS过程定义伪操作过程定义伪操作 过程名过程名 PROC NEAR/FAR 过程名过程名 ENDP 程序开场伪操作程序开场伪操作 TITLE 程序名程序名 - 程序阐明程序阐明(60个个ASCI

21、I字符字符) 程序终了伪操作程序终了伪操作 END 标号如标号如START 段分配伪操作段分配伪操作 ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA(2) 数据类型及数据定义伪操作数据类型及数据定义伪操作ORG 指定数据段数据的存储地址起始地址的偏移指定数据段数据的存储地址起始地址的偏移量或代码段的起始地址偏移地址量或代码段的起始地址偏移地址 格式:格式:ORG 数值数值 例例: ORG 100H DATA1 DB 100 例:例:ORG 200HSTART:MOV AX,BX DB 定义字节定义字节, 是独一能定义字符串的伪操作是独一能定义字符串的伪操作.;

22、List File for DB Examples0000 19DATA1 DB 25 ; decimal number0001 89DATA2 DB 10001001B ; binary number0002 12DATA3 DB 12H ; hexadecimal number0010 ORG 0010H ; the offset address is 10h0010 32 35 39 31 DATA4 DB 2591 ; ASCII number0018 ORG 0018H ; the offset address is 18h0018 00 DATA5 DB ? ; set aside

23、 a byte0020 ORG 0020H ; the offset address is 20h0020 4D 79 20 6E 61 DATA6DB My name is Joe ; ASCII characters 6D 65 20 69 73 20 4A 6F 65002E 0A 10 02 31 30 42 DATA7 DB 10,10H,10B,10B ; different data typesDW 定义字定义字 2字节,低字节,低8位存低地址字节,高位存低地址字节,高8位存高地址位存高地址字节。字节。 ; List File for DW Examples0070 ORG 70

24、H0070 03BA DATA DW 954 ; decimal0072 0954 DATA9 DW 100101010100B; binary0074 253F DATA10 DW 253FH ; hexadecimal0076 FFFB DATA11 DW -5 ; negative0080 ORG 80H0080 0009 FFFF DATA12 DW 9,-1,7,0CH,00100000B,100,HI 0007 000C 0020 0064 4849 008E 0070 R 0076 R DW DATA, DATA11 ; List File for DD Examples00A0

25、ORG 00A0H00A0 FF030000 DATA13 DD 1023 ; decimal00A4 5C960800 DATA14 DD 10001001011001011100B ; binary00A8 F2572A5C DATA15 DD 5C2A57F2H ; hexadecimal00AC 23000000 DATA16 DD 23H,34789H,65533 ; scellaneous 89470300 FFFD0000DD 定义双字定义双字对其后的每个数据分配对其后的每个数据分配4个字节个字节2个字;个字;自动将数据转换成十六进制;自动将数据转换成十六进制;低地址存放低字节,

26、高地址存放高字节;低地址存放低字节,高地址存放高字节;DQ 定义定义4字字 每个数据占每个数据占8字节字节DT 为紧缩的为紧缩的BCD数据分配存储单元数据分配存储单元 分配分配10字节,但最多只能输入字节,但最多只能输入18个数字,数据后不加个数字,数据后不加“H ; List File for DQ ,DT Examples00C0 ORG 00C0H00C0 C223450000000000 DATA17 DQ 4523C2H ; hexadecimal00C8 4948000000000000 DATA18 DQ HI ; ASCII characters00D0 ? DATA19 DQ

27、 ? ; nothing00E0 ORG 00E0H00E0 2998564379860000 DATA20 DT 867943569829 ; BCD 000000EA ? DATA21 DT ? ; nothing ?DUP 按照给定的次数来复制某个按照给定的次数来复制某个(某些某些)操作数操作数 ; List File for DUP Examples0100 ORG 0100H0100 0020 DATA22 DB 32 DUP(?) ; set aside 32 bytes ? 0120 ORG 0120H0120 0005 DATA23 DB 5 DUP(2 DUP(99) ; f

28、ill 10 bytes with 99 0002 63 012A 0008 DATA24 DW 8 DUP(?) ; set aside 8 words ? EQU 赋值伪操作赋值伪操作给一个数据标号赋予一常数值,可在数据段之外给一个数据标号赋予一常数值,可在数据段之外包括代码段运用;包括代码段运用;EQU赋值的标号名不允许反复定义。赋值的标号名不允许反复定义。 =伪操作允许对其前面的标号反复定义。伪操作允许对其前面的标号反复定义。COUNT EQU 25COUNTER1 DB COUNTCOUNTER2 DB COUNT TEMP=25TEMP=TEMP+1指令系统:提供应用户编写程序的一

29、组指令集 操作码 操作数 . 操作数指令:指令:一地址指令:一地址指令: INC AX DEC CX二地址指令:二地址指令: MOV AX, 2000H ADD AH, BL 寻址方式:表示操作数地址的方式寻址方式:表示操作数地址的方式3.2 寻址方式与机器言语转换寻址方式与机器言语转换一、一、8086寻址机制寻址机制8086CPU: 地址线:地址线:20位,寻址位,寻址220=1MB 数据线:数据线:16位位 存放器:存放器:16位位如何构成如何构成20位地址位地址-分段分段物理地址物理地址逻辑地址逻辑地址段首地址段首地址16位位段内地址段内地址16位位8086存储器分段存储器分段w段内存储

30、单元的地址延续段内存储单元的地址延续w 最大最大216=64KBw段起始单元的地址段起始单元的地址-段基址能被段基址能被16整除整除 0H16位位20位位段地址段地址段基值段基值w段基址在段存放器中,默段基址在段存放器中,默许许CS-代码段代码段DS-数据段数据段SS-堆栈段堆栈段ES-附加段附加段段个数、段用途由编程决议段个数、段用途由编程决议 段定义,段分配段定义,段分配 w物理地址的构成物理地址的构成偏移地址偏移地址15 0左移左移4位位物理地址物理地址19 0段基地址段基地址 000015 019 0段基地址段基地址15 0操作数类型操作数类型(操作数在什么地方操作数在什么地方)二、二

31、、8086寻址方式寻址方式w立刻数立刻数-操作数由指令代码直接给出操作数由指令代码直接给出w存放器存放器-操作数在操作数在CPU的某个存放器中的某个存放器中w 存放器名即为操作数地址存放器名即为操作数地址w存储器存储器-操作数在存储器的某个单元中操作数在存储器的某个单元中w 段地址段地址:偏移地址偏移地址w (段基值段基值:偏移量偏移量)与数据有关的寻址方式与数据有关的寻址方式与转移地址有关的寻址方式与转移地址有关的寻址方式1、立刻寻址、立刻寻址-操作数为立刻操作数为立刻数数 与数据有关的寻址方式与数据有关的寻址方式 ( 7( 7种种 ) ) 以以 MOV MOV 指令为例指令为例 MOV A

32、L, 5 MOV CX, 03064H ;以以AF开头的立刻数开头的立刻数,前面加前面加0 MOV BX, “AB ;立刻数为字符串立刻数为字符串* 立刻数只能用于立刻数只能用于SRC字段字段 MOV 5, AL SRC 和和 DST的字长一致的字长一致 MOV AH, 3064H 立刻数不能直接赋给段存放器或标志存放器,要经过立刻数不能直接赋给段存放器或标志存放器,要经过通用存放器过渡。通用存放器过渡。MOV AX, 0100HMOV DS, AX MOV DS, 0100H 2、存放器寻址、存放器寻址-操作数在存放器操作数在存放器中中 MOV AX, BX MOV AL, BH MOV D

33、S, AX 8位(字节)存放器: AH , AL, BH , BL , CH , CL ,DH ,DL; 16位(字)存放器:AX, BX, CX, DX, SP, BP, SI, DI;* SRC 和 DST的字长必需一致 MOV AH, BX CS不能用MOV指令改动内容 MOV CS, AX操作数地址即为存放器名操作数地址即为存放器名找出操作数所在的存储单元的地址找出操作数所在的存储单元的地址 段地址段地址 : 偏移量偏移量3、存储器寻址、存储器寻址-操作数在存储器操作数在存储器中中wEA由由3个分量组合而成个分量组合而成段存放器段存放器提供提供有效地址有效地址EAw位移量位移量-8/1

34、6位二进制数位二进制数;常以符号地址方式常以符号地址方式(变量或标号变量或标号)出如今指令中出如今指令中w基地址基地址BP-数据在堆栈段数据在堆栈段(段存放器段存放器SS)BXw变址量变址量SI-源地址源地址DI-目的地址目的地址数据默许在数据段数据默许在数据段(DS);可用段前缀指定可用段前缀指定(改动改动) 直接寻址方式直接寻址方式 有效地址有效地址EA由指令直接给出由指令直接给出 有效地址有效地址EA-操作数的偏移地址;操作数的偏移地址; 物理地址物理地址PA = 16d (DS) + EA 例:例:MOV AX, 2000H 比较比较 MOV AX, 3064H EA=2000H 假设

35、假设(DS)=3000H, 那么那么(PA)=32000H 5030 32000AH AL3050(AX) = 3050H32019例:操作数地址可由变量符号地址表示例:操作数地址可由变量符号地址表示 MOV AH, VALUE ( VALUE DB 10 )MOV AH, VALUE ( VALUE DB 10 ) 或或 MOV AHMOV AH,VALUEVALUE留意:留意:*直接寻址方式隐含的段为数据段直接寻址方式隐含的段为数据段 DS* 可运用段跨越前缀改动数据所在段地址。可运用段跨越前缀改动数据所在段地址。 MOV AX, ES :2000H* 运用变量时,要留意变量的属性运用变量

36、时,要留意变量的属性 VALUE DB 10 MOV AX, VALUE MOV AL, VALUE MOV AX, WORD PTR VALUE* 适于处置单个变量适于处置单个变量236ADS:0010001123HAL6A 23AX存放器间接寻址方式存放器间接寻址方式 操作数地址在存放器操作数地址在存放器中中EA在基址存放器在基址存放器(BX/BP)或变址存放器或变址存放器(SI/DI)中中 BX, SI, DI 操作数在数据段操作数在数据段 (DS) BP 操作数在堆栈段操作数在堆栈段 (SS) 物理地址物理地址 = 16d (SS) + (BP)例例 MOV AX, BX PA = 1

37、6d (DS) + (BX) MOV DX, BP PA = 16d (SS) + (BP) MOV CH, SI PA = 16d (DS) + (SI) MOV DI, BX PA = 16d (DS) + (DI) (BX)(SI)(DI)物理地址物理地址 = 16d (DS) +可以段跨越改动数据所在的段可以段跨越改动数据所在的段: MOV ES:BX , AX PA = 16d (ES) + (BX)不允许运用不允许运用AX、CX、DX存放存放EA MOV AX, CX存放器相对寻址寻址方式存放器相对寻址寻址方式 有效地址 EA=(BX)(BP)(SI)(DI)+8位位16位位位移量

38、位移量隐含段地址:隐含段地址:SI、DI、BX为为DS;BP为为SS。可用段跨越。可用段跨越。例:例: MOV AX, COUNTSI 或或 MOV AX, COUNT+SI 假设假设(DS)=3000H, (SI)=2000H, COUNT=3000H 那么那么 PA = 35000H * 一个地址分量在程序执行过程中可进展修正一个地址分量在程序执行过程中可进展修正,适于数组、适于数组、字符串、表格的处置字符串、表格的处置EA是两个地址分量是两个地址分量-基址存放器或变址存放器的内容与基址存放器或变址存放器的内容与指令中给出的位移量指令中给出的位移量(8/16位位) 之和之和 相对基址变址寻

39、址方式相对基址变址寻址方式 EA是三个地址分量是三个地址分量-基址存放器和变址存放器基址存放器和变址存放器的内容与指令中给出的位移量的内容与指令中给出的位移量(8/16位位) 之和之和 有效地址 EA=(BX)(BP)+(SI)(DI)+8位位16位位位移量位移量指令格式:指令格式: MOV AX, MASKBXSI 或或 MOV AX, MASKBX+SI 或或 MOV AX, MASK+BX+SI 例:例:MOV AL,FILEBX+DI+2 PA=DS16+BX+DI+2+FILE有效地址有效地址 EA=(BX)(BP)+(SI)(DI)基址基址变址变址 假设位移量为假设位移量为0-基址

40、变址寻址方式基址变址寻址方式 : MOV AX, BXDI PA=(DS)24+(BX)+(DI)或或 MOV AX, BX+DI MOV AX, BP+DI PA=(SS)24+(BX)+(DI) MOV AX, ES:BXSI PA=(ES)24+(BX)+(SI) 由于有两个地址分量可在程序执行过程中进展修由于有两个地址分量可在程序执行过程中进展修改改,适用于访问二维数组适用于访问二维数组.留意留意:必需是一个基址存放器和一个变址存放器的必需是一个基址存放器和一个变址存放器的组合,组合,不可同为基址存放器不可同为基址存放器BX、BP或同为变或同为变址存放址存放器器SI、DIMOV AX,

41、 BXSI MOV AX, BXBPMOV BXDI, AX MOV AX, SIDIMOV AX, MASKBXSI MOV AX, MASKBXBP4、串操作寻址、串操作寻址8086/8088提供专门的串操作指令提供专门的串操作指令串操作指令所用的操作数均在存储器中串操作指令所用的操作数均在存储器中串操作指令隐含运用变址存放器串操作指令隐含运用变址存放器: SI(源操作数地址指针源操作数地址指针) DI(目的操作数地址指针目的操作数地址指针)指针修正方向指针修正方向(加或减加或减)由标志存放器的由标志存放器的DF位位(方向标志方向标志) 决议决议:DF=0-加加1-减减字节串操作字节串操作

42、-字串操作字串操作-125、I/O端口寻址端口寻址输入输出指令是对端口进展操作输入输出指令是对端口进展操作-端口寻址端口寻址直接端口寻址直接端口寻址-8位的端口地址由指令直接给出位的端口地址由指令直接给出 端口号为端口号为:0255,共共256个个IN AL,06HOUT F8H,AL间接端口寻址间接端口寻址-假设端口地址大于假设端口地址大于FFH(255),那么由那么由DX 存放器存放端口地址存放器存放端口地址MOV DX,280IN AX,DXOUT DX,AL 与转移地址有关的寻址方式与转移地址有关的寻址方式 用来确定 转移指令 及 CALL指令 的转向地址。段内寻址段内寻址段间寻址段间寻址段内直接寻址段内直接寻址段内间接寻址段内间接寻址段间直接寻址段间直接寻址段间间接寻址段间间接寻址以以 转移条件转移转移条件转移/无条件转移指令无条件转移指令 为例为例段内:转移指令与转向的目的指令在同一代码段中段内:转移指令与转向的目的指令在同一代码段中,(CS)不变。不变。段间:转移指令与转向的目的指令在两个代码段中段间:转移指令与转向的目的指令在两个代码段中, (CS)变化。变化。表示转移间隔称为位移量的操作符表示转移间隔称为位移量的操作符: :SHORT SHORT 短转移,位移量用短转移,位移量用1 1个字节表示,个字节表示, 在在-128 1

温馨提示

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

评论

0/150

提交评论