汇编语言程序设计实用教案

上传人:辰*** 文档编号:89124839 上传时间:2022-05-12 格式:PPTX 页数:186 大小:1.48MB
收藏 版权申诉 举报 下载
汇编语言程序设计实用教案_第1页
第1页 / 共186页
汇编语言程序设计实用教案_第2页
第2页 / 共186页
汇编语言程序设计实用教案_第3页
第3页 / 共186页
资源描述:

《汇编语言程序设计实用教案》由会员分享,可在线阅读,更多相关《汇编语言程序设计实用教案(186页珍藏版)》请在装配图网上搜索。

1、3.2 3.2 语句(yj)(yj)格式 语句格式语句格式: :名字名字 操作符操作符 操作数操作数1 1,操作数,操作数2 2 ;注释;注释 1 1名字名字 一种符号地址一种符号地址 组成:组成:A AZ Z,a az z,0 09 9,专用符号?、,专用符号?、. .、 、_ _、$ $ 限制:第一个字符不能为数字限制:第一个字符不能为数字 “.”“.”必须为第一个字符必须为第一个字符 前前3131个字符有效个字符有效 不能为关键字不能为关键字 类型:类型: 标号:指令符号地址标号:指令符号地址 变量:数据符号地址变量:数据符号地址 2 2操作符操作符 组成:组成:CPUCPU指令,伪指令

2、,宏指令指令,伪指令,宏指令 3 3操作数操作数 指定参与操作的数据,或数据所在单元地址指定参与操作的数据,或数据所在单元地址 4 4注释注释 说明程序、指令功能说明程序、指令功能(gngnng)(gngnng),增加程序可读性,增加程序可读性 第1页/共185页第一页,共186页。3.3 3.3 伪指令 功能:指示汇编程序完成功能:指示汇编程序完成(wn chng)规定的操作,规定的操作,如选择处理器,定义数据,分配存储器等。如选择处理器,定义数据,分配存储器等。第2页/共185页第二页,共186页。一、程序开始(kish)与结束1程序开始:可以用name,title给程序起名。格式:NAM

3、E module_name汇编程序以模块名作为模块的名字,若未使用NAME,则可用TITLE给程序指定标题格式:TITLE text文本在每一页上打印出来,若没有NAME,则text的前6个字符为模块名,text最多为60个字符。若未使用NAME、TITLE,则源文件名为模块名。2程序结束:表示原程序结束,不可缺,源程序的最后一条语句。格式:END label标号指示程序开始执行的起始地址,多个模块连接,主程序用标号,其他程序不用,主程序缺省值为代码段第一条指令。3MASM 6.0 定义的入口(r ku)点、出口点入口(r ku)点:.STARUP ;产生设置DS、SS、SP代码,此时,END

4、不用标号。出口点: .EXIT ;返回操作系统,常用值为0。例: .STARUP .EXIT 0 END第3页/共185页第三页,共186页。二、处理器选择(xunz) (xunz) 功 能 : 选 择 对 应功 能 : 选 择 对 应 ( d u y n g )( d u y n g ) 的 指 令 集 , 也 即 对 应的 指 令 集 , 也 即 对 应(duyng)(duyng)的汇编执行语句集的汇编执行语句集 放在程序最前面放在程序最前面 缺省值为缺省值为.8086.8086 此类指令主要有:此类指令主要有: .8086 .8086 选择选择80868086指令系统指令系统 .286

5、.286 选择选择8028680286指令系统指令系统 .286P .286P 选择保护方式下选择保护方式下8028680286指令系统指令系统 .386 .386 选择选择8038680386指令系统指令系统 .386P .386P 选择保护方式下选择保护方式下8038680386指令系统指令系统 .486 .486 选择选择8048680486指令系统指令系统 .486P .486P 选择保护方式下选择保护方式下8048680486指令系统指令系统 .586 .586 选择选择PentiumPentium指令系统指令系统 .586P .586P 选择保护方式下选择保护方式下PentiumP

6、entium指令系统指令系统第4页/共185页第四页,共186页。吉林大学远程教育(yun chn jio y)学院微机原理微机原理(yunl)(yunl)及汇及汇编语言编语言 主讲人: 赵宏伟 教授 总学时: 80 80 吉林大学计算机科学与技术(jsh)(jsh)学院 第 二十 讲 第5页/共185页第五页,共186页。三、段定义(dngy) (dngy) 段定义:确定代码组织与数据存储的方式 2 2 种 : 完 整 的 段 定 义 和 简 化 的 段 定 义(MASM 5.0MASM 5.0以上(yshng)(yshng)) 完整的段定义包括: (1 1)segmentsegment和e

7、ndend段定义 (2 2)ASSUMEASSUME段分配 (3 3)GROUP GROUP 段组定义 第6页/共185页第六页,共186页。segment和end段定义(dngy) (1) 格式:格式: 段名段名 segment segment 定位类型组合类型定位类型组合类型 字长类型字长类型类别类别 段名段名 end end 功能:定义段名、段属性。功能:定义段名、段属性。 一般情况下,选项可以不用,用默认值,但若需一般情况下,选项可以不用,用默认值,但若需连接本程序和其他程序,就要使用这些连接本程序和其他程序,就要使用这些(zhxi)(zhxi)说明。说明。 段名是段的标识符,指明段的

8、基址,由程序员指段名是段的标识符,指明段的基址,由程序员指定。定。 第7页/共185页第七页,共186页。segment和end段定义(dngy) (2)定位类型定位类型定位类型:指定段起始边界,定位类型:指定段起始边界,5 5种种BYTE: BYTE: 任意位置任意位置WORD: WORD: 偶地址偶地址(dzh)(dzh),地址,地址(dzh)(dzh)低低1 1位为位为0 0DWORD:4DWORD:4的倍数地址的倍数地址(dzh)(dzh),地址,地址(dzh)(dzh)低低2 2位为位为0 0PARA: 16PARA: 16的倍数地址的倍数地址(dzh)(dzh),地址,地址(dzh

9、)(dzh)低低4 4位为位为0 0PAGE: 256PAGE: 256的倍数地址的倍数地址(dzh)(dzh),地址,地址(dzh)(dzh)低低8 8位为位为0 0,一页的起点,默认值。,一页的起点,默认值。 第8页/共185页第八页,共186页。segment和end段定义(dngy) (3)组合类型组合类型组合类型:表示本段与其它段之间,具有相同段名的各段的组合关系,为组合类型:表示本段与其它段之间,具有相同段名的各段的组合关系,为连接程序提供信息,属于连接类型,连接程序提供信息,属于连接类型,6 6种。种。PUBLIC:PUBLIC:本段连接时将与有相同段名本段连接时将与有相同段名.

10、public.public类型的其它段连接在一起,类型的其它段连接在一起,连接次序由连接命令指定(共用一个段),即同名段连接在一起,有共连接次序由连接命令指定(共用一个段),即同名段连接在一起,有共同段地址。同段地址。STACK:STACK:用于说明堆栈用于说明堆栈(duzhn)(duzhn)段,把不同程序段中的具有段,把不同程序段中的具有SARCKSARCK类型的类型的同名段组合而形成一个堆栈同名段组合而形成一个堆栈(duzhn)(duzhn)段,其长度为各原有段的总和,段,其长度为各原有段的总和,LINKLINK自动将新段的段地址送自动将新段的段地址送SSSS,长度送,长度送SPSP,若未

11、定义,若未定义SARCKSARCK类型,需类型,需在程序中用指令设置在程序中用指令设置SSSS、SPSP。COMMON:COMMON:本段连接时,使具有本段连接时,使具有COMMONCOMMON类型的同名段具有同一个起始地址,类型的同名段具有同一个起始地址,所以会产生覆盖,新段的长度是最长所以会产生覆盖,新段的长度是最长COMMONCOMMON段的长度,新段的内容取段的长度,新段的内容取决于依次覆盖的最后内容。决于依次覆盖的最后内容。MEMORY:MEMORY:表示该段应定位在所有段的最下面(即地址最大的区域),如果表示该段应定位在所有段的最下面(即地址最大的区域),如果模块中不止一个模块中不

12、止一个MEMORYMEMORY段,以第一个遇到的作为段,以第一个遇到的作为MEMORYMEMORY段,其它段作段,其它段作为为COMMONCOMMON段处理,而段处理,而LINKLINK程序在处理程序在处理MEMORYMEMORY时与时与PUBLICPUBLIC同样对待。同样对待。PRIVATE:PRIVATE:独立段,与其它段逻辑上没有关系,不与同名段合并,默认值。独立段,与其它段逻辑上没有关系,不与同名段合并,默认值。 AT AT 表达式表达式: :指定本段起始地址为指定本段起始地址为“表达式表达式”,偏移量为,偏移量为0 0,不能用于代码,不能用于代码段。段。 第9页/共185页第九页,

13、共186页。segment和end段定义(dngy) (4)字长类型字长类型字长类型:字长类型: 386 386以后,说明使用以后,说明使用1616位寻址方式,还位寻址方式,还是是3232位寻址方式。位寻址方式。.USE16: 16.USE16: 16位寻址方式,段长位寻址方式,段长64KB64KB,1616位段地址,位段地址,1616位偏移量,默认值。位偏移量,默认值。.USE32: 32.USE32: 32位寻址方式,段长位寻址方式,段长4GB4GB,1616位段地址,位段地址,3232位偏移量。位偏移量。类别类别类别:引号括起的字符串,连接时,类别:引号括起的字符串,连接时,类别类别相同

14、相同的分段的分段( (他们他们(t men)(t men)可能不同名可能不同名) )均放在连续的均放在连续的存储空间中,但他们存储空间中,但他们(t men)(t men)仍然是不同的分段仍然是不同的分段(连续空间)。(连续空间)。 第10页/共185页第十页,共186页。ASSUME段分配(fnpi) 格式:格式:ASSUME ASSUME 段寄存器名:段名,段寄存器名:段名, 功能:指定分段功能:指定分段(fn dun)(fn dun)寄存器,说明哪个段使寄存器,说明哪个段使用哪个段寄存器。用哪个段寄存器。 说明:说明: 程序段必须用程序段必须用CSCS,堆栈段必须用,堆栈段必须用SSSS

15、 该语句一般放在代码段的最前面该语句一般放在代码段的最前面 说明性语句,除说明性语句,除CSCS外(初始化赋值),各段寄存外(初始化赋值),各段寄存器在程序中赋值。器在程序中赋值。 取消语句:取消语句:ASSUME NOTHING ASSUME NOTHING 第11页/共185页第十一页,共186页。一般汇编(hubin)(hubin)格式举例 DATA1 SEGMENT DATADATA1 SEGMENT DATA DATA1 ENDSDATA1 ENDSDATA2 SEGMENT EXTRADATA2 SEGMENT EXTRA DATA2 ENDSDATA2 ENDSDATA3 SEG

16、MENT DATADATA3 SEGMENT DATA DATA3 ENDSDATA3 ENDSCODE SEGMENT CODECODE SEGMENT CODE ASSUME CS:CODE,DS:DATA1,ES:DATA3,SS:DATA2 ASSUME CS:CODE,DS:DATA1,ES:DATA3,SS:DATA2START: MOV AX, DATA1START: MOV AX, DATA1 MOV DS, AX MOV DS, AX ;数据;数据(shj)(shj)段地址赋给段地址赋给DSDS MOV AX, DATA2 MOV AX, DATA2 MOV SS, AX M

17、OV SS, AX ;堆栈段地址赋给;堆栈段地址赋给SSSS MOV AX, DATA3 MOV AX, DATA3 MOV ES, AX MOV ES, AX ;附加段地址赋给;附加段地址赋给ESES MOV AH, 4CH MOV AH, 4CH INT 21H INT 21H ;返回;返回DOSDOSCODE ENDSCODE ENDS END START END START 第12页/共185页第十二页,共186页。GROUP 段组定义(dngy) 格式:段组名格式:段组名 GROUP GROUP 段名,段名段名,段名功能功能(gngnng)(gngnng):将指定的所有段分配在同一个

18、物理存储器内,使用:将指定的所有段分配在同一个物理存储器内,使用同一个组名,使用同一个同一个组名,使用同一个DSDS内容。内容。用户自行指定段组中的段,段组不影响各段次序,对定义在不同段中的用户自行指定段组中的段,段组不影响各段次序,对定义在不同段中的变量,可以用同一个变量,可以用同一个DSDS访问,但各段仍为独立段,通常将具有相同性质访问,但各段仍为独立段,通常将具有相同性质的段分在一个段组。的段分在一个段组。举例:举例: DATA1 SEGMENT DATA DATA1 SEGMENT DATA DATA1 ENDS DATA1 ENDS DATA2 SEGMENT DATA DATA2

19、SEGMENT DATA DATA2 ENDS DATA2 ENDS AA5 GROUP DATA1, DATA2 AA5 GROUP DATA1, DATA2 CODE SEGMENT CODE CODE SEGMENT CODE ASSUME CS:CODE,DS:AA5 ASSUME CS:CODE,DS:AA5 START: MOV AX, AA5 START: MOV AX, AA5 MOV DS, AX MOV DS, AX ;数据段地址赋给;数据段地址赋给DSDS MOV AH, 4CH MOV AH, 4CH INT 21H INT 21H ;返回;返回DOSDOS CODE

20、ENDS CODE ENDS END START END START 第13页/共185页第十三页,共186页。简化(jinhu)(jinhu)的段定义 MASM 5.0MASM 5.0以上支持的段定义,不像以上支持的段定义,不像SEGMENTSEGMENT定义得定义得那么完善,但易用。那么完善,但易用。 简化段有利于汇编语言程序模块与高级语言程序模简化段有利于汇编语言程序模块与高级语言程序模块的连接块的连接(linji)(linji),但,但.COM.COM程序不能用简化段定程序不能用简化段定义。义。 第14页/共185页第十四页,共186页。四、地址(dzh)(dzh)计数器伪指令 1 1

21、地址计数器地址计数器$ $功能:指出汇编地址,是偏移量,记载下一个变量或指令在当前段中的偏功能:指出汇编地址,是偏移量,记载下一个变量或指令在当前段中的偏移量。移量。每个段开始时,每个段开始时,$ $0 0,随着汇编过程的进行而增值,每处理一条指令,随着汇编过程的进行而增值,每处理一条指令,$ $增加一个值,此值为该指令所需的字节数。增加一个值,此值为该指令所需的字节数。允许直接引用允许直接引用$ $,如:,如:JNE $JNE $6 6 ;转向;转向JNEJNE指令的首地址加上指令的首地址加上6 6。$ $用于指令时,表示本条指令的第一个字节地址,用于指令时,表示本条指令的第一个字节地址,$

22、 $用于其他情况,表示用于其他情况,表示$ $的当前值。的当前值。2 2ORG ORG 起始地址定义起始地址定义格式:格式: ORG ORG 表达式表达式功能:定义指令或数据的起始地址,把表达式的值送给功能:定义指令或数据的起始地址,把表达式的值送给$ $(地址计数器)(地址计数器)3 3EVEN EVEN 偶数地址定义偶数地址定义功能:使下一个变量或指令从偶数地址开始,便于字存储对准(功能:使下一个变量或指令从偶数地址开始,便于字存储对准(EVENEVEN在在代码段中可能多出一个代码段中可能多出一个NOPNOP语句)。语句)。4 4ALIGN ALIGN 边界边界(binji)(binji)

23、定义定义格式:格式:ALIGN n ALIGN n ;n n为为2 2的幂次的幂次功能:使下一个变量或指令从功能:使下一个变量或指令从n n的接续整数倍地址开始,保证双字、四倍的接续整数倍地址开始,保证双字、四倍字对准。字对准。 第15页/共185页第十五页,共186页。五、数据(shj)(shj)定义 格式:变量名格式:变量名 操作符操作符 操作数操作数 ;注释;注释 功能:为操作数分配功能:为操作数分配(fnpi)(fnpi)存储单元,用变量与存储单元联系。为变量分配存储单元,用变量与存储单元联系。为变量分配(fnpi)(fnpi)存存储单元,并预置初值。储单元,并预置初值。 操作符:操作

24、符: DB DB:一个操作数占有:一个操作数占有1 1个字节单元(个字节单元(8 8位),定义的变量为字节变量。位),定义的变量为字节变量。 DW DW:一个操作数占有:一个操作数占有1 1个字单元(个字单元(1616位),定义的变量为字变量。位),定义的变量为字变量。 DD DD:一个操作数占有:一个操作数占有1 1个双字单元(个双字单元(3232位),定义的变量为双字变量。位),定义的变量为双字变量。 DF DF:一个操作数占有:一个操作数占有1 1个三字单元(个三字单元(4848位),定义的变量为三字变量。位),定义的变量为三字变量。 DQ DQ:一个操作数占有:一个操作数占有1 1个四

25、字单元(个四字单元(6464位),定义的变量为四字变量。位),定义的变量为四字变量。 DT DT:一个操作数占有:一个操作数占有1 1个五字单元(个五字单元(8080位),定义的变量为五字变量。位),定义的变量为五字变量。 操作数:常数、表达式、字符串、?操作数:常数、表达式、字符串、? 第16页/共185页第十六页,共186页。数据定义(dngy)(dngy)举例(1 1) ORG 200H ORG 200H ;设置;设置$ $DATA1 DB 12H,2+6,34HDATA1 DB 12H,2+6,34HEVEN EVEN ;偶地址,使;偶地址,使$ $指向偶地址指向偶地址DATA2 DW

26、 789AHDATA2 DW 789AHALIGN 4 ALIGN 4 ;4 4倍地址,使倍地址,使$ $指向指向4 4倍地址倍地址DATA3 DD 12345678HDATA3 DD 12345678HDATA4 DW $,6699H DATA4 DW $,6699H ;$ $为汇编指针,为汇编指针,1616位,设置当位,设置当前前(dngqin)$(dngqin)$(原(原$ $)的内容)的内容 例例 1 内存分配情况内存分配情况 变量名变量名 偏移量偏移量 存储单元内容存储单元内容 DATA1 200H 12H 201H 08H 202H 34H 203H (即保留原值) DATA2 2

27、04H 9AH 205H 78H 206H (即保留原值) 207H (即保留原值) DATA3 208H 78H 209H 56H 20AH 34H 20BH 12H DATA4 20CH 0CH 20DH 02H 20EH 99H 20FH 66H $ 210H 第17页/共185页第十七页,共186页。吉林大学(j ln d xu)远程教育学院微机微机(wi j)(wi j)原理及原理及汇编语言汇编语言 主讲人: 赵宏伟 教授 总学时: 80 80 吉林大学(j (j ln d xu)ln d xu)计算机科学与技术学院 第 二十一 讲 第18页/共185页第十八页,共186页。数据(s

28、hj)(shj)定义举例(2 2) ORG 100H ORG 100HDATA1 DB abcdDATA1 DB abcd ;字符串必须;字符串必须(bx)(bx)用单用单引号引号DATA2 DB AB DATA2 DB AB DATA3 DW AB DATA3 DW AB ; 按 字 处 理 , 个 数 只 能 为; 按 字 处 理 , 个 数 只 能 为2 2 例例 2 内存分配情况内存分配情况 变量名变量名 偏移量偏移量 存储单元内容存储单元内容 DATA1 100H 61H 101H 62H 102H 63H 103H 64H DATA2 104H 41H 105H 42H DATA3

29、 106H 42H 107H 41H 第19页/共185页第十九页,共186页。数据定义(dngy)(dngy)举例(3 3) ORG 400H ORG 400HDATA1 DB 1,2,?,4 DATA1 DB 1,2,?,4 ;按字节;按字节(z ji)(z ji)定义定义DATA2 DW 5,?,6 DATA2 DW 5,?,6 ;按字定义;按字定义DATA3 DF ? DATA3 DF ? ;按三字定义;按三字定义DATA4 DB 8 DATA4 DB 8 例例 3 内存分配情况内存分配情况 变量名变量名 偏移量偏移量 存储单元内容存储单元内容 DATA1 400H 01H 401H

30、02H 402H (即保留原值) 403H 04H DATA2 404H 05H 405H 00H 406H (即保留原值) 407H (即保留原值) 408H 06H 409H 00H DATA3 40AH (即保留原值) 40BH (即保留原值) 40CH (即保留原值) 40DH (即保留原值) 40EH (即保留原值) 40FH (即保留原值) DATA4 410H 08H 第20页/共185页第二十页,共186页。数据(shj)(shj)定义举例(4 4) ORG 300H ORG 300HDATA1 DB 2 DUP DATA1 DB 2 DUP (12H,34H,56H) (12

31、H,34H,56H) 例例 4 内存分配情况内存分配情况 变量名变量名 偏移量偏移量 存储单元内容存储单元内容 DATA1 300H 12H 301H 34H 302H 56H 303H 12H 304H 34H 305H 56H 第21页/共185页第二十一页,共186页。数据定义(dngy)(dngy)举例(5 5) ORG 100H ORG 100HDATA1 DB 12H,34H,2 DUP (56H,3 DUP(9AH),78H) DATA1 DB 12H,34H,2 DUP (56H,3 DUP(9AH),78H) 例例 5 内存分配情况内存分配情况 变量名变量名 偏移量偏移量 存

32、储单元内容存储单元内容 DATA1 100H 12H 101H 34H 102H 56H 103H 9AH 104H 9AH 105H 9AH 106H 78H 107H 56H 108H 9AH 109H 9AH 10AH 9AH 10BH 78H 第22页/共185页第二十二页,共186页。六、PROCPROC、ENDPENDP过程(guchng)(guchng)定义 功能:用于定义子程序结构,过程功能:用于定义子程序结构,过程(guchng)(guchng)名是名是CALLCALL的操作数。的操作数。 格式:格式: 过程过程(guchng)(guchng)名名 PROC PROC 属性属

33、性 过程过程(guchng)(guchng)名名 ENDP ENDP 属性:属性:FARFAR,NEARNEAR(默认值)(默认值) 第23页/共185页第二十三页,共186页。吉林大学(j ln d xu)远程教育学院微机原理微机原理(yunl)(yunl)及汇及汇编语言编语言 主讲人: 赵宏伟 教授 总学时: 80 80 吉林大学(j (j ln d xu)ln d xu)计算机科学与技术学院 第 二十二 讲 第24页/共185页第二十四页,共186页。七、模块(m kui)(m kui)连接伪指令 用于定义各模块之间的共享信息用于定义各模块之间的共享信息 1 1PUBLICPUBLIC

34、格式:格式:PUBLIC PUBLIC 符号符号1 1,符号,符号2 2, 功能:公共引用,说明本模块定义,而其它模块引用的共享信息。功能:公共引用,说明本模块定义,而其它模块引用的共享信息。 2 2EXTRNEXTRN 格式:格式:EXTRN EXTRN 符号符号1 1:类型,符号:类型,符号2 2:类型,:类型, 功能:外部引用,说明其他模块定义,而本模块引用的共享信息。功能:外部引用,说明其他模块定义,而本模块引用的共享信息。 类型:类型: 对于变量,可以是字节对于变量,可以是字节(z ji)(z ji)(BYTEBYTE),字(),字(WORDWORD),双字(),双字(DWORDDW

35、ORD),三字),三字(FWORDFWORD),四字(),四字(QWORDQWORD),五字(),五字(TWORDTWORD)。)。 对于标号、过程名,可以是段内引用型(对于标号、过程名,可以是段内引用型(FARFAR),段间引用型(),段间引用型(NEARNEAR)。)。 共享信息是全局变量,包括常量、变量、标号、过程名等。共享信息是全局变量,包括常量、变量、标号、过程名等。 EXTRNEXTRN说明的信息应是在说明的信息应是在PUBLICPUBLIC中已经定义的,否则出错。中已经定义的,否则出错。 例:例: PUBLIC VAR1, VAR2 PUBLIC VAR1, VAR2 EXTRN

36、 VAR1:WORD, VAR2:BYTE EXTRN VAR1:WORD, VAR2:BYTE 第25页/共185页第二十五页,共186页。3.4 操作(cozu)数字段 操作数字段可以是寄存器、标号、变量、常数操作数字段可以是寄存器、标号、变量、常数(chngsh)(chngsh)、表达式等。寄存器、标号、变量已作、表达式等。寄存器、标号、变量已作介绍,本节重点介绍常数介绍,本节重点介绍常数(chngsh)(chngsh)、表达式。、表达式。 第26页/共185页第二十六页,共186页。一、常数(chngsh)(chngsh)(1 1) 包括:数值常数、字符串常数、符号常数包括:数值常数、

37、字符串常数、符号常数 1 1数值常数数值常数 数值常数可以是二进制数、八进制数、十进制数、十六数值常数可以是二进制数、八进制数、十进制数、十六进制数。进制数。 基数控制伪指令:改变基数默认值(原默认值为十进基数控制伪指令:改变基数默认值(原默认值为十进制)。制)。 格式:格式: .RADIX .RADIX 数值表达式数值表达式 功能:把默认的基数改变为功能:把默认的基数改变为2 21616范围内的任何范围内的任何(rnh)(rnh)基数。基数。 例:例: MOV BX, 0FFH MOV BX, 0FFH 等价于等价于 .RADIX 16 .RADIX 16 MOV BX, 178 MOV B

38、X, 0FFH MOV BX, 178 MOV BX, 0FFH MOV BX,178D MOV BX,178D 2 2字符串常数字符串常数 字符串常数:包括在单引号中的若干字符。字符串常数:包括在单引号中的若干字符。 字符串在存储器中储存的是相应字符的字符串在存储器中储存的是相应字符的ASCIIASCII码。码。 第27页/共185页第二十七页,共186页。一、常数(chngsh)(chngsh)(2 2) 3 3符号常数符号常数包括:包括:EQUEQU和和(1 1)EQUEQU赋值伪指令赋值伪指令格式:符号常数名格式:符号常数名 EQU EQU 表达式表达式功能:将表达式的值赋给符号常数。

39、功能:将表达式的值赋给符号常数。说明:表达式可以是有效的操作数格式,也可以是任何可求出数说明:表达式可以是有效的操作数格式,也可以是任何可求出数值常数的表达式,还可以是任何有效的符号(如操作符、寄存值常数的表达式,还可以是任何有效的符号(如操作符、寄存器名、变量名等)。器名、变量名等)。EQUEQU定义的一个符号常数名在程序中只能定义的一个符号常数名在程序中只能(zh nn)(zh nn)定义一次。定义一次。例:例: DATA1 EQU 88 DATA1 EQU 88 NEW_CX EQU CX NEW_CX EQU CX DATA2 EQU DATA1+12 DATA2 EQU DATA1+

40、12(2 2)伪指令)伪指令格式:符号常数名格式:符号常数名 表达式表达式功能:将表达式的值赋给符号常数。功能:将表达式的值赋给符号常数。定义的一个符号常数名在程序中可以重复定义多次。定义的一个符号常数名在程序中可以重复定义多次。例:例: DATA1 = 88 DATA1 = 88 DATA1 =DATA1+99 DATA1 =DATA1+99 第28页/共185页第二十八页,共186页。二、表达式 (1 1) 表达式:常数、寄存器、标号、变量与一些运算符相组合的序列。表达式:常数、寄存器、标号、变量与一些运算符相组合的序列。 包括:数值表达式,地址包括:数值表达式,地址(dzh)(dzh)表

41、达式。表达式。 1 1运算符运算符 六种运算:算术运算、逻辑运算、移位运算、关系运算、返回值运算、属六种运算:算术运算、逻辑运算、移位运算、关系运算、返回值运算、属性运算。性运算。 (1 1)算术运算符)算术运算符 算术运算符:有算术运算符:有5 5个,加()、减()、乘()、除(个,加()、减()、乘()、除(/ /)和取余)和取余(MODMOD)。)。 (2 2)逻辑运算符)逻辑运算符 逻辑运算符:逻辑运算符:4 4个,与(个,与(ANDAND)、或()、或(OROR)、非()、非(NOTNOT)和异或()和异或(XORXOR)。)。第29页/共185页第二十九页,共186页。二、表达式

42、(2 2)(3 3)移位运算符)移位运算符移位运算符:移位运算符:2 2个,左移(个,左移(SHLSHL)和右移()和右移(SHRSHR)。)。例:例: MOV AL, 0 MOV AL, 0 MOV BL, 11011000B MOV BL, 11011000B MOV AL, BL SHR 3 ; (AL)=00011011B MOV AL, BL SHR 3 ; (AL)=00011011B MOV CL, BL SHL 6 ; (CL)=11000000B MOV CL, BL SHL 6 ; (CL)=11000000B(4 4)关系)关系(gun x)(gun x)运算符运算符关系

43、关系(gun x)(gun x)运算符:运算符:6 6个,等于(个,等于(EQEQ)、不等()、不等(NENE)、小于()、小于(LTLT)、大于()、大于(GTGT)、小)、小于等于(于等于(LELE)、大于等于()、大于等于(GTGT)。)。功能:关系功能:关系(gun x)(gun x)运算符的两个操作数的计算结果应为逻辑值,结果为真(关系运算符的两个操作数的计算结果应为逻辑值,结果为真(关系(gun x)(gun x)成立),表示为成立),表示为0FFFFH0FFFFH,结果为假(关系,结果为假(关系(gun x)(gun x)不成立),表示为不成立),表示为0 0。例:例: MOV

44、AX, 2 LT 7 ; (AX)=0FFFFH MOV AX, 2 LT 7 ; (AX)=0FFFFH 第30页/共185页第三十页,共186页。二、表达式 (3 3)(5 5)返回值运算符)返回值运算符返 回 值 运 算 符 :返 回 值 运 算 符 : 5 5 个 , 返 回 变 量 或 标 号个 , 返 回 变 量 或 标 号 ( b i o h o )( b i o h o ) 的 段 地 址的 段 地 址(SEGSEG)、返回变量或标号)、返回变量或标号(bioho)(bioho)的偏移地址(的偏移地址(OFFSETOFFSET)、)、返回变量或标号返回变量或标号(bioho)(

45、bioho)的类型值(的类型值(TYPETYPE)、返回变量的单)、返回变量的单元数(元数(LENGTHLENGTH)、返回变量的字节数()、返回变量的字节数(SIZESIZE)。)。SEGSEG返回变量或标号返回变量或标号(bioho)(bioho)的段地址运算符的段地址运算符格式:操作数格式:操作数 SEG SEG 变量变量/ /标号标号(bioho)(bioho)功能:将变量功能:将变量/ /标号标号(bioho)(bioho)所在段的段基址值赋给操作数。所在段的段基址值赋给操作数。OFFSETOFFSET返回变量或标号返回变量或标号(bioho)(bioho)的偏移地址运算符的偏移地址

46、运算符格式:操作数格式:操作数 OFFSET OFFSET 变量变量/ /标号标号(bioho)(bioho)功能:将变量功能:将变量/ /标号标号(bioho)(bioho)所在段中的偏移值赋给操作数。所在段中的偏移值赋给操作数。TYPETYPE返回变量或标号返回变量或标号(bioho)(bioho)的类型值运算符的类型值运算符格式:操作数格式:操作数 TYPE TYPE 变量变量/ /标号标号(bioho)(bioho)功能:将代表变量功能:将代表变量/ /标号标号(bioho)(bioho)类型的值赋给操作数。类型的值赋给操作数。说明:如果是变量,则汇编程序将根据变量对应的数据定义伪指说

47、明:如果是变量,则汇编程序将根据变量对应的数据定义伪指令回送类型值(即变量类型代表的字节数):令回送类型值(即变量类型代表的字节数):DBDB为为1 1,DWDW为为2 2,DDDD为为4 4,DFDF为为6 6,DQDQ为为8 8,DTDT为为1010。返回以字节数表示的类型,。返回以字节数表示的类型,常数返回常数返回0 0。如果是标号。如果是标号(bioho)(bioho),则汇编程序将回送代表该,则汇编程序将回送代表该标号标号(bioho)(bioho)类型的数值:类型的数值:NEARNEAR为为1 1,FARFAR为为22。 第31页/共185页第三十一页,共186页。二、表达式 (4

48、 4)LENGTHLENGTH返回变量的单元数运算符返回变量的单元数运算符格式:操作数格式:操作数 LENGTH LENGTH 变量变量功能:将代表变量的单元数赋给操作数。功能:将代表变量的单元数赋给操作数。说明:说明:返回一次数据定义的第一个元素的长度,返回一次数据定义的第一个元素的长度,DUPDUP时返回重复次数,其他情况返回时返回重复次数,其他情况返回1 1。 对于变量中使用对于变量中使用DUPDUP的情况,汇编程序将回送的情况,汇编程序将回送分配给该变量的单元数(按类型分配给该变量的单元数(按类型TYPETYPE算),而对于其算),而对于其他情况,则均送他情况,则均送1 1。只对。只对

49、DUPDUP定义的变量有意义,返回定义的变量有意义,返回分配给该变量的元素的个数。只返回第一个分配给该变量的元素的个数。只返回第一个DUPDUP前的元前的元素个数,与素个数,与DUPDUP括号内的数据无关括号内的数据无关(wgun)(wgun),认为只是,认为只是一组数据而已,若与一组数据而已,若与DUPDUP并列地定义了其它数据,就只并列地定义了其它数据,就只能返回能返回1 1。SIZESIZE返回变量的字节数运算符返回变量的字节数运算符格式:操作数格式:操作数 SIZE SIZE 变量变量功能:将代表变量的字节数赋给操作数。功能:将代表变量的字节数赋给操作数。说明:说明:就是返回就是返回L

50、ENGTHLENGTHTYPETYPE的结果。的结果。 汇编程序将回送分配给该变量的字节数。只对汇编程序将回送分配给该变量的字节数。只对DUPDUP定义的变量有意义。定义的变量有意义。 第32页/共185页第三十二页,共186页。吉林大学(j ln d xu)远程教育学院微机微机(wi j)(wi j)原理及汇原理及汇编语言编语言 主讲人: 赵宏伟 教授 总学时: 80 80 吉林大学计算机科学与技术(jsh)(jsh)学院 第 二十三 讲 第33页/共185页第三十三页,共186页。二、表达式 (5 5)例: DATA SEGMENT AT 1000H ORG 3000HAA1 DW 100

51、 DUP(0)BB1 DW 1,2CC1 DB ABCDDD1 DW 1000 DUP(2,3)EE1 DB 50 DUP(5,6)FF1 DW 1,2,100 DUP(?)GG1 DD 5 DUP(6 DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATAHH1: MOV AX, DATA ; AX=1000H MOV DS, AX MOV AX, SEG AA1 ; AX=1000H,AT定义(dngy) MOV BX, OFFSET AA1 ; BX=3000H MOV CL, TYPE AA1 ; CL=2,字类型 MOV CH, TYP

52、E CC1 ; CH=1,字节类型 MOV AL, TYPE GG1 ; AL=4,双字类型第34页/共185页第三十四页,共186页。二、表达式 (6 6) MOV DX, LENGTH AA1 ; DX=100,元素(yun s)个数 MOV AX, SIZE AA1 ; AX=200,元素(yun s)个数类型 MOV DX, LENGTH BB1 ; DX=1,LENGTH只对DUP定义的变量有意义 MOV AX, SIZE BB1 ; AX=2 MOV DX, LENGTH CC1 ; DX=1 MOV AX, SIZE CC1 ; AX=1 MOV DX, LENGTH DD1 ;

53、 DX=1000 MOV AX, TYPE DD1 ; AX=2000 MOV DX, LENGTH EE1 ; DX=50 MOV AX, SIZE EE1 ; AX=50 MOV DX, LENGTH FF1 ; DX=1 MOV AX, TYPE FF1 ; AX=2 MOV DX, LENGTH GG1 ; DX=5 MOV AX, TYPE GG1 ; AX=20 MOV AH, 4CH INT 21HCODE ENDS END HH1第35页/共185页第三十五页,共186页。二、表达式 (7 7)(6 6)属性)属性(shxng)(shxng)运算符运算符属性属性(shxng)(

54、shxng)运算符:运算符:3 3个,临时改变类型属性个,临时改变类型属性(shxng)(shxng)运运算符算符PTRPTR、指定类型属性、指定类型属性(shxng)(shxng)运算符运算符THISTHIS、定义类型、定义类型属性属性(shxng)(shxng)运算符运算符LABELLABEL。 PTR PTR 临时改变类型属性临时改变类型属性(shxng)(shxng)运算符运算符格式:类型格式:类型 PTR PTR 变量变量/ /标号标号功能:将功能:将PTRPTR前面的类型临时赋给变量前面的类型临时赋给变量/ /标号,而原有段属性标号,而原有段属性(shxng)(shxng)和偏移属

55、性和偏移属性(shxng)(shxng)保持不变,其本身并不分保持不变,其本身并不分配存储单元。配存储单元。说明:对于变量,可以指定类型说明:对于变量,可以指定类型BYTEBYTE、WORDWORD、DWORDWOR、DFWORDDFWORD、QWORDQWORD、TWORDTWORD。对于标号,可以指定类型。对于标号,可以指定类型NEARFARNEARFAR例:例: DATA DB 66H,77H DATA DB 66H,77H MOV AX, WORD PRT DATA MOV AX, WORD PRT DATA 第36页/共185页第三十六页,共186页。二、表达式 (8 8) THIS

56、 THIS 指定类型属性运算符指定类型属性运算符格式:变量格式:变量(binling)/(binling)/标号标号 EQU THIS EQU THIS 类型类型 功能:将变量功能:将变量(binling)(binling)或标号定义成指定的类或标号定义成指定的类型。型。说明:说明:THISTHIS指定的变量指定的变量(binling)(binling)或标号本身并或标号本身并不 分 配 存 储 单 元 , 它 与 紧 跟 其 后 的 变 量不 分 配 存 储 单 元 , 它 与 紧 跟 其 后 的 变 量(binling)(binling)或标号只有类型不同,而段地址和偏或标号只有类型不同,

57、而段地址和偏移量均相同。移量均相同。THISTHIS指定类型与指定类型与PTRPTR相同。相同。例:例: DATA1 EQU THIS BYTE DATA1 EQU THIS BYTE DATA2 DW 1234H ;DATA1 DATA2 DW 1234H ;DATA1和和DATA2DATA2具有相同的段地址和偏移量,但类型值分别为具有相同的段地址和偏移量,但类型值分别为1 1和和2 2。 MOV AX, DATA2 ; AX=1234H MOV AX, DATA2 ; AX=1234H MOV BL, DATA1 ; BL=34H MOV BL, DATA1 ; BL=34H 第37页/共

58、185页第三十七页,共186页。二、表达式 (9 9) LABEL LABEL 定义类型属性运算符定义类型属性运算符格式:变量格式:变量/ /标号标号 LABEL LABEL 类型类型功能:将变量或标号定义成指定的类型。功能:将变量或标号定义成指定的类型。说明:说明:LABELLABEL指定的变量或标号本身并不分配存储单元,它与紧跟指定的变量或标号本身并不分配存储单元,它与紧跟(jn n)(jn n)其后的变量其后的变量或标号只有类型不同,而段地址和偏移量均相同。或标号只有类型不同,而段地址和偏移量均相同。THISTHIS指定类型与指定类型与PTRPTR相同。相同。例:例: AA1 LABEL

59、 FAR ; AA1 AA1 LABEL FAR ; AA1为段间转移入口为段间转移入口 AA2: ; AA2 AA2: ; AA2为段内转移入口为段内转移入口 AA3 LABEL BYTE AA3 LABEL BYTE AA4 DW 1234H AA4 DW 1234H MOV AX, AA4 MOV AX, AA4 MOV BH, AA3+1 MOV BH, AA3+1 第38页/共185页第三十八页,共186页。二、表达式 (1010)2 2数字表达式数字表达式数字表达式:有常数、变量、标号与一些运算符相组合的序列。运算符可以是算术运算符、逻辑数字表达式:有常数、变量、标号与一些运算符相

60、组合的序列。运算符可以是算术运算符、逻辑运算符、移位运算符、关系运算符、返回值运算符,但结果必须是常数。运算符、移位运算符、关系运算符、返回值运算符,但结果必须是常数。3 3标号标号标号:指令所在标号:指令所在(suzi)(suzi)单元的符号地址。单元的符号地址。标号的三种属性:段地址、偏移量、类型(标号的三种属性:段地址、偏移量、类型(NEARNEAR、FARFAR)。)。4 4变量变量变量:数据所在变量:数据所在(suzi)(suzi)单元的符号地址。单元的符号地址。变量的五种属性:段地址(变量的五种属性:段地址(SEGSEG返回值)、偏移量(返回值)、偏移量(OFFSETOFFSET返

61、回值)、类型(返回值)、类型(TYPETYPE返回值)、单返回值)、单元数(元数(LENGTHLENGTH返回值)、字节数(返回值)、字节数(SIZESIZE返回值)返回值)5 5地址表达式地址表达式地址表达式:存储器地址,即地址表达式:存储器地址,即EAEA的计算。是常数、变量、标号与一些运算符相组合的序列。的计算。是常数、变量、标号与一些运算符相组合的序列。 第39页/共185页第三十九页,共186页。吉林大学远程教育(yun chn jio y)学院微机微机(wi j)(wi j)原理及汇原理及汇编语言编语言 主讲人: 赵宏伟 教授 总学时: 80 80 吉林大学计算机科学与技术(jsh

62、)(jsh)学院 第 二十四 讲 第40页/共185页第四十页,共186页。3.5 汇编语言(hu bin y yn)程序设计及举例(1) (一) 编写汇编语言程序的步骤1. 从实际问题抽象出数学模型。2. 确定(qudng)解决此数学模型的算法。解决同一个问题可以有不同的算法。它们的效率可能有很大的差别。例如要做X*10,可以用乘法指令;也可以用X*8+X*2,而X*2或X*8也可以自身相加,或X左移来实现;这些方法的程序复杂程度和执行时间差别是很大的。又例如查表,是用线性查找还是用对分查找区别也很大。所以,确定(qudng)合适的算法是很重要的。3. 画出程序流程图。把根据算法解决问题的思

63、路和方法,用图形表示出来。4. 分配内存工作单元和寄存器。5. 根据流程图编制程序。当然,到这儿只是设计出了基本程序,此程序是否正确,可靠,还必须上机调试,排错和进行不要的检测。(二) 判断程序质量的标准为解决同一个问题所编制的程序,往往是多种多样的,如何衡量程序的质量呢?通常有三个标准: 1. 程序的执行时间 2. 程序所占用的内存字节数 3. 程序的语句行数前两个标准是主要的,由于半导体存储器容量越来越大,成本急剧降低。第41页/共185页第四十一页,共186页。3.5 汇编语言(hu bin y yn)程序设计及举例(2) (三) 程序流程图在确定问题的算法以后(yhu),先不要急于写一

64、条条指令,而要用程序流程图把编制程序的方法和思路勾画出来,确定程序的结构和相互之间的关系。本书中的流程图,采用以下一些惯用的画法。 1. 用方框表示工作框,方框中用简明的语言标明所完成的特定功能。它有一个入口一个出口,用箭头表示。 2. 用菱形表示判断框,菱形内标明比较,判断和条件。它有一个入口和几个出口,各用箭头表示。在各个出口处标明出口条件,条件成立则写“是(用Y表示)”,条件不成立用“否(用N表示)”。 3. 程序中要调用的子程序或过程,用 框表示,在框中标明子程序或过程的名字(包括入口地址、入口条件、参数、出口参数)。它有一个入口一个出口,各用箭头表示。带箭头的直线。程序的各框之间用箭

65、头的直线连接起来,表示程序的走向。 第42页/共185页第四十二页,共186页。算术运算程序设计(chn x sh j)(chn x sh j)(直线运行程序) 最简单的程序是没有分支,没有循环的直线运行程序。 在8088/80868088/8086中,数据是1616位的,它只有1616位的运算指令,若是两个3232位的数相乘就无法直接用指令实现( (在8038680386中有3232位数相乘的指令),),但可以(ky)(ky)用1616位乘法指令做4 4次乘法,然后把部分积相加来实现。其原理如图所示。 A B C AC BD D AD BC 第43页/共185页第四十三页,共186页。算术运

66、算(yn sun)(yn sun)程序设计(1 1) 例1 1: 两个3232位无符号数乘法程序 若数据区中已有一个(y )(y )缓冲区存放了3232位的被乘数和乘数,保留了6464位的空间以存放乘积,能实现上述运算的程序流程图如图所示 A*C=部分积部分积 4 恢复进位恢复进位 部分积部分积4与前面的和相加与前面的和相加 保存在缓冲区保存在缓冲区 返回返回 保存进位保存进位 B*C=部分积部分积 3 存入缓冲区存入缓冲区 进位加至部分积进位加至部分积 22 部分积部分积 21(低(低 16 位)位) 部分积部分积 12 (高(高 16 位)位) A*D=部分积部分积 2 与前面的对应与前面的对应 16 位相位相加加 被乘数的高被乘数的高 16 位位AX 存入缓冲区存入缓冲区 B*D=部分积部分积 1 乘数的高乘数的高 16 位位 C-DI 乘数的低乘数的低 16 位位 D-SI 被乘数的低被乘数的低 16 位位 B-AX 设地址指针设地址指针 第44页/共185页第四十四页,共186页。算术(sunsh)(sunsh)运算程序设计(2 2) 相应的程序为:相应的程序为: name

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

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

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


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