收藏 分享(赏)

华南理工大学汇编原理课件03-2.ppt

上传人:jinchen 文档编号:5431110 上传时间:2019-03-02 格式:PPT 页数:82 大小:555KB
下载 相关 举报
华南理工大学汇编原理课件03-2.ppt_第1页
第1页 / 共82页
华南理工大学汇编原理课件03-2.ppt_第2页
第2页 / 共82页
华南理工大学汇编原理课件03-2.ppt_第3页
第3页 / 共82页
华南理工大学汇编原理课件03-2.ppt_第4页
第4页 / 共82页
华南理工大学汇编原理课件03-2.ppt_第5页
第5页 / 共82页
点击查看更多>>
资源描述

1、Part B,Fundamentals of Assembly Language,Chapter 3,Elements of Assembly Language汇编语言的要素,Textbook: 4 Requirement for Coding in Assembly Language,Contents,Statement (语句) Identifiers (标识符) Reserved words (保留字) The use of comment (注释) Operand (操作数) Data Definition (数据定义) Expression (表达式),Contents,Direct

2、ive (伪指令) 1. Segment directive 2. PROC directive3. Assume directive 4. End directive 5. Simplified segment directives 6. EQU equivalence directive 7. ORG directive Addressing (寻址),A Complete Example一个完整的实例,3.2,Page:,directives,directives,Stack segment,data segment,code segment,FLDD dw 215 reserves a

3、 single word of storage, associating the symbolic name FLDF with the address 00000000 since the first data item. 给存储单元取符号名,通过引用该符号名访问对应的存储单元,ends the entire program,Addressing Mode - 8086/8088CPU与数据有关的 基本寻址方式,3.3,注意:操作数存放的位置、有效地址的计算,操作数通常保存的位置,CPU的寄存器中 内存单元中 I/O接口寄存器中 指令字节中,Contents,Directive (伪指令)

4、1. Segment directive 2. PROC directive3. Assume directive 4. End directive 5. Simplified segment directives 6. EQU equivalence directive 7. ORG directive Addressing (寻址),Immediate addressing (立即数寻址),An immediate operand contains a constant value or an expression. For many instructions with 2 operand

5、s, the first operand may be a register or memory location, and the second may be an immediate constant. The destination field defines the length of the data. 操作数紧跟在指令操作码后面位于指令源操作数(第二操作数)位置,与操作码一起存放在存储器的代码段中。 Note: 只能用于源操作数,不能用于目的操作数,Instruction: MOV AL,05H“after” value : (AL)=05H,MOV AX,3064H “after

6、” value : (AX)=3064H,Immediate addressing,Examples,Immediate addressing,MOV CX, 2001H ;200lH-CX The instruction moves the immediate constant 2001H to CX. The use of an immediate operand provides faster processing than defining a numeric constant in the data segment and referencing it in an operand.,

7、Examples,立即数寻址方式,Immediate addressing,The length of an immediate constant cannot exceed the length defined by the first operand.MOV CL, 0245H ;error The immediate operand is 2 bytes, but CL is only one byte.,Examples,Register addressing (寄存器寻址),A register provides the name of any of the 8-, 16-, or

8、32-bit registers. Depending on the instruction, the register may appear in the 1st operand, the 2nd operand or both. Because processing data between registers involves no reference to memory, it is the fastest type of operation.MOV CX, 2001H ;200lH-CX,Examples,Register addressing,“before” value: (AX

9、)3064 (SS)1234 MOV SS,AX “after” value : (SS)3064H (AX)=3064H,Examples,Direct Memory Addressing (直接寻址),One of the operands references a memory location and the other operand references a register.DS is the default segment register for addressing data in memory, as DS:offset.操作数存放在存储器的内存单元中, 指令中直接给出操

10、作数在存储器约定段或前缀段中存放的偏移地址。,Direct Memory Addressing,MOV BX, 2100H ;DS:2100H-BX Move memory to register (word),直接寻址方式,Examples,Direct addressing,DS is the default segment register for addressing data in memory, as DS:offset.如果指令中无特殊说明,直接寻址的约定段段寄存器为数据段DS。操作数在存储器中的物理地址计算公式,PA = DS *16 + 位移量,MOV AX,3100H,Ex

11、amples,“before” value: (DS)=6000H , (63100H)=3050H,“after” value?,Direct addressing,直接寻址方式,“before”value: (DS)=6000H , (63100H)=3050H “after”value: (AX)=3050H,Examples,MOV AX,3100H,Direct addressing,The segment override prefix (段前缀),The processor automatically selects the appropriate segment when ad

12、dressing CS:IP for fetching an instruction, DS:offset for accessing data in memory, and SS:SP for accessing the stack.When you have to handle data that is subject to another segment register, such as ES, you must identify the appropriate segment register.访问存放在默认段以外的段中数据时,应在指令中指定段前缀,Direct addressing

13、,MOV BX,ES:100H,PA = ES *10H + 100H,Examples,Direct addressing,用符号地址代替数值地址:MOV AX,VALUE 或 MOV AX,VALUE VALUE:有效操作数单元的符号地址。 若VALUE在附加段中, 则应指定段跨越。 MOV AX,ES:VALUE 或MOV AX,ES:VALUE,Examples,Review,内存中数据的表达,段地址(SA) 和偏移地址 (EA): 指令要处理的数据在内存中,汇编指令中可用X 的格式给出EA, SA在某个段寄存器中。 1) 存放段地址的寄存器可以是默认的在ds中. 比如 2) 存放段地

14、址的寄存器可以是默认的在ss中. 比如 3) 存放段地址的寄存器也可以是显性给出的,比如:,mov ax, 0 mov ax, di rnov ax, bx+8 mov ax,bx+si mov ex, bx+si+8,mov ax, bp mov ax, bp+8 mov ax, bp+si mov x, bp+si+8,Mov ax, ds:bp Mov ax, es:bx,Register Indirect addressing (寄存器间接寻址),Segment:offset addresing The register used for this purpose are base r

15、egisters (BX and BP) and index registers (DI and SI), coded within square brackets, shich indicate a reference to memory.操作数存放在存储器的内存单元里,偏移地址由指令指定的寄存器BX,BP,SI或DI给出。,BX:基址寄存器 BP:基址指针寄存器 SI :源地址寄存器 DI :目的地址寄存器,注意:不是所有 寄存器都可以,Register Indirect addressing (寄存器间接寻址),Phisycal Address,BX:基址寄存器 BP:基址指针寄存器 S

16、I :源地址寄存器 DI :目的地址寄存器,8086的14个16位寄存器,Register indirect addressing,Examples,MOV CX, SI ;(DS*16+SI)-CX An indirect address such as SI tells the assembler that the memory address to use will be in SI when the program subsequently execute.,Register indirect addressing,Register indirect addressing,(1) BX

17、, SI, and DI are associated with DS as DS:BX, DS:DI, and DS:SI, for processing data in the data segment. 选择SI、DI、BX作为间接寻址,操作数一般在现行数据段区域中,DS为段地址。 PA=16 d (DS)+(BX) PA=16 d (DS)+(SI) PA=16 d (DS)+(DI),MOV BX,DI (DS)=6000H (DI)=2000HPA=62000H (62000H)=50A0H(BX)=50A0H,寄存器间接寻址方式 MOV BX,DI,Examples,Regist

18、er indirect addressing,(2) BP is associated with SS as SS:BP, for handling data in the stack.若选择BP寄存器作为间接寻址操作数在堆栈段区域中,用SS寄存器的内容作为段地址。PA=16d (SS)+(BP),Before value:( SS )=1000H , ( BP )=3000H , ( AX )=1234H After value?,寄存器间接寻址方式 MOV BP, AX,Examples,MOV BP, AX,Before:( SS )=1000H , ( BP )=3000H , ( A

19、X )=1234H After: PA = 13000H ( 13000H )=1234H,寄存器间接寻址方式 MOV BP, AX,Examples,MOV BP, AX,Register indirect addressing,When the 1st operand contains an indirect address, the 2nd operand references a register or immediate value;When the 2nd operand contains an indirect address, the 1st operand reference

20、s a register;,Register indirect addressing,Usage of the segment override prefix (段前缀) To handle data in another segment register, you must identify the appropriate segment register. SI, DI, BX, BP eg.MOV ES:DI, AXMOV DX, DS:BP,Register relative addressing (寄存器相对寻址),Base displacement addressing, Inde

21、x Addressing (变址寻址) This addressing mode uses base registers (BX and BP) and index registers (DI and SI), but combined with a displacement (a number or offset value) to form an effective address.操作数存放在存储器的单元中, 操作数的偏移地址(有效地址)是一个基址或变址寄存器的内容和指令中指定的8位或16位位移量(displacement)之和。 即由指令指定的寄存器BX,BP,SIDI和指令中给定的位

22、移量相加。,Register relative addressing,PA:,Register relative addressing,MOV AX, COUNT BPUsage of segment override prefix (段前缀) MOV DL, ES:STRINGSI,Examples,Register relative addressing,MOV AX, COUNT BP 或 MOV AX, COUNT+BP 或 MOV AX, COUNT+BP,MOV BX, SI+100HBefore value: (DS) = 1000H, (SI) = 2345H, 12445H

23、= 2715H,After value: BX=?,Examples,1) Source operand: EA = (SI)+100H = 2345H+100H = 2445H;PA = (DS)*16+EA = 1000H*16+2445H = 12445H2) BX=2715H,Answer,MOV BX, SI+100H Before:(DS)=1000H,(SI)=2345H,Register relative addressing,例如用于表格处理。 表格首地址COUNT 修改基址或变址寄存器来取得表格中的值。例:某数据表的首地址为COUNT,欲读取表中第10个数据,存放到(AL)

24、中。 第10个数据的有效地址: EA= COUNT + 9MOV SI , 09HMOV AL , SI+COUNT,Examples,Base indexed addressing (基址加变址寻址),This addressing mode combines a base register (BX or BP ) with an index register (DI or SI) to form an effective address操作数存放在存储器单元中, 操作数的偏移地址由指令指定的基址寄存器(BX,BP)和变址寄存器(SI,DI)内容相加,8086的14个16位寄存器,Base

25、indexed addressing,PA:,Base indexed addressing,MOV AX, BXSI ;(DS*16+BX+SI) - AXMOV AX, BX+SIsegment override prefix (段前缀) can be used to handle the data in another segment. For example: MOV AX, ES:BXSI,Examples,MOV AX, BXSI or MOV AX, BX+SIBefore value:(DS)=3200H,(BX)=0456H,(SI) =1094H(334EAH)=4567H

26、After value:EA=14EAHPA=334EAH(AX)=4567H,Base indexed addressing 基址加变址寻址方式,Examples,Relatively base indexed addressing (相对基址加变址寻址),Base-index with displacement addressingThis addressing mode, a variation on base-index, combines a base register, an index register, and a displacement to form an effecti

27、ve address.操作数存放往存储器的单元中, 操作数的偏移地址由指令指定的基址寄存器(BX,BP)和变址寄存器(SI,DI)以及指令中给定的位移量相加。,Relatively base indexed addressing,PA:,MOV AX,BX+SI+06H ; source operand: Relatively base indexed addressing ; AX DS:BX+SI+06H,Examples,Review,操作数通常保存的位置,CPU的寄存器中 内存单元中 I/O接口寄存器中 指令字节中,Review,Immediate addressing (立即数寻址)

28、 Register addressing (寄存器寻址) Direct Memory Addressing (直接寻址) Register Indirect addressing (寄存器间接寻址) Register relative addressing (寄存器相对寻址) Base indexed addressing (基址加变址寻址) Relatively base indexed addressing (相对基址变址寻址)The segment override prefix (段前缀),注意操作数存放的位置、 有效地址的计算,内存中数据的表达,段地址(SA) 和偏移地址 (EA):

29、 指令要处理的数据在内存中,汇编指令中可用X 的格式给出EA, SA在某个段寄存器中。 1) 存放段地址的寄存器可以是默认的在ds中. 比如 2) 存放段地址的寄存器可以是默认的在ss中. 比如 3) 存放段地址的寄存器也可以是显性给出的,比如:,mov ax, 0 mov ax, di rnov ax, bx+8 mov ax,bx+si mov ex, bx+si+8,mov ax, bp mov ax, bp+8 mov ax, bp+si mov x, bp+si+8,Mov ax, ds:bp Mov ax, es:bx,请指出指令源、目的操作数的寻址方式,(1) MOV CX, 2

30、001H(2) MOV AX,3100H,Examples,寄存器寻址,立即数寻址,直接寻址,请指出指令源、目的操作数的寻址方式,(3) MOV BX,ES:100H(4) MOV CX, SI,Examples,直接寻址,寄存器间接寻址,请指出指令源、目的操作数的寻址方式,(5) MOV BX, SI+100H(6) MOV AX,BXSI,Examples,寄存器相对寻址,基址加变址寻址,请指出指令源、目的操作数的寻址方式,(7) MOV AX, BX+SI+06H,Examples,相对基址加变址寻址,For the following statements, (a) identify

31、the error, and (b) explain one way to correct them. 下列各条指令是否有错, 如有,请指出并改正.,(1) MOV 1000H, AX(2) MOV 100, 23H(3) ADD AX, BXBP6,Questions,(1) MOV 1000H, AXwrong. the first operand may be a register or memory location. (立即数不允许做目的操作数)MOV AX,1000H,Answer,(2) MOV 100, 23Hwrong. PTR should be used to appoi

32、nt the type of the variable. (指令在语法上对。把一个立即数送入一个存储单元;但是第一操作数前应加上BYTE PTR 或WORD PTR 说明,否则汇编程序会因不能确定操作数长度而指示出错)MOV BYTE PTR 100,23H,Answer,(3) ADD AX, BXBP6wrong. Base indexed addressing mode a base register (BX or BP ) with an index register (DI or SI) to form an effective address (不能同时使用两个基址寄存器BX、BP

33、 进行间接寻址) ADD AX,BXDI6,Answer,请指出指令源、目的操作数的寻址方式,(1) MOV SI, 2100H(2) SBB DISPBX, 7(3) AND DI, AX,Question,请指出指令源、目的操作数的寻址方式,(4) OR AX, 609EH(5) MOV BXDI30H, CX(6) PUSH ES:BP,Question,(1) MOV SI, 2100H 源:立即数寻址;目的:寄存器寻址(2) SBB DISPBX, 7 源:立即数寻址;目的:寄存器相对寻址(3) AND DI, AX 源:寄存器寻址;目的:寄存器间接寻址,Answer,(4) OR

34、AX, 609EH 源:直接寻址; 目的:寄存器寻址(5) MOV BXDI30H, CX 源:寄存器寻址;目的:相对基址变址寻址(6) PUSH ES:BP 源:带段前缀的寄存器间接寻址,Answer,实验内容3:用MOV指令熟悉寻址方式,立即数寻址 寄存器寻址 直接寻址 寄存器间接寻址 寄存器相对寻址 基址加变址寻址 相对基址加变址寻址,注意操作数存放的位置、 有效地址的计算,实验内容3:用MOV指令熟悉寻址方式,立即数寻址 Mov dl, 20h 寄存器寻址 Mov al, bl 直接寻址 Mov al, 1234 Mov ax, 1234 寄存器间接寻址 Mov al,bx 寄存器相对

35、寻址 Mov al, bx+2 基址加变址寻址 Mov al,bxsi 相对基址加变址寻址 Mov al,bxsi+2,直接寻址,Examples,Mov al, 1234h Mov ax, 1234h,How to Assemble, Link, and Run a Program 程序的汇编、链接和运行,3.4,汇编语言开发涉及的应用软件,Editor (文本编辑器)Assembler (汇编程序)Linker (连接程序)Debugger (调试程序),Editor (文本编辑器),用于编写源程序 常见的文本编辑软件有很多,如 MS-DOS的EDIT全屏幕编辑器 Windows的Note

36、pad记事本 程序开发系统中的程序编辑器,例如Turbo C编辑器可以用任何一个文本编辑器编写汇编源程序,Assembler (汇编程序),汇编程序将汇编语言源程序翻译(称为“汇编”)成机器代码目标模块本课程采用微软的MASM,Linker (连接程序),连接程序将汇编后的目标模块转换为可执行程序 每个程序开发环境都有连接程序 连接程序的文件名通常是:LINK.EXE,连接的作用,1、当源程序很大,可以将它分为多个源程序来编译,每个源程序编译成目标文件后,用连接程序将其连在一起。 2、程序中调用了某个库文件中的子程序,需要将这个库文件和该程序生成的目标文件连接到一起,生成一个可执行文件。 3、一个源程序编译后,得到了存有机器码的目标文件,目标文件中有的内容还不能直接用来生成可执行文件,连接程序将这些内容处理为最终可执行信息。,Debugger (调试程序),调试程序进行程序排错、分析等DOS下有DEBUG程序,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 中等教育 > 职业教育

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报