微机原理与汇编程序设计复习题

上传人:仙*** 文档编号:65559495 上传时间:2022-03-24 格式:DOC 页数:22 大小:94.50KB
返回 下载 相关 举报
微机原理与汇编程序设计复习题_第1页
第1页 / 共22页
微机原理与汇编程序设计复习题_第2页
第2页 / 共22页
微机原理与汇编程序设计复习题_第3页
第3页 / 共22页
点击查看更多>>
资源描述
微机系统与汇编语言复习题单项选择题10*2=20分填空题10*2=20分问答题:5*5=25分程序分析题4*5=20分设计应用题1*15=15分第一章 微型计算机概述1 、微型计算机(MC,Microcomputer)是有哪些部件构成的?答:由MP、存储器、输入/输出接口电路和系统总线构成。2、微型计算机系统(MCS,Microcomputer System)是有哪些部分构成的?答:微型计算机系统是以微型计算机为主体,配上软件系统和外部设备而构成的。第二章 计算机中的数据表示1 58的非压缩BCD和压缩BCD各如何表示?写出存入DX的指令。答: 58的非压缩BCD 是0508H 存入DX的指令:MOV DX,0508H 58的压缩BCD和是 58H 存入DX的指令:MOV DX,0058H2、什么是ASCII码?可表示哪些信息?按其作用可分为哪些?答:ASCII码是美国信息交换标准代码的简称,用于给西文字符编码。包括英文字母的大小写、数字、专用字符、控制字符等;按其作用可分为:34个控制字符;10个阿拉伯数字52个英文大小写字母;32个专用符号第三章 80X86微处理器及其体系结构1、 8086 CPU信号线 RESET的功能是什么? 8086复位后内部寄存器状态是怎样的?8086CPU复位后从 什么单元中取第一条指令执行。答:RESET复位信号输入 8086复位后CS=FFFFH、DS=0000H、 ES=0000H、SS=0000H、IP=0000H、FR=0000H8086CPU复位后从CS*10H+IP=FFFFH*10H+0000H=FFFF0H地址单元中取第一条指令执行启动系统。 CS:IP=FFFF:0000H 2、已知一个SRAM芯片的容量为8K8和64K8,地址线、数据线各为多少?答:SRAM芯片的容量为8K8:地址线13条 , 数据线8 条 SRAM芯片的容量为64K8:地址线16条、数据线8 条3、指令指针寄存器IP多少位?有何功能?答: IP是一个16位的寄存器,存放EU要执行的下一条指令的偏移地址,用以控制程序中 指令的执行顺序,实现对代码段指令的跟踪 。4、8086CPU用于地址锁存器输入允许的控制信号和用于数据收发器允许的控制信号各是什么信号?答:用于地址锁存器输入允许的控制信号是ALE ,用于数据收发器允许的控制信号是DEN 。 5、 是什么引脚?答:等待测试引脚6、INTA 是什么引脚?答:中断响应引脚7、M/IO 是什么引脚?答:存储器访问/输入输出访问控制引脚8、8086CPU最小、最大方式时用于总线请求、允许的信号线各是什么?答:最小:HOLD-总线请求 HLDA-总线响应 最大:RQ/GT0、RQ/GT19、8086 CPU访问存贮器和访问I/O的地址分别各为什么?可寻址的最大存贮器空间和最大I/O空间分别各为多少?答:8086 CPU访问存贮器的地址是A19A0,可寻址的最大存贮器空间是1MB. 8086 CPU访问I/O的地址是A15A0,可寻址的最大I/O空间是64KB.10、什么是逻辑地址?什么是物理地址?它们各自如何表示?如何转换?答:程序中使用的存储器地址称为逻辑地址,由16位“段基址”和16位“偏移地址”(段内地址)组成。段基址表示一个段的起始地址的高16位。偏移地址表示段内的一个单元距离段开始位置的距离。访问存储器的实际地址称为物理地址,用20位二进制表示。将两个16位二进制表示的逻辑地址错位相加,可以得到20位的物理地址:物理地址段基址16 + 偏移地址11、物理地址4ACD9H的逻辑地址可以是哪些?答:4A00:0CD9 、4500:5CD9、4A88:0459 等12、8086 CPU输入输出指令的间址寄存器是什么?答: DX13、8086 CPU 寄存器BX、BP 、AX、各是什么功能的寄存器?答:BX、BP-基址寄存器 AX-累加器14、标志寄存器FR多少位?有哪些标志?答 :FR是一个16位的寄存器,共9个标志.其中6个用作状态标志CF、PF、AF、ZF、SF、OF3个用作控制标志DF、IF、TF.(1)进位标志CF-反映运算结果向更高位是否有进/借位,加减运算后有进位/借位时CF = 1,否则CF = 0CF标志的用途:用于运算时的进/借位。用于无符号数运算后判定是否有溢出。用于移位操作时接收移出的信息位.(2)奇偶校验标志PF:反映运算结果低八位中“1”的个数为奇或者为偶,其值为1表示运算结果的低8位中1的个数为偶数,否则为奇数。 PF标志可用于数据传送后的奇偶校验。(3)辅助进位标志AF-反映运算后的结果是否有半进位/借位,其值为1表示运算中低4位向高4位有进位或借位,否则无进位或借位。 AF在BCD码运算(8位)时可用作十进制调整的条件。(4)零标志ZF-反映运算结果是否为零,其值为1表示运算结果为0,否则非0。 ZF可用于判定二个数是否相等,相等的时候它们相减的结果为零。 ZF还可用作计数器的计数次数是否减为0,当减为0的时候表示计数到,例如:循环次数计数(5)符号标志SF:反映运算结果是否为负,其值为1表示运算结果为负数,否则为正数。SF在有符号数运算时才有意义。SF也可在无符号数比较大小时判定两个数的大小,A、B两个数相减后结果SF=0,AB, SF=1,AB;SF还在有符号数比较大小时与OF标志一起判定两个数的大小。(6)溢出标志OF:反映有符号数运算后的结果是否有溢出,其值为1表示带符号数运算结果溢出,否则无溢出。有符号数运算时: 正数加正数结果为正-无溢出;结果为负-有溢出 负数加负数结果为负-无溢出;结果为正-有溢出 正数加负数或负数加正数- 无溢出 OF SF 可以用于判有符号数比较大小以上的6个状态标志在运算指令运算后由EU自动的设置在FR中(CF也可以直接用指令设置),常用作指令的转移或执行的控制条件,影响或控制后续指令的执行,特别是CF、ZF、OF、SF。CPU的不同指令对状态标志的影响是不一样的,有的指令执行后全部影响6个标志,有的影响部分,不影响的保持原态,也有的一个都不影响,对不影响的指令执行后就不可以使用条件转移指令。控制标志:(1)方向标志DF:用于串操作时设置串指针的修改方向, = 0,串指针增量变化,= 1,串指针减量变化(2)中断允许标志IF:设置是否允许CPU响应外部的可屏蔽中断请求INTR, ,= 0,关中断,= 1,开中断(3)陷阱标志TF:用于设置CPU运行为单条执行指令的方式, = 0,正常执行程序,= 1,单步执行程序第四章 寻址方式与指令系统1、下列指令的源操作数段基址各是什么段寄存器?(1)MOVAX, BPSI 答:SS(2)MOVAX, CS:8DI 答:CS (3) MOVAX, BXDI 答:DS (4) MOVAX, ES:10BPSI 答:ES2、8086允许段超越和禁止段超越操作各有哪些?答:允许段超越的有: 以BP为基址存取操作数 取源串数据 cs段数据访问等禁止段超越的是: 取指令 存目的串 堆栈操作push/pop3已知DS5000H,SS2500H,BP0200H,SI=1000H,传送指令MOV AX,BP+SI源操作数的寻址方式什么方式?物理地址是多少?答:源操作数的寻址方式是:基址变址 物理地址= 26200H 4、若DS=4500H,DI=1000H,COUNT=A8H,指令MOV AX,DI+COUNT中,源操作数的有效地址EA和物理地址各为多少?答:有效地址EA为10A8H 物理地址为460A8H 5、8086 CPU 有哪几种数据寻址方式,掌握数据各种寻址方式的寻址过程,要求会求指令的寻址方式?会求有效地址EA=?会求物理地址=?答:指令的物理地址=CS*10H+IP堆栈栈顶物理地址=SS*10H+SP源串物理地址=DS*10H+SI,目的串物理地址=ES*10H+DI数据直接寻址: MOV AL , 1000H; EA=1000H ,物理地址=DS*10H+1000H寄存器间接寻址:MOV AL , BX或SI或DI ; EA=BX或SI或DI,物理地址=DS*10H+ BX或SI或DI基址寻址:MOV AL , DISPBX ; EA=BX+DISP,物理地址=DS*10H+ BX+DISP MOV AL , DISPBP ; EA=BP+DISP,物理地址=SS*10H+ BP+DISP基址变址寻址:MOV AL , BX+SI或DI ; EA=BX+ SI或DI,物理地址=DS*10H+ BX+ SI或DIMOV AL , BP+SI或DI ; EA=BP+ SI或DI,物理地址=SS*10H+ BP+ SI或DI变址寻址:MOV AL , DISPSI ; EA=SI+DISP,物理地址=DS*10H+ SI+DISPMOV AL , DISPDI ; EA=DI+DISP,物理地址=DS*10H+ DI+DISP相对基址变址寻址:MOV AL ,DISP BX+SI或DI ; EA=BX+ SI或DI+DISP,物理地址=DS*10H+ BX+ SI或DI+DISPMOV AL , DISP BP +SI或DI ; EA=BP+ SI或DI+DISP,物理地址=SS*10H+ BP+ SI或DI+DISP6、8086 CPU 有哪几种转移寻址方式,段内、段间转移有何不同?掌握转移各种寻址方式的寻址过程。答:与转移地址有关的寻址方式:段内相对寻址、段内间接寻址、段间直接寻址、段间间接寻址。段内相对寻址:段内短转(short)转移偏移地址=IP+disp 8段内近转(near)转移偏移地址=IP+disp 16段内间接寻址:寄存器间接转移的偏移地址= reg (reg为AX、BX、CX、DX、SP、BP、SI、DI)存储器间接转移的偏移地址= (EA) (EA为数据寻址方式寻址单元,为字单元)例:已知BX=3500H,DS=2000H.(23500H)=4500H, (23502H)=2000H JMP BX; 段内寄存器间接,IP=3500HJMP WORD PTRBX; 段内存储器间接,IP=(2000H*10H+3500H)=4500H段间直接转:JMP FAR PTR L: IP=转移指令的第2、3字节CS=转移指令的第4、5字节段间存储器间接转:JMP DWORD PTR BX : IP=(2000H*10H+3500H)=4500HCS=(2000H*10H+3500H+2)=2000H7、数据传送指令(MOV)使用有哪些规定?答:允许regreg 例:MOV AX,BX 允许regmem 例:MOV AX,BX 允许regdata 例:MOV AX,2500H 允许regsreg 例:MOV AX,CS 允许memreg 例:MOV BX, AX 允许memdata 例:MOV BX,2500H 允许memsreg 例:MOV BX,CS 允许sregreg(除CS外) 例:MOV DS,BX不允许:memmem 例:MOV Y,BX 例:MOV SI,BX不允许sregdata 例:MOV DS,2500H不允许sregsreg 例:MOV DS,CS不允许CS做目的寄存器 例:MOV CS,BX注意数据类型匹配 例:MOV DL,BX8、数据寻址有哪些情况不允许?解:例如MOV DI,BX ;错,存储器不能传存储器MOVDX+SI,AL; 错,DX不能用作基址寻址MOVSI+DI,AL; 错,SI+DI不能用作变址寻址MOVBX+BP,AL; 错,BX+BP不能用作基址寻址MOV WORD PTR BX,-1 ;正确 MOV AL,BX;错,类型不匹配MOV DS,SEG DAT;错,立即数不能送段寄存器PUSH 1234H ; 错,不能用立即数MUL AL , 58H ;错,不能用立即数9、不能采用立即数寻址方式的指令有哪些?答:PUSH 1234H ; 错,不能用立即数 MUL 58H ;错,不能用立即数 DIV 58H ;错,不能用立即数10、掌握8086CPU以下指令: MOV、PUSH/POP、LEA、ADD、ADC、SUB、SBB、INC、DEC、NEG、CMP、 DAA、MUL、DIV、AND、OR、NOT、XOR、SHL、SHR、 SAL、SAR、ROL、ROR、RCL、RCR、MOVS、CMPS、STOS、LODS、SCAS、 REP、条件转移类、LOOP、CALL、RET、CLD、STD对给出的指令,要求会分析指令是否正确。第五章 伪指令及汇编语言程序结构1PTR运算符有何功能?答:可以重新指定存储器操作数的类型,可以重新指定转移指令的转移类型。2、存储器数据类型有什么要求,如何解决类型不确定?答:存储器数据类型要求类型匹配,用PTR可以说明和重新指定变量或标号的类型满足类型匹配。例如:INC BX-类型不确定正确的写法: INC BYTE PTR BX-字节类型INC WORD PTR BX-字类型例如:X DW 1234H-字属性 MOV AL , X-类型错误正确的写法: MOV AL , BYTE PTR X ; AL=34H3要求会求数组最后一个字、字节的存储地址是多少。答:数组最后一个字的地址= 数组的首地址+(数据个数-1)*2数组最后一个字节的地址= 数组的首地址+(数据个数-1)4、已知BUF偏移地址为58ADH,定义BUF DW 20DUP(?)后,该数组最后一个字数据的偏移地址是多少?答:数组最后一个字数据的偏移地址= 58ADH +(14H-1)*2H=58D3H。5、已知BUF偏移地址为25DBH,定义BUF DB 50DUP(?)后,该数组最后一个字节的偏移地址是多少?答:数组最后一个字节的偏移地址= 25DBH +(32H-1) = 260CH6、掌握汇编语言程序的编程格式-段定义、段说明、段结束、返回DOS。DATA SEGMENTDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART : . .MOV AH,4CHINT 21HCODE ENDS END START 7、掌握汇编语言中常量有哪些?举例。答:常量有: 二进制:10001101B 十进制:2532D、-256D、2536十六进制:2532H、0FAC8H、 ABCDH-0ABCDH 字符常量:A 用EQU定义的常量:ABC EQU 208、掌握汇编语言中变量的属性和数据的类型。答:变量的属性包括有: 段地址、偏移地址、类型属性(字节BYTE、字WORD、双字DWORD)9、掌握汇编语言中标号的属性。答:标号的属性包括有:段地址、偏移地址、类型属性(段内NEAR、段间FAR)10、掌握汇编语言中数据定义语句。举例。答: 字节定义:A1 DB 25 字定义: A2 DW 1234H双字定义: A3 DD 12345678H 8字节定义DQ10字节定义 DT11、汇编语言组成标识符的字符及规则是怎样的? 答: ( 1 ) 组成标识符的字符有: 英文大写字母:AZ; 英文小写字母: a-z; 数字09; 字符?、_ 、$;( 2 )字符长度不超过3l个; ( 3 ) 首字符不能是数字; ( 4 ) ? 不能单独作为一个标识符; ( 5 ) 不能把保留字用作标识符,保留字包括助记符、寄存器名等。12、什么是8086汇编语言名字?包括有哪些?有何特点?程序中用到的名字有何特点?答:名字是程序员在编程中按标识符规定命名的,目的是方便编程和读程。名字包括文件名、标题名、段名、过程名和符号常量名等。程序中用到的名字:( 1 ) 段名:在段定义语句中命名取定,定义后的段名可以作为段基值来使用,用来对段寄存器赋值。( 2 ) 过程名:在过程定义语句中定义,指向过程中第一条指令所在的内存单元的地址,即过程的入口地址,有NEAR和FAR之分。( 3 ) 符号常量名:由符号定义语句EQU、=来定义,对符号常量给以赋值。第六章 汇编语言程序设计1、已知AX=836BH,X=FFFFH,执行“CMPAX, X”后,标志位ZF、CF、OF、SF=?答: 0101 1000 0011 0110 1011+ 0000 0000 0000 0001 1000 0011 0110 1100ZF=0(结果非0) CF=1(有借位)OF=0(无溢出) SF=1(结果为负)2设SP=2000H,AX=8A95H,DI=A000H。请写出下列指令执行后指定寄存器和标志位的值。ADD AX,DI ;PUSH AX ;POP DI ;答: ADD AX,DI ;AX =2A95H ,CF=1 PUSH AX ;SP = 1FFEH POP DI ;DI = 2A95H 3、查表程序如下,分析该程序写出程序执行后的结果。DATA SEGMENTTABLE DW 0,1,4,9,16,25,36,49,64,81,100, 121, 144,169,196,225,256,289,324,361,400 X DB 17 ; Y DW ? ;DATA ENDS;定义代码段CODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX; MOV BX,OFFSET TABLE; MOV AL,X ; MOV AH,0; SHL AX , 1 ;AX=34 ADD BX,AX MOV AX,BX; MOV Y,AX ; MOV AH,4CH INT 21H ; CODE ENDS END START答: Y=289或 91H4、查表程序如下,分析该写出程序执行后的结果。DATA SEGMENTTABLE DB 0,1,4,9,16,25,36,49,64,81,100, 121, 144,169,196,225; X DB 14 ; Y DB ? ;DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX;MOV BX,OFFSET TABLE MOV AL,X ; MOV AH,0; ADD BX , AX MOV AL , BX MOV Y,AL ; MOV AH,4CH INT 21H ; CODE ENDS END START答: Y=196或C4H 5分析下列程序段每条指令的执行结果和程序实现的功能? X DW 10 MOV AX,X SAL AX,1 MOV BX ,AX SAL AX , 1 ADD AX , BX ADD AX , X RET 答: X DW 10 MOV AX,X ;AX=X SAL AX,1 ; AX=2X MOV BX ,AX ; BX=2X SAL AX , 1 ; AX=4X ADD AX , BX ; AX=6X ADD AX , X ; AX=7X执行后的结果AX=46H或70,实现了 X 7的功能。 6分析下列程序段每条指令的执行结果和程序实现的功能? X DB 10 MOV AL,X SAL AL,1 MOV BL,AL SAL AL, 1 SAL AL,1 ADD AL,BL 答:X DB 10 MOV AL,X ;AL=X SAL AL,1 ;AL=2X MOV BL,AL ; BL=2X SAL AL, 1 ; AL=4X SAL AL,1 ; AL=8X ADD AL,BL ; AL=10X 执行后的结果AL=64H或100,实现了 X 10的功能。 7、已知DS=5000H,BX=2500H, DI=6000H (58500H)=D456H,CX=0004H,CF=1指令SAR BXDI , CL 、指令RCL BYTE PTRBXDI , 1执行后的结果各是什么?答:指令SAR BXDI , CL 执行后的结果是:物理地址=DS*10H+BX+DI=58500H执行前:(58500H) = D456H;执行后: (58500H) = FD45H;指令RCL BYTE PTRBXDI , 1 执行后的结果是:(58500H) = ADH 0101 0110 CF=1 1010 1101 CF=0物理地址=DS*10H+BX+DI=58500H执行前:(58500H) = 56H;CF=1执行后: (58500H) = ADH8、已知DS=5000H,BX=2500H, DI=6000H (58500H)=C456H,CX=0004H,指令SAR BXDI , CL 、指令SHR BXDI , CL执行后的结果各是什么?答:指令SAR BXDI , CL执行后的结果各是(58500H) = FC45H ;指令SHR BXDI , CL 执行后的结果是:(58500H) = 0C45H9、掌握补码计算X+Y和X-Y。并可写出计算后的真值及标志位CF、OF、ZF、SF、PF各为多少?例如:X=-45 ,Y=-34, 用补码计算X+Y和X-Y。 解: X=-45=-0101101 X补=1101 0011 Y=-34=-0100010 Y补=1101 1110 -Y补=0010 0010 求X+Y补: X补=1101 0011 +Y补=1101 1110 1 1011 0001 = -100 1111= -79 CF=1(有进位) ZF=0(结果非0) SF=1(结果为负) OF=0(结果无溢出) PF=1(偶数个1)求X-Y补: X补=1101 0011 +-Y补=0010 0010 0 1111 0101 = -000 1011= -11 CF=0=1(有借位) ZF=0(结果非0) SF=1(结果为负) OF=0(结果无溢出) PF=1(偶数个1)10、设AX=865AH,BX=CB75H,则指令“ADD AX,BX”执行后,产生的标志位是怎样的?解: 1000 0110 0101 1010 + 1100 1011 0111 0101 1 0101 0001 1100 1111CF=1(有进位) SF=0(结果为正) ZF=0 (结果非零) OF=1 (结果有溢出)AF=0(无进借位) PF=1(偶数个1)11、判断下列指令是否正确。若不正确,指出错误原因。(1)MOVSI, DL (2)MOVES, 1000H(3)LEAAX, 3006H (4)MOVBPDI, 0 (5)MOVSI, DI(6)MOV DI,BX (7)MOV DX+SI,AL(8)MUL AL , 58H (9)MOV DS,SEG DAT (10)MOV WORD PTR BX,-1 答:(1)指令MOV SI, DL是错误的,两个操作数类型不匹配。(2)指令MOV ES, 1000H是错误的,装载段寄存器时,源操作数不能为立即数。(3)指令LEAAX, 3006H是错误的,LEA指令的源操作数必须为内存操作数。(4)指令MOVBPDI, 0是错误的,操作数类型无法确定。(5)指令MOVSI, DI 是错误的,不能同时出现两个内存操作数。 (6)MOV DI,BX ;错,存储器不能传存储器(7)MOVDX+SI,AL; 错,DX不能用作基址寻址(8)MUL AL , 58H ;错,乘法指令不能用立即数(9)MOV DS,SEG DAT;错,立即数不能送段寄存器(10)MOV WORD PTR BX,-1 ;正确 ,-1送BX指示的字单元12、8086允许段超越和禁止段超越操作各有哪些?。答:允许段超越的有:以BP为基址存取操作数、通用数据存取(用BX、BP、SI、DI、直接寻址的内存访问)(MOV AL,SS:SI )、字符串指令的源数据串(DS:SI) 操作(LOAD )、cs段数据访问(MOV AL,CS:BP+5)等。禁止段超越的是:取指令的指令地址(CS:IP )、字符串指令的目的数据串(ES:DI) 操作(STOS)、堆栈操作(push/pop)第七章 分支结构程序设计18086 CPU条件转移指令和SHORT的转移范围为多少? JMP L的转移的范围为多少? 答:条件转移指令和SHORT的转移范围为 -128+127JMP L的转移的范围为: -32768- +327672、指令JMP FAR PTR LOP和“JMP DWORD PTR DI”的功能有何异同?答:上述两条指令都是段间远转移指令,但是偏移地址的来源不同。指令JMP FAR PTR LOP执行时,目的的偏移地址在转移指令第2、3字节中,段地址在转移指令第4、5字节中。指令“JMP DWORD PTR DI”时,目的偏移地址在存储单元DS: DI中,目的段地址在存储单元DS: DI+2中。3、指令“JMP BX”和“JMP WORD PTR BX”的功能有何异同?答:上述两条指令都是段内近转移指令,但是偏移地址的来源不同。指令“JMPBX”执行时,新的偏移地址在BX寄存器内。“JMP WORD PTR BX”时,目的偏移地址在存储单元中,该存储单元的地址在DS: BX中。4、已知CS=5000H,DS=6000H,BX=4500H,(64500H)=7500H,(64502H)=4600H,指令JMP DWORD PTR BX 、指令JMP WORD PTR BX 执行后程序的转移地址各是多少?答:指令JMP DWORD PTR BX执行后程序的转移地址是CS=4600H ,IP= 7500H。物理地址=DS*10H+BX=64500H(双字)(64500H)=7500HIP,IP=7500H(64502H)=4600HCS,CS=4600H指令JMP WORD PTR BX 执行后程序的转移地址是CS=5000H ,IP=7500H。物理地址=DS*10H+BX=64500H(字)(64500H)=7500HIP,IP=7500HCS=5000H(不变)5、已知AX=0C046H , BX=8FC2H,分析下列程序每条指令的执行结果?写出程序执行后转移到什么标号执行。 ADD AX , BX ; JNO L1 ; JNC L2 ; JMP L3 ; 答:ADD AX , BX ; AX=C046H+8FC2H=5008H ; OF=1 ,CF=1 JNO L1 ; OF=1 ,不转L1 JNC L2 ; CF=1,不转L2 JMP L3 ; 转L3程序执行后转移到L3执行。6、已知AX=4258H , BX=6083H,分析下列程序每条指令的执行结果?写出程序执行后转移到什么标号执行。 ADD AX , BX ; AX=4258H+6083H=A2DBH ; OF=1 ,CF=0 JNO L1 ; OF=1,不转L1 JNC L2 ;CF=0,转L2 JMP L3程序执行后转移到L2执行。7、已知DS=8000H,SS=4000H,CS=2000H,ES=9000H,AX=5423H,BX=2000H,SI=2000H,DI=1000H,CX=0004H,DX=0050H,SP=0300H,BP=6000H,,DF=0,CF=1(4A000H)=0500H,(4A002H)=2B00H(92500H)=87A5H, (8A000H)=3450H(8A002H)=7700H,(44000H) =B629H按下列要求回答问题。(1)写出执行指令 SAR WORD PTR ES: 0500H+BX,CL 后的结果。答:物理地址=ES*10H+BX+0500H =9000H*10H+2000H+0500H=92500H 操作数(92500H)=87A5H , CL=4 ,算术右移4位 执行后(92500H)=F87AH (2) 写出执行指令 SAR WORD PTR SI+BP,CL 后的结果。答:物理地址=SS*10H+SI+BP =4000H*10H+2000H+2000H=44000H 操作数(44000H)=B629H , CL=4 ,算术右移4位 执行后(44000H)=FB62H (3)写出执行指令 JMP DWORD PTR 3000H+DI+BP 后的转移地址是多少?物理地址=SS*10H+3000H+DI+BP=4000H*10H+3000H+1000H+6000H=4A000H 操作数(4A000H)=0500H,(4A002H)=2B00H 执行后CS=2B00H IP=0500H8、写出执行段间转移指令JMP FAR PTR LOP指令时,执行的操作是怎样的?答:执行段间转移指令JMP FAR PTR LOP指令时,执行的操作是:IP转移指令第2、3字节目标地址的偏移地址 CS转移指令第4、5字节目标地址的段地址9、指令“JMP SI”和“JMP WORD PTR SI”作用有什么不同?请说明。答:上述两条指令都是段内近转移指令,但是偏移地址的来源不同。指令JMP SI 执行时,新的偏移地址在SI寄存器内指令JMP WORD PTR SI执行时,目的偏移地址在存储单元中,该存储单元的地址在DS: SI中。第八章 循环结构程序设计1、下列串操作指令REP、REPNZ、REPNZ正确使用是怎样的?答: REP LODSB REP STOSB REP MOVB REPZ CMPS REPNZ SCASB2、已知DS=1000H ,ES=3000H,SI=2500,DI=0500H,CX=0004H,DF=0,AX=7825H,(12500H)=12H,(12501H)=34H(12502H)=56H,(12503H)=78H.指令REP STOSB 执行后结果是怎样的?答:本题是向目的串中存数据的操作目的串操作地址=ES*10H+DI =30000H+0500H=30500H 关键字=AL=25H REP重复次数=CX=0004执行后(30500H)=25H,(30501H)=25H,(30502H)=25H,(30503H)=25H或(30500H30503H)=56H3、已知DS=1000H ,ES=4000H,SI=2500H,DI=0500H,CX=0004H,DF=0,AX=3456H,(12500H)=12H,(12501H)=34H,(12502H)=56H,(12503H)=78H.指令REP MOVSB 执行后结果是怎样的?答:本题是串传送操作 源串操作地址=DS*10H+SI =10000H+2500H=12500H 目的串操作地址=ES*10H+DI =40000H+0500H=40500H REP重复次数=CX=0004执行后(40500H)=12H , (40501H)=34H ,(40502H)=56H , (40503H)=78H4、掌握在字符串中查找关键字并做替换的编程.例:编写程序实现从数据段以DAT为首地址的字符串中寻找所有的 Y 字符,找到后替换为 X ,该字符串以0DH(回车)结尾,字符的个数不大于50个。数据段定义DATA SEGMENT DAT DB ABCA,0DHDATA ENDS代码段定义CODE SEGMENT ASSUME CD:CODE , DS:DATA;初始化DS段START:MOV AX , DATA MOV DS , AX;初始化 MOV BX , OFFSET DAT;循环查询 L3:MOV AL , BX;判结束 CMP AL,0DH JE L1 ;判 Y CMP AL , Y JNE L2;查到Y ,替换 MOV BX , X;修改指针,循环 L2:INC BX JMP L3;保存结果,返回DOS LI: MOV AH,4CH INT 21H CODE ENDS END START5、掌握在字符串中查找关键字,找到了存储关键字的地址,未找到存标志-1。例:编程从键盘输入不超过100个字符的字符串,输入后编写程序在该字符串中查找是否有*,若有就将地址存入A单元;若无则将FFFF存入A。解:定义数据段DATA SEGMENT DAT DB 100,?,100DUP(?); A DW ?DATA ENDS;定义代码段 CODE SEGMENT ASSUME CS:CODE,DS:DATA;初始化DS段 START : MOV AX,DATA MOV DS,AX;键盘输入 MOV DX , OFFSET BUF MOV AH , 0AH INT 21H;其他初始化 MOV BX,OFFSET DAT INC BX MOV CL,BX MOV CH,0, INC BX;查找 L0:MOV AL , BX CMP AL , * JZ L1 INC BX LOOP L0 MOV A ,0FFFFH; JMP EXIT L1: MOV A , BX;返回DOS EXIT: MOV AH,4CH INT 21HCODE ENDS END START6、已知DS、SS、ES、CS、AX、BX、SI、DI、CX、DX、SP、BP、CF、DF、部分内存单元中的内容,写出指令 SAR 、SHR、 JMP 、PUSH 、 REP STOSB 、REP MOVSB 、CALL、RET 、DAA执行后的结果。(1)已知DS=5000H,BX=2500H,(52500H)=6800H, (52502H)=5600H,求下列指令执行后的转移地址。指令1:JMP WORD PTR BX ; 解:物理地址=DS*10H+BX=52500H, (52500H)=6800H ,执行后IP=6800H,CS不变指令2:JMP DWORD PTR BX ; 解:物理地址=DS*10H+BX=52500H, (52500H)=6800H , (52502H)=5600H执行后IP=6800H,CS=5600H,程序转移到5600H:6800H执行。(2) 例如:已知DS=5000H,BX=2500H, DI=6000H (58500H)=B456H,CX=0004H,求下指令执行后的结果。指令1:SAR BXDI , CL ; 解:物理地址=DS*10H+BX+DI=58500H (58500H) = B456H , CL=4执行后:(58500H) = FB45H指令2:SHR BXDI , CL ; 解:物理地址=DS*10H+BX+DI=58500H (58500H) = B456H , CL=4执行后:(58500H) = 0B45H已知DS=5000H,BX=2500H, DI=6000H (58500H)=B456H,CX=0004H,CF=1指令3:RCL BYTE PTRBXDI , 1 ; 答:物理地址=DS*10H+BX+DI =50000H+2500H+6000H=58500H 操作数:(58500H)=56H CF=1执行前:(58500H)= 56H=0101 0110 CF=1执行后 (58500H)= ADH=1010 1101 CF=0 CF0 101 0 110 1 CF=1(3)例如:已知SS=3200H,SP=0500H,CX=5484H,求下指令执行后的结果。PUSH CX ; SP-2=SP , 执行后SP=04FEH , (SS:SP)=(3200H:04FEH)= 5484H或(324FEH)=5484H(4) 已知ES=2000H,DI=0500H,CX=0004H,AX=3456H写出执行REP STOSB 的操作结果是怎样的?答:本题是向串中存为目的串操作 目的串操作地址=ES*10H+DI =20000H+0500H=20500H 关键字=AL=56H REP重复次数=CX=0004执行后(20500H)=56H (20501H)=56H (20502H)=56H (20503H)=56H或(21500H25003H)=56H7、已知DS=1000H ,ES=3000H,SI=2500,DI=0500H,CX=0004H,DF=0,AX=7825H,DF=0(12500H)=12H,(12501H)=34H(12502H)=56H,(12503H)=78H.指令REP STOSB 执行后结果是怎样的?答:本题是向目的串中存数据的操作目的串操作地址=ES*10H+DI =30000H+0500H=30500H 关键字=AL=25H DF=0 REP重复次数=CX=0004执行后(30500H)=25H,(30501H)=25H,(30502H)=25H,(30503H)=25H或(30500H30503H)=25H8、8086CPU串指令中对源串、目的串有何要求。答:源串物理地址=DS*10H+SI,目的串物理地址=ES*10H+DI执行前必需设置DS、SI,ES、DICX(重复次数)DF控制地址修改方向标志9、掌握REP、REPE、REPNE有何功能? REPZ 、REPNZ指令与什么串指令联用 ?重复执行的终止条件是什么?答:REP:可重复执行MOVS、LOAD、STOSREPE:可用于串比较CMPSREPNE:可用于串搜索SCASREPZ CMPS : CX=0(循环结束,两串相等)或ZF=0(发现不等,提前退出)与CMPS指令联用,可用于两串是否相同的比较REPNZ SCAS:CX=0 (循环结束,未找到关键字)或ZF=1(发现相等,已找到关键字,提前退出)与SCAS指令联用,可用于在串中搜索是否有关键第九章 子程序设计1分析下列程序段每条指令的执行结果和程序实现的功能?MOV AX,86H MOV BL,17H CALL XYZ JNC L INC AH MOV X , AX HLT XYZ PROC ADD AL,BL DAA RET XYZ ENDP 答:MOV AX,86H ;AX=0086H MOV BL,17H ;BL=17H CALL XYZ ;JNC L ; CF=0 ,转LI
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!