收藏 分销(赏)

汇编要点答案.doc

上传人:人****来 文档编号:10695419 上传时间:2025-06-10 格式:DOC 页数:9 大小:187.50KB 下载积分:6 金币
下载 相关 举报
汇编要点答案.doc_第1页
第1页 / 共9页
汇编要点答案.doc_第2页
第2页 / 共9页


点击查看更多>>
资源描述
二 Ø CPU是哪2个部件集成到一个芯片? Ø 运算器,控制器 Ø 计算机系统包括哪2个部分? Ø 硬件,软件 Ø 计算机软件包括哪2种类型? Ø 系统软件,应用软件 Ø CPU由哪几部分组成? Ø 1、算术逻辑部件(ALU)2、控制逻辑3、工作寄存器 Ø 8086的有哪几个通用寄存器?哪些提供了字节访问? Ø 寄存器可以分为程序可见的寄存器和程序不可见的寄存器两大类。通用寄存器有AX(accumulator)累加器; Ø BX(base)基址寄存器; Ø CX(count) 计数器; Ø DX(data)数据寄存器; Ø BP(base pointer)基址指针寄存器; Ø SI(source index)源变址寄存器; Ø DI(destination index)目的变址寄存器; Ø 其中 Ø 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(instruction pointer) 指令指针寄存器; Ø SP(stack pointer) 堆栈指针寄存器; Ø FLAGS 标志寄存器。 Ø 8086有哪几个段寄存器? Ø 代码段(code segment,CS)、数据段(data segment,DS)、堆找段(stack segment,SS)和附加段(extra segment,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.基址变址寻址方式 Ø 7. 相对基址变址寻址方式 Ø Ø 与转移地址有关的寻址方式 Ø 1.段内直接寻址 Ø 2.段内间接寻址 Ø 3.段间直接寻址 Ø 4.段间间接寻址 Ø Ø 理解立即寻址方式 Ø 操作数直接存放在指令中,紧跟在操作码之后,它作为指令的一部分存放在代码段里,这种操作数称为立即数。 【例】 MOV AL,5 ;执行后,(AL)=5 【例】 MOV AX,3064H ;执行后,(AX)=3064H Ø 寄存器寻址和寄存器间接寻址的区别 寄存器寻址方式 Ø 操作数在寄存器中,指令指定寄存器号。 Ø 【例】 MOV AX,BX 如指令执行前 (AX)=3064H,(BX)=1234H;则指令执行后,(AX)=1234H。 寄存器间接寻址方式 Ø 有效地址就在某个寄存器中,而操作数则在存储器中。在16位寻址时可用的寄存器是BX,BP,SI和DI。 Ø 8086存储器寻址的有效地址如何构成 Ø 有效地址可以由以下四种成分组成: Ø (1)位移量(displacement)是存放在指令中的一个8位、16位或32位的数,它不是立即数,是一个地址。 Ø (2)基址(base)是存放在基址寄存器中的内容。 它是有效地址中的基址部分,通常用来指向数据段中数组或字符串的首地址。 Ø (3)变址(index)是存放在变址寄存器中的内容。它通常用来访问数组中的某个元素或字符串中的某个字符。 Ø (4)比例因子(scale factor)是386及其后继机型新增加的寻址方式中的一个术语,其值可为1、2、4或8。在寻址中,可用变址寄存器的内容乘以比例因子来取得变址值。这类寻址方式对访问元素长度为2,4,8 字节的数组特别有用。 Ø 有效地址的计算可以下式表示: Ø EA=基址+(变址×比例因子)+位移量 Ø 段前缀使用的3个例外情况 Ø (1)串处理指令的目的串必须用ES段; Ø (2)PUSH指令的目的和POP的源必须用SS段; Ø (3)指令必须存放在CS段中。 Ø 默认段选择规则 Ø Ø Ø 双操作数指令的2个操作数可以都是存储器寻址吗 Ø 为使指令字不要过长,规定双操作数指令的两个操作数中,只能有一个使用存储器寻址方式。 Ø 立即寻址和直接寻址都用到数值,汇编指令中如何区分 Ø 立即寻址方式 Ø 操作数直接存放在指令中,紧跟在操作码之后,它作为指令的一部分存放在代码段里,这种操作数称为立即数。 直接寻址方式 Ø 操作数的有效地址只包含位移量一种成分,其值就存放在代码段中指令的操作码之后。位移量的值即操作数的有效地址。 Ø 了解符号地址的使用方式 Ø 可以用符号地址代替数值地址 Ø MOV AX,VALUE Ø 或MOV AX,[VALUE] Ø 寄存器间接寻址使用的寄存器可以是AX吗 Ø 不能 Ø 有效地址就在某个寄存器中,而操作数则在存储器中。在16位寻址时可用的寄存器是BX,BP,SI和DI。 Ø 掌握有效地址有2种以上成分时的各种表示方法 Ø 学会使用与转移地址有关的寻址方式 Ø 1.段内直接寻址 Ø 2.段内间接寻址 Ø 3.段间直接寻址 Ø 4.段间间接寻址 Ø 段内直接寻址方式有哪2种?它符合程序的再定位要求,对吗?段间直接寻址呢? Ø JMP NEAR PTR PROGIA Ø JMP SHORT QUEST Ø 其中,PROGIA和QUEST均为转向的符号地址,在机器指令中,用位移量来表示。 Ø 在汇编指令中,如果位移量为16位,则在符号地址前加操作符NEAR PTR,如果位移量为8位,则在符号地址前加操作符SHORT。 Ø 这种寻址方式的转移指令本身不会发生变化,这是符合程序的再定位要求的 Ø 段间直接寻址 Ø 在指令中直接提供了转向段地址和偏移地址,所以只要用指令中指定的偏移地址取代IP寄存器的内容,用指令中指定的段地址取代CS寄存器的内容就完成了从一个段到另一个段的转移操作。 Ø 【例】 JMP FAR PTR NEXTROUTINT Ø 其中,NEXTROUTINT为转向的符号地址,FAR PTR 则是表示段间转移的操作符。 Ø 与地址相关的间接寻址如果使用存储器寻址,为什么要指出是字还是双字? Ø 段间间接寻址 Ø JMP DWORD PTR[INTERS+BX] Ø 段内间接寻址 Ø JMP BX Ø JMP WORD PTR[BP+TABLE] Ø MOV指令应注意的细节 Ø CS和IP不能作为操作数,sreg不包括CS Ø 立即数不能做目的操作数 Ø 立即数不能直接赋值给段寄存器sreg,需要时可以通过通用寄存器中转 Ø 两个存储器单元之间不能直接传送数据,即不能同时做源操作数和目的操作数 Ø 两个段寄存器之间不能直接传送数据 Ø 目的操作数和源操作数的数据宽度必须一致,即都必须为8位或都必须为16位 Ø 理解指令PUSH和POP,注意其格式及使用方法 Ø 格式为:PUSH SRC Ø 执行操作(8086为16位指令): Ø (SP)←(SP)-2 Ø ((SP)+1,(SP))←(SRC) Ø PUSH向SS:SP存数 Ø PUSH CX;若(SP)=2000H,执行指令后,CH与CL的内容分别压入堆栈偏移量为1FFFH与1FFEH的字节单元中,而(SP)=1FFEH Ø 格式为:POP DST Ø 执行操作(8086为16位指令): Ø (DST)←((SP)+1,(SP)) Ø (SP)←(SP)+2 Ø 8086中,PUSH和POP指令只能作字操作,均不影响标志位 Ø POP从SS:SP取数 Ø POP DS;若(SP)=2000H,执行指令后,堆栈中偏移量为2000H与2001H的两字节单元分别送DS低字节和高字节单元中,而(SP)=2002H Ø 8086中,PUSH/POP指令允许的格式: Ø PUSH/POP reg Ø PUSH/POP mem Ø PUSH/POP segreg Ø segreg不允许使用 CS 寄存器,操作数不允许使用立即数寻址方式(PUSH data) Ø 保存现场时要注意压入与弹出的顺序是相反的,例如: Ø 压入时: push AX Ø push BX Ø 弹出时: pop BX Ø pop AX Ø Ø XCHG指令的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位地址 Ø 以上针对8086 Ø OUT 输出指令 Ø 长格式为:OUT PORT,AL(字节) Ø OUT PORT,AX(字) Ø 执行的操作:(PORT)←(AL)(字节) Ø (PORT+1,PORT)←(AX)(字) Ø 短格式为:OUT DX,AL(字节) Ø OUT DX,AX(字) Ø 执行的操作:((DX))←(AL)(字节) Ø ((DX+1,(DX))←(AX)(字) Ø 以上针对8086 Ø I/O端口取值范围是多少? Ø 0~65535 Ø 了解XLAT指令的功能 Ø 格式为:XLAT OPR Ø XLAT Ø 执行的操作(8086为16位指令): Ø (AL) ← ((BX)+(AL)) Ø 将BX中内容与AL中内容相加,作为偏移地址,将数据段中对应字节单元内容送入AL中。BX通常为表格首址,利用该指令实现查表。由于AL只有8位,所以表格长度不能超过256 Ø OPR为表格首地址(一般为符号地址),只为可读性而设置,不真正发挥作用 Ø 指令不影响标志位 Ø 例: MOV AL,5 Ø MOV BX, OFFSET TAB Ø XLAT Ø … Ø TAB DB 10H 23H 34H 12H 23H 45H 65H 90H 76H Ø 执行指令后,(AL)=45H Ø 例:如(BX)=0040H,(AL)=0FH,(DS)=F000H Ø 指令XLAT把F0000H+0040H+0FH=F004F的内容送AL Ø 最后(AL)=2CH Ø LEA BX,LIST与 MOV BX,OFFSET LIST完成的功能一样吗 Ø 一样 Ø LDS(LES)指令的功能 段寄存器装入指令 Ø LDS/LES Ø 格式:LDS/LES REG,SRC ü LDS与LES指定的段寄存器分别为DS和ES ü SRC只能用存储器寻址方式 ü 目的寄存器不允许使用段寄存器。 Ø 执行的操作: (REG)←(SRC) (SREG)←(SRC+2) Ø 例:LDS BX,[2000H] ;把内存数据段中偏移量为2000H开始的[2000H]、[2001H]单元内容送BX,[2002H]、[2003H]单元内容送DS Ø 存取标志寄存器的方法有哪些 Ø 存取标志寄存器指令 Ø LAHF 标志送AH指令 Ø 格式为:LAHF Ø 执行的操作:(AH)←(FLAGS的低字节) Ø SAHF AH送标志寄存器指令 Ø 格式为: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,则(DX)=0;若 (AX)>=8000H,则(DX)=0FFFFH Ø CBW/CWD常被安排在IDIV指令之前 Ø INC和DEC指令是否影响CF位? Ø 不影响 Ø 这个, 没办法了, 当初的指令就是这么设计的, 可能是个 bug, 但就这么一直继承下来的. 如果需要影响 CF, 应该用 ADD/SUB xx, 1 指令 另外, INC/DEC 是影响 ZF 位的 Ø 加减法指令分哪2种?乘除法指令分哪2种? Ø ADD加法指令 Ø ADC带进位加法指令 Ø SUB减法指令 Ø SBB带借位减法指令 Ø MUL无符号数乘法指令 Ø IMUL带符号数乘法指令 Ø DIV无符号数除法指令 Ø IDIV带符号数除法指令 Ø 理解加减法后CF、OF、ZF、SF如何变化 Ø ADD为不带进位加法指令,将源操作数和目的操作数相加,和保留在目的操作数之中,并改变标志位:CF(通过加法运算是否有进位判断)、OF、SF、PF、ZF和AF Ø ADC AL,30H[BX];AL中内容加上数据段中[BX+30H]字节内容,再加上CF位原值,结果送AL。如果再有进位,则置位CF,否则CF位清0, 结果还影响标志位:OF、SF、PF、ZF和AF Ø SUB为不带借位减法指令 Ø 若减数>被减数,CF=1,否则CF=0 Ø 也可以用二进制补码运算(加法形式)是否有最高位进位判断,有则CF=0,否则CF=1 Ø 减1指令DEC将操作数内容减1,都把结果送回操作数中,并根据结果设置除CF以外的标志位,操作数不能为立即数,经常用于修改地址指针 Ø MUL DL;指令完成DL与AL内容的字节乘法运算 Ø MUL WORD PTR [2000H];指的是[2000H][2001H]单元字内容与AX内容进行字乘法运算 Ø 对于MUL指令,如果乘积的高一半为0,则CF位和OF位均为0;否则CF位和OF位均为1。 Ø 对于IMUL指令,如果乘积的高一半是低一半的符号扩展,则CF位和OF位均为 0,否则就均为1。 Ø DIV执行的操作: Ø 字节操作:(AL)←(AX)/(SRC)的商 Ø (AH)←(AX)/(SRC)的余数 Ø 字操作:(AX)←(DX,AX)/(SRC)的商 Ø (DX)←(DX,AX)/(SRC)的余数 Ø Ø IDIV操作方法与DIV相同,但操作数为带符号数。 Ø 除法指令对所有条件码位均无定义。 Ø IDIV字节相除时,商的范围是-080H-7FH,字相除时,商的范围是-8000H-7FFFH。如果除数为“0”或商超出累加器的容量,则产生除法错误故障(中断0) Ø 余数的符号和被除数相同 Ø 除法运算和CBW,CWD配合使用 Ø Ø 理解CMP指令如何完成数的比较 Ø 格式:CMPS SRC,DST Ø CMPSB(字节) Ø CMPSW(字) Ø 执行的操作: Ø ① ((DS): (SI)) - ((ES): (DI)) Ø ②字节操作: (SI)←(SI)±1 (DI)←(DI)±1 Ø 字操作:(SI)←(SI)±2(DI)←(DI)±2 Ø DF=0用+,否则用− Ø 9
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 考试专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服