汇编要点答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1二CPU是哪2个部件集成到一个芯片?运算器,控制器计算机系统包括哪2个部分?硬件,软件计算机软件包括哪2种类型?系统软件,应用软件CPU由哪几部分组成?1、算术逻辑部件(ALU)2、控制逻辑3、工作寄存器8086的有哪几个通用寄存器?哪些提供了字节访问?寄存器可以分为程序可见的寄存器和程序不可见的寄存器两大类。通用寄存器有AX(accumulator)累加器;BX(base)基址寄存器;CX(count)计数器;DX(data)数据寄存器;BP(basepointer)基址指针寄存器;SI(sourceindex)源变址寄存器;DI(destinationindex)目的变址寄存器;其中AX(accumulator)累加器;BX(base)基址寄存器;CX(count)计数器;DX(data)数据寄存器;提供了字节访问标志寄存器各标志位的含义?IP和SP的含义?标志名标志为1标志为0OF溢出(是/否)DF方向(减量/增量)IF中断(允许/关闭)SF符号(负/正)ZF零(是/否)AF辅助进位(是/否)PF奇偶(偶/奇)CF进位(是/否)OVDNEINGZRACPECYNVUPDIPLNZNAPONCTF为陷阱标志位,为1时,每条指令执行后产生陷阱,用于单步调试IP(instructionpointer)指令指针寄存器;SP(stackpointer)堆栈指针寄存器;FLAGS标志寄存器。28086有哪几个段寄存器?代码段(codesegment,CS)、数据段(datasegment,DS)、堆找段(stacksegment,SS)和附加段(extrasegment,ES)4个寄存器。了解寄存器和存储器的不同寄存器存储器在CPU内部在CPU外部访问速度快访问速度慢容量小,成本高容量大,成本低用名字表示用地址表示没有地址地址可用各种方式形成8086是按字编址,对吗不对,按字节编址8086的一个字(16位)怎样存入存储器的?个字存入存储器要占有相继的两个字节,存放时低位字节存入低地址,高位字节存入高地址。8086的使用存储器地址访问数据时,能根据地址确定数据的大小吗不能,同一个地址既可看作字节单元的地址,又可看作字单元、双字单元的地址,这要根据使用情况确定。8086的地址空间是多大?1MB1个段最大最小都是多大,段首地址的特点64KB,段不能起于任意地址,而必须从任一小段的首地址开始,每16个字节为一小段。一个物理地址由段地址和偏移地址组成,这种表示是唯一的吗不唯一学会段地址和偏移地址合成物理地址物理地址=16段地址+偏移地址例:(DS)=2100H,(BX)=0500H(PA)=21000H+0500H=21500H8086实模式下内存最多多大?1M三能识别各种寻址方式,尤其是存储器寻址与数据有关的寻址方式1.立即寻址方式2.寄存器寻址方式存储器寻址的几个说明3.直接寻址方式4.寄存器间接寻址方式5.寄存器相对寻址方式6.基址变址寻址方式37.相对基址变址寻址方式与转移地址有关的寻址方式1.段内直接寻址2.段内间接寻址3.段间直接寻址4.段间间接寻址理解立即寻址方式操作数直接存放在指令中,紧跟在操作码之后,它作为指令的一部分存放在代码段里,这种操作数称为立即数。【例】MOVAL,5;执行后,(AL)=5【例】MOVAX,3064H;执行后,(AX)=3064H寄存器寻址和寄存器间接寻址的区别寄存器寻址方式操作数在寄存器中,指令指定寄存器号。【例】MOVAX,BX如指令执行前(AX)=3064H,(BX)=1234H;则指令执行后,(AX)=1234H。寄存器间接寻址方式有效地址就在某个寄存器中,而操作数则在存储器中。在16位寻址时可用的寄存器是BX,BP,SI和DI。8086存储器寻址的有效地址如何构成有效地址可以由以下四种成分组成:(1)位移量(displacement)是存放在指令中的一个8位、16位或32位的数,它不是立即数,是一个地址。(2)基址(base)是存放在基址寄存器中的内容。它是有效地址中的基址部分,通常用来指向数据段中数组或字符串的首地址。(3)变址(index)是存放在变址寄存器中的内容。它通常用来访问数组中的某个元素或字符串中的某个字符。(4)比例因子(scalefactor)是386及其后继机型新增加的寻址方式中的一个术语,其值可为1、2、4或8。在寻址中,可用变址寄存器的内容乘以比例因子来取得变址值。这类寻址方式对访问元素长度为2,4,8字节的数组特别有用。有效地址的计算可以下式表示:EA=基址+(变址×比例因子)+位移量段前缀使用的3个例外情况(1)串处理指令的目的串必须用ES段;(2)PUSH指令的目的和POP的源必须用SS段;(3)指令必须存放在CS段中。默认段选择规则4双操作数指令的2个操作数可以都是存储器寻址吗为使指令字不要过长,规定双操作数指令的两个操作数中,只能有一个使用存储器寻址方式。立即寻址和直接寻址都用到数值,汇编指令中如何区分立即寻址方式操作数直接存放在指令中,紧跟在操作码之后,它作为指令的一部分存放在代码段里,这种操作数称为立即数。直接寻址方式操作数的有效地址只包含位移量一种成分,其值就存放在代码段中指令的操作码之后。位移量的值即操作数的有效地址。了解符号地址的使用方式可以用符号地址代替数值地址MOVAX,VALUE或MOVAX,[VALUE]寄存器间接寻址使用的寄存器可以是AX吗不能有效地址就在某个寄存器中,而操作数则在存储器中。在16位寻址时可用的寄存器是BX,BP,SI和DI。掌握有效地址有2种以上成分时的各种表示方法学会使用与转移地址有关的寻址方式1.段内直接寻址2.段内间接寻址3.段间直接寻址4.段间间接寻址段内直接寻址方式有哪2种?它符合程序的再定位要求,对吗?段间直接寻址呢?JMPNEARPTRPROGIAJMPSHORTQUEST其中,PROGIA和QUEST均为转向的符号地址,在机器指令中,用位移量来表示。在汇编指令中,如果位移量为16位,则在符号地址前加操作符NEARPTR,如果位移量为8位,则在符号地址前加操作符SHORT。这种寻址方式的转移指令本身不会发生变化,这是符合程序的再定位要求的段间直接寻址5在指令中直接提供了转向段地址和偏移地址,所以只要用指令中指定的偏移地址取代IP寄存器的内容,用指令中指定的段地址取代CS寄存器的内容就完成了从一个段到另一个段的转移操作。【例】JMPFARPTRNEXTROUTINT其中,NEXTROUTINT为转向的符号地址,FARPTR则是表示段间转移的操作符。与地址相关的间接寻址如果使用存储器寻址,为什么要指出是字还是双字?段间间接寻址JMPDWORDPTR[INTERS+BX]段内间接寻址JMPBXJMPWORDPTR[BP+TABLE]MOV指令应注意的细节CS和IP不能作为操作数,sreg不包括CS立即数不能做目的操作数立即数不能直接赋值给段寄存器sreg,需要时可以通过通用寄存器中转两个存储器单元之间不能直接传送数据,即不能同时做源操作数和目的操作数两个段寄存器之间不能直接传送数据目的操作数和源操作数的数据宽度必须一致,即都必须为8位或都必须为16位理解指令PUSH和POP,注意其格式及使用方法格式为:PUSHSRC执行操作(8086为16位指令):(SP)←(SP)-2((SP)+1,(SP))←(SRC)PUSH向SS:SP存数PUSHCX;若(SP)=2000H,执行指令后,CH与CL的内容分别压入堆栈偏移量为1FFFH与1FFEH的字节单元中,而(SP)=1FFEH格式为:POPDST执行操作(8086为16位指令):(DST)←((SP)+1,(SP))(SP)←(SP)+28086中,PUSH和POP指令只能作字操作,均不影响标志位POP从SS:SP取数POPDS;若(SP)=2000H,执行指令后,堆栈中偏移量为2000H与2001H的两字节单元分别送DS低字节和高字节单元中,而(SP)=2002H8086中,PUSH/POP指令允许的格式:PUSH/POPregPUSH/POPmemPUSH/POPsegregsegreg不允许使用CS寄存器,操作数不允许使用立即数寻址方式(PUSHdata)保存现场时要注意压入与弹出的顺序是相反的,例如:压入时:pushAX6pushBX弹出时:popBXpopAXXCHG指令的2个操作数中必须有一个是寄存器,对不对?对学会IN和OUT指令的2种使用形式IN输入指令长格式为:INAL,PORT(字节)INAX,PORT(字)执行的操作:(AL)←(PORT)(字节)(AX)←(PORT+1,PORT)(字)短格式为:INAL,DX(字节)INAX,DX(字)执行的操作:(AL)←((DX))(字节)(AX)←((DX)+1,(DX))(字)PORT为8位地址,DX可指定16位地址以上针对8086OUT输出指令长格式为:OUTPORT,AL(字节)OUTPORT,AX(字)执行的操作:(PORT)←(AL)(字节)(PORT+1,PORT)←(AX)(字)短格式为:OUTDX,AL(字节)OUTDX,AX(字)执行的操作:((DX))←(AL)(字节)((DX+1,(DX))←(AX)(字)以上针对8086I/O端口取值范围是多少?0~65535了解XLAT指令的功能格式为:XLATOPRXLAT执行的操作(8086为16位指令):(AL)←((BX)+(AL))将BX中内容与AL中内容相加,作为偏移地址,将数据段中对应字节单元内容送入AL中。BX通常为表格首址,利用该指令实现查表。由于AL只有8位,所以表格长度不能超过256OPR为表格首地址(一般为符号地址),只为可读性而设置,不真正发挥作用指令不影响标志位例:MOVAL,5MOVBX,OFFSETTABXLAT…7TABDB10H23H34H12H23H45H65H90H76H执行指令后,(AL)=45H例:如(BX)=0040H,(AL)=0FH,(DS)=F000H指令XLAT把F0000H+0040H+0FH=F004F的内容送AL最后(AL)=2CHLEABX,LIST与MOVBX,OFFSETLIST完成的功能一样吗一样LDS(LES)指令的功能段寄存器装入指令LDS/LES格式:LDS/LESREG,SRCLDS与LES指定的段寄存器分别为DS和ESSRC只能用存储器寻址方式目的寄存器不允许使用段寄存器。执行的操作:(REG)←(SRC)(SREG)←(SRC+2)例:LDSBX,[2000H];把内存数据段中偏移量为2000H开始的[2000H]、[2001H]单元内容送BX,[2002H]、[2003H]单元内容送DS存取标志寄存器的方法有哪些存取标志寄存器指令LAHF标志送AH指令格式为:LAHF执行的操作:(AH)←(FLAGS的低字节)SAHFAH送标志寄存器指令格式为:SAHF执行的操作:(FLAGS的低字节)←(AH)8到16位和16到32的符号扩展使用哪2个命令,如何扩展?CBW字节转换为字指令格式:CBW执行的操作:AL的内容符号扩展到AH,形成AX中的字。若(AL)80H,则(AH)=0;若(AL)=80H,则(AH)=0FFHCWD字转换为双字指令格式:CWD执行的操作:AX的内容符号扩展到DX,形成DX:AX中的双字。若(AX)8000H,则(

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功