汇编要点答案_第1页
汇编要点答案_第2页
汇编要点答案_第3页
汇编要点答案_第4页
汇编要点答案_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、CPU是哪2个部件集成到一个芯片?运算器,控制器计算机系统包括哪 2个部分?硬件,软件计算机软件包括哪 2种类型?系统软件,应用软件CPU由哪几部分组成?1、算术逻辑部件(ALU) 2、控制逻辑3、工作寄存器8086的有哪几个通用寄存器 ?哪些提供了字节访问?寄存器可以分为程序可见的寄存器和程序不可见的寄存器两大类。通用寄存器有AX(accumulator瞟力口器;BX(base座址寄存器;CX(count)计数器;DX(data)数据寄存器;BP(base pointer!1址指针寄存器;SI(source index原变址寄存器;DI(destination index)目的变址寄存器;其

2、中AX(accumulator瞟力口器;BX(base)g址寄存器;CX(count)计数器;DX(data)数据寄存器;提供了字节访问标志寄存器各标志位的含义 ?IP和SP的含义?标志名标志为1标志为0OF溢出(是/否)OVNVDF 方向(减量/DNUPEIDIIF 中断(允许/NGPL关闭)ZRNZSF符号(负/正)ACNAZF零(是/否)PEPOAF 辅助进位CYNC(是/否)PF奇偶(偶/奇)CF进位(是/否)TF为陷阱标志位,为1时,每条指令执行后产生陷阱,用于单步调试IP(instruction pointer)指令指针寄存器;SP(stack pointer)堆栈指针寄存器;FL

3、AGS标志寄存器。8086有哪几个段寄存器?代码段(code segment, CS)数据段(data segment, DS卜 堆找段(stack segment SS) 和附加段(extra segment, ESS) 4个寄存器。了解寄存器和存储器的不同在CPU内部访问速度快容量小,成本高 用名字表示没有地址寄存器存储器在CPU外部访问速度慢容量大,成本低用地址表示地址可用各种方式形成8086是按字编址,对吗不对,按字节编址8086的一个字(16位)怎样存入存储器的?个字存入存储器要占有相继的两个字节,存放时低位字节存入低地址,高位字节存 入Wj地址。8086的使用存储器地址访问数据时,

4、能根据地址确定数据的大小吗不能,同一个地址既可看作字节单元的地址,又可看作字单元、双字单元的地址, 这要根据使用情况确定。8086的地址空间是多大?1MB1个段最大最小都是多大,段首地址的特点16个字节为64KB,段不能起于任意地址,而必须从任一小段的首地址开始,每 小段。一个物理地址由段地址和偏移地址组成,这种表示是唯一的吗 不唯一学会段地址和偏移地址合成物理地址物理地址 =16父段地址+偏移地址例:(DS) = 2100H, (BX) = 0500H(PA) = 21000H+0500H = 21500H8086实模式下内存最多多大?1M能识别各种寻址方式,尤其是存储器寻址 与数据有关的寻

5、址方式1 .立即寻址方式2 .寄存器寻址方式存储器寻址的几个说明3 .直接寻址方式4 .寄存器间接寻址方式5 .寄存器相对寻址方式6 .基址变址寻址方式7 .相对基址变址寻址方式与转移地址有关的寻址方式8 .段内直接寻址9 .段内间接寻址10 段间直接寻址4.段间间接寻址理解立即寻址方式操作数直接存放在指令中,紧跟在操作码之后,它作为指令的一部分存放在代码段里,这种操作数称为立即数。【例】 MOV AL, 5;执行后,(AL)=5【例】MOV AX, 3064H;执行后,(AX)=3064H寄存器寻址和寄存器间接寻址的区别寄存器寻址方式操作数在寄存器中,指令指定寄存器号。【例】 MOV AX,

6、 BX如指令执行前 (AX)=3064H, (BX)=1234H;则指令执行后,(AX)=1234H。寄存器间接寻址方式有效地址就在某个寄存器中,而操作数则在存储器中。在16位寻址时可用的寄存器是 BX,BP,S和 DI。8086存储器寻址的有效地址如何构成有效地址可以由以下四种成分组成:(1)位移量(displacement)!存放在指令中的一个8位、16位或32位的数,它不是立即数,是一个地址。(2)基址(base)是存放在基址寄存器中的内容。它是有效地址中的基址部分,通常用来指向数据段中数组或字符串的首地址。(3)变址(index尾存放在变址寄存器中的内容。它通常用来访问数组中的某个元素

7、或 字符串中的某个字符。(4)比例因子(scale factor是386及其后继机型新增加的寻址方式中的一个术语,其值可为1、2、4或8。在寻址中,可用变址寄存器的内容乘以比例因子来取得变址值。这类寻址方式对访问元素长度为2,4,8字节的数组特别有用。有效地址的计算可以下式表示 :EA=1址+(变址X比例因子)十位移量段前缀使用的3个例外情况(1)串处理指令的目的串必须用ES段;(2)PUSH指令的目的和 POP的源必须用 SS段;(3)指令必须存放在CS段中。默认段选择规则访存类型所用段及段寄 存器缺省选择规则指令代码段CS用于取指堆栈堆栈段SS所有的堆栈的进栈和出栈任、何 用即作为基址寄存

8、器的访存局部数据数据段DS除相对于堆栈以及串处理指令的 目的串以外的所有数据访问目的串附加数据段ES串处理指令的目的串双操作数指令的2个操作数可以都是存储器寻址吗为使指令字不要过长,规定双操作数指令的两个操作数中,只能有一个使用存储器寻址方式。立即寻址和直接寻址都用到数值,汇编指令中如何区分立即寻址方式操作数直接存放在指令中,紧跟在操作码之后,它作为指令的一部分存放在代码段里,这种操作数称为立即数。直接寻址方式操作数的有效地址只包含位移量一种成分,其值就存放在代码段中指令的操作码之后。位移量的值即操作数的有效地址。了解符号地址的使用方式可以用符号地址代替数值地址MOV AX,VALUE或 MO

9、V AX,VALUE寄存器间接寻址使用的寄存器可以是AX吗不能有效地址就在某个寄存器中,而操作数则在存储器中。在 16位寻址时可用的寄存器是 BX,BP,S和 DI。掌握有效地址有2种以上成分时的各种表示方法学会使用与转移地址有关的寻址方式1 .段内直接寻址2 .段内间接寻址3 .段间直接寻址4 .段间间接寻址段内直接寻址方式有哪 2种?它符合程序的再定位要求.对吗?段间直接寻址呢?JMP NEAR PTR PROGIAJMP SHORT QUEST其中,PROGIA和QUEST均为转向的符号地址,在机器指令中,用位移量来表示。在汇编指令中,如果位移量为16位,则在符号地址前加操作符NEAR

10、PTR如果位移量为8位,则在符号地址前加操作符SHORT这种寻址方式的转移指令本身不会发生变化,这是符合程序的再定位要求的段间直接寻址在指令中直接提供了转向段地址和偏移地址,所以只要用指令中指定的偏移地址取 代IP寄存器的内容,用指令中指定的段地址取代CS寄存器的内容就完成了从一个段到另一个段的转移操作。【例】 JMP FAR PTR NEXTROUTINT其中,NEXTROUTINT为转向的符号地址,FAR PTR则是表示段间转移的操作符。与地址相关的间接寻址如果使用存储器寻址,为什么要指出是字还是双字?段间间接寻址JMP DWORD PTRINTERS+BX段内间接寻址JMP BXJMP

11、WORD PTRBP+TABLEMOV指令应注意的细节CS和IP不能作为操作数,sreg不包括CS立即数不能做目的操作数立即数不能直接赋值给段寄存器sreg,需要时可以通过通用寄存器中转两个存储器单元之间不能直接传送数据,即不能同时做源操作数和目的操作数两个段寄存器之间不能直接传送数据目的操作数和源操作数的数据宽度必须一致,即都必须为 8位或都必须为16位理解指令PUSH和POP,注意其格式及使用方法格式为:PUSH SRC执行操作(8086为16位指令):(SP) 一 (SP)(SP)+1,(SP) J(SRC)PUSH向SS:S峙数PUSH CX若(SP)=2000H执行指令后,CH与CL

12、的内容分别压入堆栈偏移量为1FFFH与1FFEH的字节单元中,而(SP)=1FFEH格式为:POP DST执行操作(8086为16位指令):(DST)(SP)+1,(SP)(SP) (SP)+28086中,PUSH和POP指令只能作字操作,均不影响标志位POP 从 SS:SPX数POP DS若(SP)=2000H执行指令后,堆栈中偏移量为 2000H与2001H的两字节单元分别送DS低字节和高字节单元中,而 (SP)=2002H8086中,PUSH/POP指令允许的格式:PUSH/POP regPUSH/POP memPUSH/POP segregsegreg不允许使用 CS寄存器,操作数不允

13、许使用立即数寻址方式(PUSH data)保存现场时要注意压入与弹出的顺序是相反的,例如:压入时:push AXpush BX弹出时:pop BX pop AXXCHG指令的2个操作数中必须有一个是寄存器,对不对?对学会IN和OUT指令的2种使用形式IN输入指令长格式为:IN AL,PORT序节)IN AX,PORT序)执行的操作:(AL) (PORT)(节)(AX) 一 (PORT+1,PORT)()短格式为:IN AL,DX序节)IN AX,DX(字)执行的操作:(AL) (DX联节)(AX)(DX)+1,(DX)#)PORT为8位地址,DX可指定16位地址以上针对8086OUT输出指令长

14、格式为:OUT PORT,AL节)OUT PORT,AX(F)执行的操作:(PORT) (AL寿节)(PORT+1,PORT) (AX)()短格式为:OUT DX,AL序节)OUT DX,AX序)执行的操作:(DX) (AL)(节)(DX+1,(DX)(AX)(以上针对8086I/O 端口取值范围是多少?065535了解XLATf令的功能格式为:XLAT OPRXLAT执行的操作(8086为16位指令):(AL) 一 (BX)+(AL)将BX中内容与AL中内容相加,作为偏移地址,将数据段中对应字节单元内容送入AL中。BX通常为表格首址,利用该指令实现查表。由于 AL只有8位,所以表格长 度不能

15、超过256OPR为表格首地址(一般为符号地址),只为可读性而设置,不真正发挥作用 指令不影响标志位例:MOV AL,5 MOV BX, OFFSET TAB XLATTAB DB 10H 23H 34H 12H 23H 45H 65H 90H76H执行指令后,(AL)=45H例:如(BX)=0040H,(AL)=0FH,(DS)=F000H指令 XLAT把 F0000H+0040H+0FH=F004F的内容送 AL最后(AL)=2CHLEA BX LIST与 MOV BX,OFFSET LIS完成的功能一样吗一样LDS(LESf令的功能段寄存器装入指令LDS/LES格式:LDS/LES REG

16、,SRCLDS与LESf定的段寄存器分别为 DS和ESSRC只能用存储器寻址方式 目的寄存器不允许使用段寄存器。执行的操作:(REG) (SRC)(SREG)(SRC+2)例:LDS BX,2000H;把内存数据段中偏移量为2000H开始的2000H、2001H单元内容送 BX, 2002H、2003H单元内容送 DS存取标志寄存器的方法有哪些存取标志寄存器指令LAHF标志送 AH指令格式为:LAHF执行的操作:(AH) (FLAG的低字节)SAHF AH送标志寄存器指令格式为:SAHF执行的操作:(FLAGS勺低字节)j(AH)8到16位和16到32的符号扩展使用哪 2个命令,如何扩展?CB

17、W字节转换为字指令格式:CBW执行的操作:AL的内容符号扩展到 AH,形成AX中的字。若(AL)=80H贝 U (AH)=0FFHCWD字转换为双字指令格式:CWD执行的操作:AX的内容符号扩展到 DX,形成DX:AX中的双字。若(AX)=8000H,则(DX)=0FFFFHCBW心WD常被安排在IDIV指令之前INC和DEC指令是否影响 CF位?不影响这个, 没办法了 ,当初的指令就是这么设计的,可能是个 bug,但就这么一直继承下来的.如果需要影响 CF,应该用ADD/SUB xx,1 指令另外,INC/DEC 是影响 ZF 位的加减法指令分哪 2种?乘除法指令分哪 2种?ADD加法指令A

18、DC带进位加法指令SUB减法指令SBB带借位减法指令MUL无符号数乘法指令IMUL带符号数乘法指令DIV无符号数除法指令IDIV带符号数除法指令理解加减法后 CF、OF、ZR SF如何变化ADD为不带进位加法指令,将源操作数和目的操作数相加,和保留在目的操作数之 中,并改变标志位:CF(!过加法运算是否有进位判断卜OF、SF、PF、ZF和AFADC AL,30HBX AL中内容加上数据段中 BX+30H此节内容,再加上 CF位原值,结 果送AL=如果再有进位,则置位 CF,否则CF位清0,结果还影响标志位: OF、SF、PF、ZF 和 AFSUB为不带借位减法指令若减数 被减数,CF=1,否则CF=0也可以用二进制补码运算 (加法形式)是否有最高位进位判断,有则CF=0,否则CF=1减1指令DEC将操作数内

温馨提示

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

评论

0/150

提交评论