微机原理——汇编语言程序设计.ppt
《微机原理——汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《微机原理——汇编语言程序设计.ppt(289页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、微机原理微机原理-汇编语言程序设计(汇编语言程序设计(1 1)汇编语言程序设计基础知识(汇编语言程序设计基础知识(1 1)本次课学习内容本次课学习内容汇编语言的基本知识和特点。汇编语言的基本知识和特点。汇编语言的程序结构、段定义以及语句的格式。汇编语言的程序结构、段定义以及语句的格式。汇编语言常用伪指令的使用方法。汇编语言常用伪指令的使用方法。微微机机原理原理 汇汇编编语言语言程序程序设计设计基础基础知识知识1(1()本次课学习目标本次课学习目标能正确区分汇编语言和汇编程序的概念能正确区分汇编语言和汇编程序的概念能用图表示汇编程序的建立及汇编过程能用图表示汇编程序的建立及汇编过程了解了解MAS
2、MMASM汇编语言程序设计的规范汇编语言程序设计的规范能正确使用数据定义及存储器分配伪指令(能正确使用数据定义及存储器分配伪指令(DBDB、DWDW、DDDD、DQDQ和和DTDT)、段定义伪指令)、段定义伪指令SEGMENT/ENDSSEGMENT/ENDS、段寻址、段寻址伪指令伪指令ASSUMEASSUME,过程定义伪指令,过程定义伪指令PROC/ENDPPROC/ENDP微微机机原理原理 汇汇编编语言语言程序程序设计设计基础基础知识知识1(1()汇编语言汇编语言是一种面向汇编语言是一种面向CPUCPU指令系统的程序设计语言,它采用指令指令系统的程序设计语言,它采用指令系统的助记符来表示操
3、作码和操作数,用符号地址表示操作数系统的助记符来表示操作码和操作数,用符号地址表示操作数地址,因而易记、易读、易修改,给编程带来很大方便。地址,因而易记、易读、易修改,给编程带来很大方便。用汇编语言编写的程序能够直接利用硬件系统的特性,直接对用汇编语言编写的程序能够直接利用硬件系统的特性,直接对位、字节、字寄存器、存储单元、位、字节、字寄存器、存储单元、I/OI/O端口等进行处理,同时也端口等进行处理,同时也能直接使用能直接使用CPUCPU指令系统和指令系统提供的各种寻址方式编制出指令系统和指令系统提供的各种寻址方式编制出高质量的程序,这种程序不但占用内存空间少,而且执行速度高质量的程序,这种
4、程序不但占用内存空间少,而且执行速度快快 。微微机机原理原理 汇汇编编语言语言程序程序设计设计基础基础知识知识1(1()汇编语言和高级语言的比较汇编语言和高级语言的比较语言语言汇编语言汇编语言高级语言高级语言代码效率代码效率高高较低较低源程序可读性源程序可读性较差较差好好对硬件的依附性对硬件的依附性高高低低程序员硬件知识程序员硬件知识高高较低较低应用范围应用范围较广较广广泛广泛微微机机原理原理 汇汇编编语言语言程序程序设计设计基础基础知识知识1(1()汇编程序汇编程序汇编是把汇编语言程序翻译成机器语言描述的目汇编是把汇编语言程序翻译成机器语言描述的目标程序的过程。标程序的过程。汇编程序是完成汇
5、编任务的程序汇编程序是完成汇编任务的程序。基本汇编基本汇编ASMASM(AssemblerAssembler)和宏汇编)和宏汇编MASMMASM(MacroAssemblerMacroAssembler)两种。)两种。汇编程序以汇编语言源程序文件作为输入,并由汇编程序以汇编语言源程序文件作为输入,并由它产生两种输出文件:目标程序文件和源程序列它产生两种输出文件:目标程序文件和源程序列表文件。表文件。目标程序文件经连接定位后由计算机执行;目标程序文件经连接定位后由计算机执行;源程序列表文件将列出源程序、目标程序的源程序列表文件将列出源程序、目标程序的机器语言代码及符号表。机器语言代码及符号表。微
6、微机机原理原理 汇汇编编语言语言程序程序设计设计基础基础知识知识1(1()汇编语言程序的建立及汇编过程汇编语言程序的建立及汇编过程编辑程序编辑程序汇编程序汇编程序PROGR1.ASM文件文件PROGR1.OBJ文件文件连接连接程序程序编辑程序编辑程序汇编程序汇编程序PROGR2.ASM文件文件PROGR2.OBJ文件文件库文件库文件EXE文件文件ASMASMASMASMLINKLINK微微机机原理原理 汇汇编编语言语言程序程序设计设计基础基础知识知识1(1()一个简单的汇编程序一个简单的汇编程序在数据段定义首地址为在数据段定义首地址为A A的的1010个字符,将这个字符,将这1010个字符以相
7、反个字符以相反次序传送到附加段首地址为次序传送到附加段首地址为B B的内存单元中。的内存单元中。LEA SILEA SILEA SILEA SI,A A A A LEA DI LEA DI LEA DI LEA DI,B B B B ADD DI ADD DI ADD DI ADD DI,9 9 9 9 MOV CX MOV CX MOV CX MOV CX,10101010 MOVE MOVE MOVE MOVE:CLDCLDCLDCLD LODSB LODSB LODSB LODSB STD STD STD STD STOSB STOSB STOSB STOSB LOOP MOVE LOO
8、P MOVE LOOP MOVE LOOP MOVE MOV AH MOV AH MOV AH MOV AH,4CH4CH4CH4CH INT 21H INT 21H INT 21H INT 21HSTART ENDPSTART ENDPSTART ENDPSTART ENDPCSEG ENDSCSEG ENDSCSEG ENDSCSEG ENDS;-;-END START END START END START END STARTTITLETRANSTITLETRANSDSEGDSEGSEGMENTSEGMENTAADBDB12345678901234567890DSEGDSEG ENDSE
9、NDS;-;-ESEGESEGSEGMENTSEGMENTBBDBDB10DUP(?)10DUP(?)ESEGESEG ENDSENDS;-;-CSEGCSEGSEGMENTSEGMENTASSUMEASSUMECS:CSEG,DS:DSEGCS:CSEG,DS:DSEG,ES:ESEGES:ESEGSTARTPROCSTARTPROC FARFARMOVAXMOVAX,DSEGDSEGMOVDSMOVDS,AXAXMOVAXMOVAX,ESEGESEGMOVESMOVES,AXAX;-;-指令语句:以指令语句:以80868086指令系指令系统的助记符指令为基础构统的助记符指令为基础构成。经汇
10、编后产生相对应成。经汇编后产生相对应的机器代码而构成目标程的机器代码而构成目标程序,供机器执行序,供机器执行 伪指令语句:为汇编程序提供伪指令语句:为汇编程序提供一些必要的控制信息的、由伪一些必要的控制信息的、由伪指令构成的管理性语句,其对指令构成的管理性语句,其对应的伪操作是在汇编过程中完应的伪操作是在汇编过程中完成的,汇编后不产生机器代码。成的,汇编后不产生机器代码。微微机机原理原理 汇汇编编语言语言程序程序设计设计基础基础知识知识1(1()汇编语言的语句格式汇编语言的语句格式汇编语言源程序中的每个语句可以由汇编语言源程序中的每个语句可以由4 4项组成,项组成,格式如下格式如下 名字项名字
11、项 操作项操作项 操作数项操作数项 ;注释项;注释项 AGAIN:MOV AL,SI ;AGAIN:MOV AL,SI ;取加数取加数 A DB ABCDEFGA DB ABCDEFG微微机机原理原理 汇汇编编语言语言程序程序设计设计基础基础知识知识1(1()名字项名字项源程序中用下列字符表示名字:源程序中用下列字符表示名字:字母:字母:A AZ Z或或a az z;数字:数字:0 09 9;专用字符号:?、专用字符号:?、$;名字项可以是标号或变量。名字项可以是标号或变量。微微机机原理原理 汇汇编编语言语言程序程序设计设计基础基础知识知识1(1()标号标号在代码段定义,后面跟冒号,表示处理器
12、指令在主存在代码段定义,后面跟冒号,表示处理器指令在主存中的逻辑地址分支、循环等程序的目的地址中的逻辑地址分支、循环等程序的目的地址标号有三种属性:段、偏移及类型。标号有三种属性:段、偏移及类型。段属性:定义标号的段起始地址,在段属性:定义标号的段起始地址,在CSCS寄存器中。寄存器中。偏移属性:偏移属性:1616位无符号数。位无符号数。类型属性:用来指出该标号是在本段内引用还是在类型属性:用来指出该标号是在本段内引用还是在其他段内引用的。其他段内引用的。例:例:AGAINAGAIN:MOV AL,SI:MOV AL,SI微微机机原理原理 汇汇编编语言语言程序程序设计设计基础基础知识知识1(1
13、()变量变量变量在除代码以外的其他段中定义,后面不跟冒号。变量经常变量在除代码以外的其他段中定义,后面不跟冒号。变量经常在操作数字段出现。它也有段、偏移及类型三种属性。在操作数字段出现。它也有段、偏移及类型三种属性。段属性定义变量的段起始地址,此值必须在一个段寄存器段属性定义变量的段起始地址,此值必须在一个段寄存器中。中。偏移属性变量的偏移地址是偏移属性变量的偏移地址是1616位无符号数,它代表从段的位无符号数,它代表从段的起始地址到定义变量的位置之间的字节数。在当前段内给出起始地址到定义变量的位置之间的字节数。在当前段内给出变量的偏移值等于当前地址计数器的值,当前地址计数器的变量的偏移值等于
14、当前地址计数器的值,当前地址计数器的值可以用值可以用$来表示。来表示。类型属性变量的类型属性定义该变量所保留的字节数。类型属性变量的类型属性定义该变量所保留的字节数。例:例:A A DB ABCDEFG DB ABCDEFG微微机机原理原理 汇汇编编语言语言程序程序设计设计基础基础知识知识1(1()操作项可以是指令、伪操作或宏指令的助记符。操作项可以是指令、伪操作或宏指令的助记符。操作数项由一个或多个表达式组成,多个操作数项之操作数项由一个或多个表达式组成,多个操作数项之间一般用逗号分开。间一般用逗号分开。注释项用来说明一段程序或一条或几条指令的功能,注释项用来说明一段程序或一条或几条指令的功
15、能,它是可有可无的。它是可有可无的。微微机机原理原理 汇汇编编语言语言程序程序设计设计基础基础知识知识1(1()分段结构分段结构汇编语言源程序的程序基本结构是汇编语言源程序的程序基本结构是段段,一个汇编语言,一个汇编语言源程序由若干个源程序由若干个代码段代码段、数据段数据段、附加段附加段和和堆栈段堆栈段组组成。段之间的顺序可以随意安排,通常数据段在前,成。段之间的顺序可以随意安排,通常数据段在前,代码段在后。任何可执行汇编语言程序代码段在后。任何可执行汇编语言程序至少要有一个至少要有一个代码段代码段,通常还可能有数据段和堆栈段。每个段都有,通常还可能有数据段和堆栈段。每个段都有段首指令段首指令
16、和和段结束指令段结束指令,段的内容介于这两条指令之,段的内容介于这两条指令之间。间。微微机机原理原理 汇汇编编语言语言程序程序设计设计基础基础知识知识1(1()通常,一个汇编源程序一般应该由通常,一个汇编源程序一般应该由3 3个逻辑段组成,个逻辑段组成,即数据段、堆栈段和代码段。每个逻辑段以即数据段、堆栈段和代码段。每个逻辑段以SEGMENTSEGMENT语句开始,以语句开始,以ENDSENDS语句结束。整个源程序以语句结束。整个源程序以ENDEND语句语句结束。结束。数据段用来在内存中建立一个适当容量的工作区,数据段用来在内存中建立一个适当容量的工作区,以存放常数、变量等操作数据。以存放常数
17、、变量等操作数据。堆栈段用来在内存中建立一个适当的堆栈区,以便堆栈段用来在内存中建立一个适当的堆栈区,以便在中断、子程序调用时使用。在中断、子程序调用时使用。代码段包括了许多以符号表示的指令,其内容就是代码段包括了许多以符号表示的指令,其内容就是程序要执行的指令。程序要执行的指令。微微机机原理原理 汇汇编编语言语言程序程序设计设计基础基础知识知识1(1()段定义伪操作段定义伪操作SEGMENT/ENDSSEGMENT/ENDS格式如下:格式如下:segment-name SEGMENTsegment-name SEGMENT segment-name ENDS segment-name END
18、S其中删节号部分,对于其中删节号部分,对于DSDS、ESES和和SSSS来说,一般是存贮来说,一般是存贮单元的定义、分配等伪操作;对于代码段则是指令单元的定义、分配等伪操作;对于代码段则是指令及伪操作。及伪操作。微微机机原理原理 汇汇编编语言语言程序程序设计设计基础基础知识知识1(1()ASSUMEASSUME伪操作可用来明确段和段寄存器的关系伪操作可用来明确段和段寄存器的关系格式:格式:ASSUME ASSUME 段寄存器名段寄存器名:段名段名,段寄存器名段寄存器名:段名段名,其中段寄存器名必须是其中段寄存器名必须是CSCS、DSDS、ESES和和SSSS中的一个,而中的一个,而段名则必须是
19、由段名则必须是由SEGMENTSEGMENT定义的段中的段名。定义的段中的段名。微微机机原理原理 汇汇编编语言语言程序程序设计设计基础基础知识知识1(1()指令指令 movmov blbl,xdxd movmov xexe,blbl被汇编为被汇编为 movmov blbl,byte ptr0000hbyte ptr0000h movmov byte byte ptrptr es:0000h es:0000h,blbl其中,在变量其中,在变量xexe前增加了段超越前缀前增加了段超越前缀ESES:,这就是:,这就是ASSUMEASSUME的作用,也仅此而已。的作用,也仅此而已。微微机机原理原理 汇
20、汇编编语言语言程序程序设计设计基础基础知识知识1(1()设置段寄存器的初值设置段寄存器的初值CSCS与与IPIPCSCS与与IPIP的初值不能在程序中显示设置,由系统自动的初值不能在程序中显示设置,由系统自动设置为设置为ENDEND后指定的起始地址。后指定的起始地址。DSDS和和ESES设置方法如下:设置方法如下:MOV AXMOV AX,SEG NAME SEG NAME MOV DSMOV DS,AXAX微微机机原理原理 汇汇编编语言语言程序程序设计设计基础基础知识知识1(1()SSSS与与SPSP在程序中显示设置,类似于在程序中显示设置,类似于DSDS,例如:,例如:MOV AXMOV
21、AX,SSEGSSEGMOV SSMOV SS,AXAXMOV SPMOV SP,ST_TOPST_TOP若堆栈段定义时给出了参数若堆栈段定义时给出了参数STACKSTACK,则连接器,则连接器LINKLINK自动自动将将SSSS:SPSP指向栈底;指向栈底;若未定义堆栈段,则由系统指定堆栈,若未定义堆栈段,则由系统指定堆栈,SSSS:SPSP也由系也由系统自动设置。统自动设置。微微机机原理原理 汇汇编编语言语言程序程序设计设计基础基础知识知识1(1()程序开始和结束操作程序开始和结束操作开始开始:在程序的开始可以用在程序的开始可以用NAMENAME或或TITLETITLE为模块取名字为模块取
22、名字NAME module-nameNAME module-name 汇编程序将给出的汇编程序将给出的module-namemodule-name作为模块的名字。作为模块的名字。如果没有如果没有NAMENAME伪操作,则也可以使用伪操作,则也可以使用TITLETITLE伪操作,其格式为:伪操作,其格式为:TITLE textTITLE textTITLETITLE伪操作可指定每一页上打印的标题。同时,如果程序中没伪操作可指定每一页上打印的标题。同时,如果程序中没有有NAMENAME伪操作,则汇编程序将用伪操作,则汇编程序将用texttext中的前中的前6 6个字符作为模块名。个字符作为模块名。
23、如果程序中既没有如果程序中既没有NAMENAME伪操作也没有伪操作也没有TITLETITLE伪操作,则将用源文伪操作,则将用源文件名作为模块名。所以件名作为模块名。所以NAMENAME及及TITLETITLE伪操作并不是必要的,但一伪操作并不是必要的,但一般经常使用般经常使用TITLETITLE,以便在列表文件中能打印出标题来。,以便在列表文件中能打印出标题来。微微机机原理原理 汇汇编编语言语言程序程序设计设计基础基础知识知识1(1()结束结束END labelEND label其中标号指示程序开始执行的地址。如果多个程序模其中标号指示程序开始执行的地址。如果多个程序模块相连接,则只有主程序要
24、使用标号,其它子程序模块相连接,则只有主程序要使用标号,其它子程序模块则只用块则只用ENDEND而不必指定标号。汇编程序将在遇到而不必指定标号。汇编程序将在遇到ENDEND时结束汇编,而程序将从时结束汇编,而程序将从labellabel处开始执行。处开始执行。微微机机原理原理 汇汇编编语言语言程序程序设计设计基础基础知识知识1(1()过程定义操作过程定义操作过程名过程名 PROC NEAR/FARPROC NEAR/FAR RET RET过程名过程名 ENDPENDP过程属性的定义原则:过程属性的定义原则:调用程序和过程在同一个代码段内则使用调用程序和过程在同一个代码段内则使用NEARNEAR
25、属性属性调用程序和过程不在同一代码段内则使用调用程序和过程不在同一代码段内则使用FARFAR属性属性微微机机原理原理 汇汇编编语言语言程序程序设计设计基础基础知识知识1(1()微机原理微机原理-汇编语言程序设计(汇编语言程序设计(2 2)伪指令、表达式及运算符伪指令、表达式及运算符主要内容主要内容伪指令伪指令数据定义伪指令数据定义伪指令DBDB、DWDW、DDDD、DQDQ、DTDT符号定义伪指令符号定义伪指令EQUEQU和和=对准伪操作对准伪操作EVENEVEN和和ORGORG程序计数器程序计数器$标号定义伪指令标号定义伪指令LABELLABEL汇编语言的表达式和运算符汇编语言的表达式和运算
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 汇编语言 程序设计
限制150内