微机系统与汇编语言学习资料课件_第1页
微机系统与汇编语言学习资料课件_第2页
微机系统与汇编语言学习资料课件_第3页
微机系统与汇编语言学习资料课件_第4页
微机系统与汇编语言学习资料课件_第5页
已阅读5页,还剩115页未读 继续免费阅读

下载本文档

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

文档简介

1、微机系统与汇编语言学习资料课件第一章 微型计算机概述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、什么是ASCI

2、I码?可表示哪些信息?按其作用可分为哪些?答: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复位后从C

3、S*10H+IP=FFFFH*10H+0000H=FFFF0H地址单元中取第一条指令执行启动系统。 CS:IP=FFFF:0000H 6、INTA 是什么引脚?答:中断响应引脚7、M/IO 是什么引脚?答:存储器访问/输入输出访问控制引脚 8、8086CPU最小、最大方式时用于总线请求、允许的信号线各是什么?答:最小:HOLD-总线请求 HLDA-总线响应 最大:RQ/GT0、RQ/GT19、8086 CPU访问存贮器和访问I/O的地址分别各为什么?可寻址的最大存贮器空间和最大I/O空间分别各为多少?答:8086 CPU访问存贮器的地址是A19A0,可寻址的最大存贮器空间是1MB.8086 C

4、PU访问I/O的地址是A15A0,可寻址的最大I/O空间是64KB.10、什么是逻辑地址?什么是物理地址?它们各自如何表示?如何转换?答:程序中使用的存储器地址称为逻辑地址,由16位“段基址”和16位“偏移地址”(段内地址)组成。段基址表示一个段的起始地址的高16位。偏移地址表示段内的一个单元距离段开始位置的距离。访问存储器的实际地址称为物理地址,用20位二进制表示。将两个16位二进制表示的逻辑地址错位相加,可以得到20位的物理地址:物理地址段基址16 + 偏移地址11、物理地址4ACD9H的逻辑地址可以是哪些?答:4A00:0CD9 、4500:5CD9、4A88:0459 等12、8086

5、 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:反映运算结果低八位中“

6、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表示运算结果为负数,否则为

7、正数。SF在有符号数运算时才有意义。SF也可在无符号数比较大小时判定两个数的大小,A、B两个数相减后结果SF=0,AB, SF=1,AB;SF还在有符号数比较大小时与OF标志一起判定两个数的大小。(6)溢出标志OF:反映有符号数运算后的结果是否有溢出,其值为1表示带符号数运算结果溢出,否则无溢出。有符号数运算时: 正数加正数结果为正-无溢出;结果为负-有溢出 负数加负数结果为负-无溢出;结果为正-有溢出 正数加负数或负数加正数- 无溢出 OF SF 可以用于判有符号数比较大小以上的6个状态标志在运算指令运算后由EU自动的设置在FR中(CF也可以直接用指令设置),常用作指令的转移或执行的控制条件

8、,影响或控制后续指令的执行,特别是CF、ZF、OF、SF。CPU的不同指令对状态标志的影响是不一样的,有的指令执行后全部影响6个标志,有的影响部分,不影响的保持原态,也有的一个都不影响,对不影响的指令执行后就不可以使用条件转移指令。控制标志:(1)方向标志DF:用于串操作时设置串指针的修改方向, = 0,串指针增量变化,= 1,串指针减量变化(2)中断允许标志IF:设置是否允许CPU响应外部的可屏蔽中断请求INTR, ,= 0,关中断,= 1,开中断(3)陷阱标志TF:用于设置CPU运行为单条执行指令的方式, = 0,正常执行程序,= 1,单步执行程序第四章 寻址方式与指令系统1、下列指令的源

9、操作数段基址各是什么段寄存器?(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=4

10、500H,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

11、或SI或DI ;EA=BX或SI或DI,物理地址=DS*10H+ BX或SI或DI基址寻址:MOV AL , DISPBX ;EA=BX+DISP,物理地址=DS*10H+ BX+DISPMOV 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,物理地址=D

12、S*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 有哪几种转移寻址方式,段内、段间转移有何不同?掌握转移各种寻址方式的寻址过程。答:与转移地址有关的寻址方式:段内相对寻址、段内间接寻址、段间直接寻址、段间

13、间接寻址。段内相对寻址:段内短转(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

14、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 允许

15、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 A

16、L,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、S

17、TOS、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

18、 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) = 260CH

19、6、掌握汇编语言程序的编程格式-段定义、段说明、段结束、返回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、掌握汇编语言中变量的属性和数据的类型。答:变量的属性包括有: 段地址、偏移地址、类型属

20、性(字节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 ) ? 不能单独作为一个标

21、识符; ( 5 ) 不能把保留字用作标识符,保留字包括助记符、寄存器名等。12、什么是8086汇编语言名字?包括有哪些?有何特点?程序中用到的名字有何特点?答:名字是程序员在编程中按标识符规定命名的,目的是方便编程和读程。名字包括文件名、标题名、段名、过程名和符号常量名等。程序中用到的名字:( 1 ) 段名:在段定义语句中命名取定,定义后的段名可以作为段基值来使用,用来对段寄存器赋值。( 2 ) 过程名:在过程定义语句中定义,指向过程中第一条指令所在的内存单元的地址,即过程的入口地址,有NEAR和FAR之分。( 3 ) 符号常量名:由符号定义语句EQU、=来定义,对符号常量给以赋值。第六章 汇

22、编语言程序设计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

23、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

24、 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

25、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

26、 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,

27、 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;C

28、F=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=-010110

29、1 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=

30、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

31、(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

32、 , 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/p

33、op)第七章 分支结构程序设计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中,目的段地址在存

34、储单元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执行后程序的转移地

35、址是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

36、 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=400

37、0H,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 操

38、作数(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 操作数(4A

39、000H)=0500H,(4A002H)=2B00H 执行后CS=2B00H IP=0500H 8、写出执行段间转移指令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执行时,目的偏移地址在存储单元中,该

40、存储单元的地址在DS: SI中。第八章 循环结构程序设计1、下列串操作指令REP、REPNZ、REPNZ正确使用是怎样的?答: REP LODSB REP STOSB REP MOVB REPZ CMPS REPNZ SCASB 2、已知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=3

41、0500H 关键字=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

42、*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

43、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单元;若无

44、则将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

45、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 PT

46、R 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=58500

47、H (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)

48、= 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 =200

49、00H+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+05

50、00H=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、STOSR

51、EPE:可用于串比较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

52、 答:MOV AX,86H ;AX=0086H MOV BL,17H ;BL=17H CALL XYZ ;JNC L ; CF=0 ,转LINC AH ; CF=1 , AHAH+1 ,AH=1 MOV X , AX ;X=0103H HLT ; XYZ PROC ADD AL,BL ; AL=9DH,CF=0 DAA ;AL=03H, CF=1RET XYZ ENDP 程序实现的功能是完成两个BCD码数求和(86+17),进位加在AH中,和值(103)存入X字单元 2分析下列程序段每条指令的执行结果和程序实现的功能?。 MOV AL,26H MOV DL,48H CALL ABC MOV X

53、 , AL HLT ABC PROC ADD AL,DL DAA RET ABC ENDP 答: MOV AL,26H ;AL=26H MOV DL,48H ;DL=48H CALL ABC ; MOV X , AL ; X=74H HLT ; ABC PROC ADD AL,DL ;AL=6EH,CF=0 DAA ;AL=74H,CF=0 RET ; ABC ENDP 程序实现的功能是完成两个BCD码求和(36+48),和值(74)存入X单元3、掌握汇编语言中的DOS功能调用的方法(单个字符输入输出、串字符输入输出)。例1:键入单个字符,判断是否为回车,是转EXIT,否则转L. MOV AH

54、 , 1 INT 21H CMP AL , 0DH JE EXIT JMP L . EXIT: .例2:;显示单个字符数字6 MOV DL ,36H MOV AH , 2 INT 21H ;显示单个字符A MOV DL ,A MOV AH , 2 INT 21H例3:用2号调用显示字符串MSG DB This message was displayed with DOS function 02H MSGLEN EQU $-MSG ;计算数据个数 MOV CX,MSGLEN;取数据个数做循环次数 MOV SI,OFFSET MSG ;设指针 MOV AH,02H ;NEXT : MOV DL,

55、SI ;取输出字符 INT 21H ;输出显示 INC SI ;指向下一个数据 LOOP NEXT ;循环输出显示例3:用9号调用显示字符串MSG DB This message was displayed with DOS function 02H$ MOV DX,OFFSET MSG ;设指针 MOV AH,09H ; INT 21H ;输出显示字符串输入(0A号功能调用),功能:从键盘接收字符串存入内存的键盘输入缓冲区。调用方法:预先在内存定义一个键盘输入缓冲区。缓冲区的第一个字节为指定缓冲区能接收的字符个数,第二个字节保留以用作由系统自动填写实际输入字符的个数,第三个字节开始存放从键上

56、输入的实际字符ASCII码。例如:定义一个输入不超过50个字符的输入缓冲区。 BUF DB 50 , ? , 50DUP(?)字符的输入缓冲区首地址送DS:DX执行:MOV AH , 0AH ; INT 21H ;用户键入字符串 完成从键盘接收字符串存到指定内存的输入缓冲区,直到输入回车符为止,由系统自动填写实际输入字符的个数存入第二个字节,从第三个字节开始存放从键上输入的字符ASCII码。 若实际输入的字符数少于定义的字节数,则缓冲区内其余字节补零;若实际输入多于定义的字节数,则多余字符丢弃,且响铃。例:利用0AH号功能调用,从键盘输入最多为80个字符的字符串存入以BUF为首址的缓冲区中。

57、DATA SEGMENTBUF DB 80, ?,80 DUP (?)DATA ENDS.START: MOV AX,DATA MOV DS,AX ;缓冲区段地址DS LEA DX,BUF;取缓冲区偏移DX MOV AH,0AH INT 21H : MOV BX,OFFSET BUF;指向输入缓冲区 INC BX ;指向实际输入字符个数单元 MOV CL, BX ;取字符个数做循环次数 MOV CH ,0 INC BX ;指向实际字符存放单元L: MOV AL , BX ;取输入的字符 . ;字符处理 INC BX ;指向下一单元 LOOP L ;循环4、编程从键盘输入一个字符串(长度50),输入后在该字符串中搜索是否有需要查找的关键字,如果有则显示“YY”,否则显示“NN”解: ;定义数据段 DATA SEGMENTBUF DB 50,?,50DUP(?);YDB0D

温馨提示

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

评论

0/150

提交评论