好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

汇编语言程序设计:第二章 汇编语言指令系统和寻址方式1.ppt

38页
  • 卖家[上传人]:s9****2
  • 文档编号:568809271
  • 上传时间:2024-07-27
  • 文档格式:PPT
  • 文档大小:1.10MB
  • / 38 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第二章第二章 汇编语言指令系统和寻址方式汇编语言指令系统和寻址方式2.1 寻址方式寻址方式 2.1.1 汇编指令的书写形式汇编指令的书写形式 2.1.2 三种类型的操作数三种类型的操作数 2.1.3 寻址规则寻址规则2.2 指令系统指令系统 2.2.1 数据传送指令数据传送指令 2.2.2 算术运算指令算术运算指令 2.2.3 逻辑运算指令逻辑运算指令 2.2.4 字符串指令字符串指令 2.2.5 程序转移指令程序转移指令 2.2.6 处理器控制指令处理器控制指令 2.1 寻址方式寻址方式2.2.1 汇编指令的书写形式汇编指令的书写形式 一条汇编指令通常可以写成如下形式: [标号标号:] 操作码操作码 [目标操作数目标操作数] [, 源操作数源操作数] [;注释注释] (1)其中[ ]中的内容为可选项 (2)标号必须是用字母打头的字母或数字组成的字符串,标号供转移指令作为转移的目标 (3)指令末尾的分号表示由‘ ;;’起直至〈ENTER〉前均为注释部分,在输入源程序时,每一条汇编指令的末尾必须输入换行键〈ENTER〉表示本指令的结束,下一指令的开始。

      汇编指令的书写形式汇编指令的书写形式操作码操作码 目标操作数目标操作数, 源操作数源操作数Ø一条能汇编成机器代码指令的汇编指令必须有唯一的操作码操作码是汇编指令的关键字,它指出该指令要做什么Ø指令行中可以没有源操作数和目标操作数在这种情况下通常是对某一固定的或称作隐含操作数的操作Ø一条汇编指令中的源操作数用来指出指令处理的对象来自何处Ø一条汇编指令中的目标操作数用来指出指令的处理结果置于何处在许多指令中目标操作数既表示处理的对象之一来自何处,又指出处理的结果置于何处这种指令被称为单操作数指令Ø指令行中既有源操作数又有目标操作数的指令称为双操作数指令双操作数指令中目标操作数一定出现在源操作数的左边目标操作数总是紧接着操作码出现在源操作数的左边,因此有也称目标操作数为左源左源 汇编指令的书写形式汇编指令的书写形式举例:举例: LOOP1:AAA ; 此处可添加注释 MOV AX, 053H;此处可添加注释 INC DH ;此处可添加注释Ø第一条指令:带标号LOOP1,AAA是操作码,这一指令隐含使用固定操作数AL;Ø第二条指令: MOV是操作码,双操作数指令, AX是目标操作数,053H是源操作数Ø第三条指令: INC是操作码单操作数指令 Ø在DOS下运行汇编程序,注释部分只能用英文和ASCII码符号书写,在中文操作系统下则可用中文书写,是指换行键。

      Ø操作码通常是指指令功能的助记符,它给出了指令功能便于记忆的形式,例如,MOV是Movement的缩写等 2.1.2 三种类型的操作数三种类型的操作数((1)立即数操作数)立即数操作数((2)寄存器操作数)寄存器操作数((3)内存操作数)内存操作数Ø单操作数指令的操作数只能是寄存器操作数或内存操作数Ø双操作数指令的目标操作数只能是寄存器操作数或内存操作数,而源操作数可以是三者之一,但是两操作数不能同时为内存操作数 寻址方式寻址方式就是寻找指令中的操作数的方式,寻址主要是指寻找内存数据的地址 ((1)立即数操作数)立即数操作数 Ø立即数操作数作为代码指令的一部分出现在双操作数指令中除了乘法、除法和字符串操作指令之外,立即数操作数均可作为源操作数Ø立即数操作数在汇编指令中可以以十六进、八进制、二进制十六进、八进制、二进制或十进制或十进制形式书写,例如0F0H、777Q、101B、99D等,注意,在用十六进制书写时第一个字符是非数字0~9时,前面一定要补一个0,例如,FAH应记为0FAHØ汇编指令中立即数操作数还可以以一个表达式的形式出现,此时该立即数就是表达式的值 ((2)寄存器)寄存器操作数操作数 Ø寄存器操作数是以寄存器的内容参加运算,或用寄存器存放结果。

      MOV AX, 3456H中的AX,MOV DL, 41H中的DL就是寄存器操作数Ø段寄存器的内容指出当前4个段的基址,这些寄存器不能用一般的传送指令将立即数送入如果需要将立即数置入段寄存器中的DS、ES或SS,则首先应将该值送入AX或其他通用寄存器,然后再由AX传送给DS、ES或SS至于CS因其与指令地址有关,一般不需用户干预Ø标志寄存器FLAG的各位在执行算术逻辑运算指令后一般均被修改,其状态将依指令及执行结果而定,它可以反映出当时处理器和累加器所检测到的结果标志寄存器一般不能作为操作数,但可用标志指令或INC、DEC、ADD、MUL、DIV等来处理Ø通用寄存器(AX、BX、CX、DX、SP、BP、SI、DI、AH、AL、BH、BL、CH、CL、DH、DL)和指针及变址寄存器(BX、BP、SI、DI)均可参加算术和逻辑运算操作虽然经常把AX作为累加器,但所有通用寄存器均可用作累加器通用寄存器在单操作数指令中可作目标操作数,在双操作数指令中既可作源操作数也可作目标操作数 ((2)寄存器操作数)寄存器操作数一些汇编指令中虽然没有显式地写有寄存器,但是它却隐含着使用所指定的通用寄存器,详见表。

      指令指令隐含应用隐含应用AAA, AAD, AAM, AASAL, AHCBW, CWDAL, AH或AX, DXDAA, DASALIN, OUTAL或AXMUL, IMUL, DIV, IDIVAL, AX或AX, DXLAHF, SAHFAHLESESLDSDS循环或移位指令CL字符串操作指令CX, SI, DIXLATAL, BX ((3)内存操作数)内存操作数 Ø内存操作数又称为存储器操作数,是指把内存某地址存放的字节、字作为指令的处理对象这时要将该字节、字作为源操作数或目标操作数,当其作为源操作数时从内存中取出,或送到某个寄存器,或参加运算等;当其作为目标操作数时,则是将操作的结果置入该内存单元Ø无论是何种内存操作数,关键是必须找到其所在地址,即必须指出其所在段和相对于段首的位移(即有效地址EA),才能确定其物理地址内存操作数地址的确定是寻址规则的重点Ø内存操作数所在段的段寄存器的名字在汇编指令中一般是不写的,它遵循着如前面的表所示的隐含原则,根据内存操作数类型的不同相应使用不同的段寄存器 2.1.3 寻址规则寻址规则与数据有关的寻址方式与数据有关的寻址方式(1)立即数寻址(Immediate Addressing) (2)寄存器寻址(Register Addressing) /寄存器直接寻址(3)存储器直接寻址(Direct Addressing) /直接寻址(4)寄存器间接寻址(Register Index Addressing) (5)寄存器相对寻址(Register Relative Addressing) (6)基址加变址寻址 (Based Indexed Addressing) (7)相对基址变址寻址 (Based Indexed Addressing) (8)固定寻址(Fixed Addressing) (9)数据串操作数的寻址(String Addressing) 与转移地址有关的寻址方式与转移地址有关的寻址方式(1)段内直接寻址(2)段内间接寻址(3)段间直接寻址(4)段间间接寻址I/O端口寻址端口寻址(I/O PORT Addressing) 寻址规则-立即数寻址规则-立即数 操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式也就称为立即数寻址方式。

      立即数可以是8位、16位或32位数,该数值紧跟在操作码之后如果立即数为16位或32位,那么,它将按“高高低低”的原则进行存储例如: MOV AH, 80H ADD AX, 1234H MOV ECX, 123456H 立即数寻址方式通常用于对通用寄存器或内存单元赋初值1)) 立即数寻址方式立即数寻址方式 寻址规则-寄存器寻址规则-寄存器((2)) 寄存器寻址方式寄存器寻址方式 指令所要的操作数已存储在某寄存器中,或把目标操作数存入寄存器把在指令中指出所使用寄存器的寻址方式称为寄存器寻址方式例如:MOV AX, 55H; ADD AX, BX 指令中可以引用的寄存器及其符号名称如下:u8位寄存器有:AH、AL、BH、BL、CH、CL、DH和DL等;u16位寄存器有:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器等;u32位寄存器有:EAX、EBX、ECX、EDX、ESI、EDI、ESP和EBP等 寄存器寻址方式是一种简单快捷的寻址方式,源和目的操作数都可以是寄存器 由于指令所需的操作数已存储在寄存器中,或操作的结果存入寄存器,这样,在指令执行过程中,会减少读/写存储器单元的次数。

      通常情况下,我们提倡应尽可能地使用寄存器寻址方式,但也不要绝对化 寻址规则-存储器相关寻址规则-存储器相关Ø大多数情况下,操作数在存储器中,所以寻址方式3-7都是关于存储器的Ø存储单元地址=段基址*16+偏移量Ø当段基址确定后不需要经常改变,对存储单元的寻址实际上就是确定偏移量即有效地址EA(effective address)EA=基址基址+变址变址+偏移量偏移量基址基址:这里指:这里指有效地址的一个基础量,不是指段基址,任何通用寄存器都可以作为基址寄存器变址变址::除了SP外,其他通用寄存器都可作为变址寄存器,但常用的变址寄存器为DI和SI偏移量偏移量::操作码后面的32位、16位或8位的数 寻址规则-直接寻址寻址规则-直接寻址((3)) 直接寻址方式直接寻址方式 指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地址,这种寻址方式为直接寻址方式 通常情况下,操作数存放在数据段中,所以,其物理地址将由数据段寄存器DS和指令中给出的有效地址直接形成,但如果使用段超越前缀,那么,操作数可存放在其它段,如MOV AX, ES:[2000]MOV AX, [2000H]; 设(DS)=3000H执行结果(AX)=3050H可以用符号地址代替数值地址,如:MOV AX, VALUE;或者MOV AX, [VALUE]VALUE为存放操作数单元的符号地址。

      寻址规则-直接寻址寻址规则-直接寻址DATA SEGMENT DB 41H ;偏移量0 DB 42H ;偏移量1DATA ENDSCODE SEGMENT ASSUME CS: CODE, DS: DATAGO: MOV AX, DATA MOV DS, AX MOV DL,DS:[0]; MOV AH, 2 INT 21H MOV DL,DS:[1]; INT 21H MOV AH, 4CH INT 21HCODE ENDS END GODATA SEGMENTA1 DB 41H ;变量A1,偏移量0B1 DB 42H ;变量B1,偏移量1DATA ENDSCODE SEGMENT ASSUME CS: CODE, DS: DATAGO: MOV AX, DATA MOV DS, AX MOV DL,A1; MOV AH, 2 INT 21H MOV DL,B1; INT 21H MOV AH, 4CH INT 21HCODE ENDS END GO 寻址规则-直接寻址寻址规则-直接寻址以上两个例题的执行结果,都是在显示器中输出字符AB。

      注意:注意:直接寻址在汇编语言的书写形式上类似于直接位移量和立即数寻址,必须从整个程序的上下文分析中才能得出正确结论中汇编指令MOV AX, DATA中的DATA,MOV AH, 2中的2是立即数,而MOV DL, A1中的A1和MOV DL, B1则为直接位移量 关于本例中的DATA,它是一个逻辑数据段的段名,这个段名经过汇编、连接和操作系统装入后就是一个具体的段地址常数,因此它是一个立即数立即数是不能够直接送段寄存器的,必须首先将该段值送至一个16位的通用寄存器,这里是AX,然后通过AX送DS这就是本例中装填段寄存器为什么要通过下面两条指令的原因: MOV AX, DATA MOV DS, AX 寻址规则-寄存器间接寻址寻址规则-寄存器间接寻址 寄存器的内容作为有效地址EA的存储器寻址方式称为寄寄存存器器间间接接寻寻址址此时寄存器可以是SI, DI, BP, BX之一,在书写汇编指令时相应寄存器名用[]括起来,表示该寄存器的内容为EA在不使用段超越前缀的情况下,有下列规定:Ø若有效地址用SI、DI和BX等之一来指定,则其缺省的段寄存器为DS;Ø若有效地址用BP来指定,则其缺省的段寄存器为SS。

      4)) 寄存器间接寻址方式寄存器间接寻址方式变址器汇编书写形式有效地址(EA)段寄存器物理地址SI[SI](SI)DS(DS)*10H+(SI)DI[DI](DI)DS(DS)*10H+(DI)BX[BX](BX)DS(DS)*10H+(BX)BP[BP](BP)SS(SS)*10H+(BP) 寻址规则-寄存器间接寻址寻址规则-寄存器间接寻址举例 假设有指令:MOV AX, [BX]; 在执行时,(DS)=2000H,(BX)=1000H,执行指令后AX=50A0H. EA=1000H,物理地址为21000H这种寻址方式可以用于表格处理,执行完一条指令后,只需修改寄存器内容就可取出表格中的下一项 寻址规则-寄存器相对寻址寻址规则-寄存器相对寻址((5)寄存器相对寻址方式)寄存器相对寻址方式使用变址寄存器(SI, DI)或基址寄存器( BX, BP)的内容和指令中给定的一个直接偏移量(disp)之和构成有效地址的存储器寻址方式此时EA的构成规则是在寄存器间接寻址中EA的计算后再加上偏移量变址寻址方式的操作数在汇编指令中书写时可以是下述形式之一: [BX]+偏移量 偏移量[BX] [BX+偏移量] 其中BX位置处还可以是SI, DI, BP。

      在不使用段超越前缀的情况下,有下列规定:u若有效地址用SI、DI和BX等之一来指定,则其缺省的段寄存器为DS;u若有效地址用BP来指定,则其缺省的段寄存器为SS 寻址规则-寄存器相对寻址寻址规则-寄存器相对寻址例如: MOV AX,[BP]+VARA MOV AX,VARA[BP] MOV AX,[BP+VARA]都是等同的,其中VARA是变量名,注意:注意:寄存器间接寻址和存储器直接寻址是寄存器相对寻址的特例在相对寻址中如果不含变址寄存器,就是存储器直接寻址;如果没有直接位移量,仅仅有变址寄存器就是寄存器间接寻址变址器汇编书写形式有效地址段寄存器物理地址SI[SI+disp](SI)+dispDS(DS)*10H+(SI)+dispDI[DI+disp](DI)+dispDS(DS)*10H+(DI)+dispBX[BX+disp](BX)+dispDS(DS)*10H+(BX)+dispBP[BP+disp](BP)+dispSS(SS)*10H+(BP)+disp 寻址规则-寄存器相对寻址寻址规则-寄存器相对寻址举例:MOV AX, COUNT[SI], 其中,COUNT为16位偏移量的符号地址。

      也可以表示为: MOV AX,[COUNT+SI]如果(DS)=3000H,(SI)=2000H,COUNT=3000H,则EA=2000H+3000H=5000H物理地址=30000H+5000H=35000H执行结果(AX)=1234H 寻址规则-基址加变址寻址寻址规则-基址加变址寻址((6)基址加变址寻址方式)基址加变址寻址方式 操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)和一个变址寄存器(SI、DI)的内容之和 其有效地址如下: [BX+SI]或[BX][SI] 表示:EA=(BX)+(SI) [BX+DI]或[BX][DI] 表示:EA=(BX)+(DI) [BP+SI]或[BP][SI] 表示:EA=(BP)+(SI) [BP+DI]或[BX][DI] 表示:EA=(BP)+(DI) 在不使用段超越前缀的情况下,有下列规定:u若有效地址用SI、DI和BX等之一来指定,则其缺省的段寄存器为DS;u若有效地址用BP来指定,则其缺省的段寄存器为SS(即:堆栈段) 寻址规则-基址加变址寻址寻址规则-基址加变址寻址举例: MOV AX, [BX][DI]也可以表示为: MOV AX,[BX+DI]如果(DS)=2100H,(BX)=0158H,(DI)=10A5H,则EA=0158H+10A5H=11FDH物理地址=21000H+11FDH=221FDH执行结果(AX)=1234H 寻址规则-相对基址变址寻址寻址规则-相对基址变址寻址((7)相对基址变址寻址方式)相对基址变址寻址方式 操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)的值、一个变址寄存器(SI、DI)的值和指令中的8位/16位偏移量之和。

      其有效地址如下: [BX+SI+disp]表示:EA=(BX)+(SI)+disp [BX+DI+disp]表示:EA=(BX)+(DI)+disp [BP+SI+disp]表示:EA=(BP)+(SI)+disp [BP+DI+disp]表示:EA=(BP)+(DI)+disp下列表达形式是等价的:[BX][SI]+disp或 disp[BX][SI]或[BX+SI]+disp或 [BX+SI+disp]但格式:BX[1000H+SI]、SI[1000H+BX]等是错误的,即所用寄存器不能在”[“,”]”之外,该限制对寄存器相对寻址方式的书写也同样起作用 寻址规则-相对基址变址寻址寻址规则-相对基址变址寻址基址寄存器变址寄存器汇编书写形式有效地址段寄存器物理地址BXSI[BX+SI+disp](BX)+(SI)+dispDS(DS)*10H+EABXDI[BX+DI+disp](BX)+(DI)+dispDS(DS)*10H+EABPSI[BP+SI+disp](BP)+(SI)+dispSS(SS)*10H+EABPDI[BP+DI+disp](BP)+(DI)+dispSS(SS)*10H+EA相对基址变址寻址的有效地址形成相对基址变址寻址的有效地址形成 寻址规则-相对基址变址寻址寻址规则-相对基址变址寻址举例: MOV AX, MASK[BX][SI]也可以表示为: MOV AX,MASK[BX+SI]MOV AX, [MASK+BX+SI]如果(DS)=3000H,(BX)=2000H, MASK=0250H,(SI)=1000H,则物理地址= 30000H+2000H+1000H+0250H =33250H执行结果(AX)=1234H 寻址规则-相对基址变址寻址寻址规则-相对基址变址寻址相对基址加变址寻址方式与其它寻址方式之间的变形关系相对基址加变址寻址方式与其它寻址方式之间的变形关系源操作数指令的变形源操作数的寻址方式只有一个偏移量MOV AX, [100H]直接寻址方式只有一个寄存器MOV AX, [BX] 或MOV AX, [SI]寄存器间接寻址方式有一个寄存器和偏移量MOV AX, [BX+100H] 或MOV AX, [SI+100H]寄存器相对寻址方式有二个寄存器MOV AX, [BX+SI]基址加变址寻址方式有二个寄存器和常数项MOV AX, [BX+SI+100H]相对基址加变址寻址方式 寻址规则-固定寻址寻址规则-固定寻址((8)固定寻址)固定寻址 汇编指令中隐含着对固定目标的操作,这种操作称作固定固定寻址。

      寻址 例如,非压缩型BCD码校正指令,或称作ASCII码加法校正指令AAA,表面看只有操作码没有操作数,但其隐含着使用固定操作数AL和AH寄存器被调整的数位于AL中调整的结果在AL和AH中 8086中这一类指令多为对应的单字节指令 寻址规则-数据串寻址寻址规则-数据串寻址((9)数据串寻址方式)数据串寻址方式Ø串操作指令不同于其他指令,它使用隐含的变址寄存器来寻址,且操作过程中自动修改该寄存器内容以指向下一步操作的地址,修改方式分自动增和自动减两种,采用哪种方式取决于此时状态寄存器的DF标志位,当DF=1时减,否则增Ø源操作串由DS:SI指定,目标串由ES:DI指定ØCLD指令置DF=0,设置为正向串,每次串操作后SI和DI自动递增;STD指令置DF=1,设置为负向串,每次串操作后SI和DI自动递减Ø当串操作为字节串时,每次SI和DI递增和递减1;当串操作为字串时,每次SI和DI递增和递减2 与转移地址有关的寻址方式与转移地址有关的寻址方式这些寻址方式用来确定转移指令及CALL指令的转向地址1)段内直接寻址(Intrasegment direct addressing)(2)段内间接寻址(Intrasegment indirect addressing)(3)段间直接寻址(Intersegment direct addressing)(4)段间间接寻址(Intersegment indirect addressing) 与转移地址有关的寻址方式与转移地址有关的寻址方式((1)段内直接寻址()段内直接寻址(Intrasegment direct addressing)) 转向的有效地址是当前IP寄存器的内容和指令中指定的8位或16位偏移量之和。

      Ø这是一种相对寻址方式;Ø适用于条件转移及无条件转移指令,但当它用于条件转移时,位移量只允许8位,这称为短跳转Ø举例 JMP NEAR PRT PROGIA JMP SHORT QUESTPROGIA和QUEST均为转向的符号地址,在机器指令中,用偏移量来表示,符合程序再定位要求在汇编指令中,如果偏移量为16位,则在符号地址前加操作符NEAR PRT ,如果偏移量为8位,则在符号地址前加操作符SHORT 与转移地址有关的寻址方式与转移地址有关的寻址方式((2)段内间接寻址()段内间接寻址(Intrasegment indirect addressing)) 转向有效地址是一个寄存器或是一个存储单元的内容这个寄存器或存储单元的内容可以用数据寻址方式中除立即数以外的任何一种寻址方式取得,所得到的转向有效地址用来取代IP寄存器的内容Ø此寻址方式及后两种寻址方式都不能用于条件转移指令,条件转移指令只能使用段内直接寻址的8位偏移量Ø指令格式举例:JMP BX; JMP WORD PTR[BP+TABLE]举例: 假设(DS)=2000H, (BX)=1256H, (SI)=528FH, 偏移量=20A1H, (232F7H)=3280H, (264E5H)=2450H. JMP BX; 指令执行后IP=1256H,寄存器寻址方式。

      JMP TABLE[BX];指令执行后IP=(20000H+1256H+20A1H)=(232F7H)=3280H,寄存器间接寻址方式 JMP [BX][SI];指令执行后IP=(20000H+1256H+528FH)=(264E5H)=2450H,基址变址寻址方式 与转移地址有关的寻址方式与转移地址有关的寻址方式((3)段间直接寻址()段间直接寻址(Intersegment direct addressing))指令中直接提供了转向段地址和偏移地址,用此偏移量取代IP寄存器的内容,用指定的段地址取代CS寄存器的内容汇编指令格式举例:JMP FAR PTR NEXTROUTINT;其中NEXTROUTINT为转向的符号地址, FAR PTR 是表示段间转移的操作符4)段间间接寻址()段间间接寻址(Intersegment indirect addressing))用存储器中的二个相继字的内容来取代IP和CS寄存器的值以达到段间转移的目的汇编指令格式举例:JMP DWORD PTR[INTERS+BX];其中[INTERS+BX]说明数据寻址方式为寄存器相对寻址方式,DWORD PTR为双字操作符,说明转向地址需要取双字为段间转移指令。

      I/O端口寻址端口寻址对分配在I/O空间中的端口有两种寻址方式:直接端口寻址:直接端口寻址:端口号可以是8位数(0~255)间接端口寻址:间接端口寻址:间接端口寻址时端口号应事先存放在DX中,间接寻址的端口地址可以是0~65535的端口地址,当端口号大于255且小于等于65535时必须使用间接端口寻址 在进行端口寻址时,当端口为8位数据时只能够通过AL寄存器与这些口进行信息交换,当端口为16位口时只能够通过AX寄存器与这些口进行信息交换这就是说,80X86微处理器与I/O设备的通讯只能够通过累加器AX或AL进行,而不能是其他任何寄存器或内存 端口间接寻址的寄存器只能是地址寄存器DX,而不能够是其他任何寄存器,而且在这种情况下的间接寻址,汇编指令的书写形式不允许在DX外写方括号 I/O端口寻址端口寻址I/O端口寻址举例(1) 端口直接寻址,例如: IN AL, 63H;从63H口读信息到AL寄存器 OUT 65, AL;将AL中的内容送入41H端口,口地址可 ;以用汇编允许的任何进制数字(2) 端口间接寻址,例如: MOV DL, 63H IN AL, DL;以上两条指令完成从63H口读信息到AL寄存器又如: MOV DX, 256 OUT DX, AL;以上两条指令完成将AL中的内容送256号端口 习题与作业习题与作业1,给定(BX)=637DH,(SI)=2A9BH,位移量D=7237H,试确定在以下各种寻址方式下的有效地址是什么?(1) 立即寻址(2) 直接寻址(3) 使用BX的寄存器寻址(4) 使用BX的简接寻址(5) 使用BX的寄存器相对寻址(6) 基址变址寻址(7) 相对基址变址寻址 2,现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,试说明下列各条指令执行完后AX寄存器的内容。

      1) MOV AX, 1200H(2) MOV AX, BX(3) MOV AX, [1200H](4) MOV AX, [BX](5) MOV AX, 1100[BX](6) MOV AX, [BX][SI](7) MOV AX, 1100[BX][SI] 习题与作业习题与作业3,给定(IP)=2BC0H,(CS)=0200H,位移量D=5119H,(BX)=1200H,(DS)=212AH,(224A0H)=0600H,(275B9H)=098AH,试为以下的转移指令找出转移的偏移地址1) 段内直接寻址(2) 使用BX及寄存器间接寻址方式的段内间接寻址(3) 使用BX及寄存器相对寻址方式的段内间接寻址 4,设当前数据段寄存器的内容为1B00H,在数据段的偏移地址2000H单元内,含有一个内容为0FF10H和8000H的指针,它们是一个16位变量的偏移地址和段地址,试写出把该变量装入AX的指令序列,并画图表示出来 习题与作业习题与作业5,假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,数据段中变量名VAL的偏移地址为0050H,试指出下列源操作数字段的寻址方式是什么?其物理地址值是多少?(1)MOV AX, 0ABH(2)MOV AX, BX(3) MOV AX, [100H](4) MOV AX, VAL(5) MOV AX, [BX](6) MOV AX, ES:[BX](7) MOV AX, [BP](8) MOV AX, [SI](9) MOV AX, [BX+10](10) MOV AX, VAL[BX](11) MOV AX, [BX][SI](12) MOV AX, VAL[BX][SI] 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.