书签 分享 收藏 举报 版权申诉 / 43
上传文档赚钱

类型第四章汇编语言程序设计-2课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4142840
  • 上传时间:2022-11-14
  • 格式:PPT
  • 页数:43
  • 大小:153.44KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第四章汇编语言程序设计-2课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    第四 汇编语言 程序设计 _2 课件
    资源描述:

    1、第四章第四章 汇编语言程序设计汇编语言程序设计4.1 程序设计语言概述程序设计语言概述n机器语言机器语言n汇编语言汇编语言n高级语言高级语言用二进制编码表示的指令,计算机可以直接识别并执行用二进制编码表示的指令,计算机可以直接识别并执行 采用助记符表达指令操作码,采用标识符表示指令操采用助记符表达指令操作码,采用标识符表示指令操作数。与计算机内部硬件结构和指令系统密切相关,通用作数。与计算机内部硬件结构和指令系统密切相关,通用性较差。通常用于实时控制及需要直接控制设备的场合。性较差。通常用于实时控制及需要直接控制设备的场合。脱离具体机器,不依赖于特定计算机的结构和指令系脱离具体机器,不依赖于特

    2、定计算机的结构和指令系统。通用性好,便于移植。不能编写直接访问机器硬件资统。通用性好,便于移植。不能编写直接访问机器硬件资源的系统软件或控制软件。源的系统软件或控制软件。4.2 8086汇编语言简介汇编语言简介一、数据与表达式一、数据与表达式1数据数据常数常数、变量变量、标号标号1)常数)常数 表示一个固定数值,主要用于做指令中的表示一个固定数值,主要用于做指令中的立即数立即数、寻、寻址中的址中的位移量位移量,或在伪指令语句中,或在伪指令语句中给变量赋值给变量赋值。数值常数数值常数:由二、八、十和十六进制表达的数。:由二、八、十和十六进制表达的数。字符串常数字符串常数:用:用 括起来的一串括起

    3、来的一串ASCII码字符,等码字符,等效为一组数值常数。效为一组数值常数。0101B3247O 2873(D)23ABH12AB=31H、32H、41H、42H2)变量)变量n代表某个代表某个数据所在存储单元的地址数据所在存储单元的地址,用来,用来引用某引用某个存储单元个存储单元。其值在程序运行期间可以改变。其值在程序运行期间可以改变。n变量需要事变量需要事先定义先定义,通过变量名引用。,通过变量名引用。变量名表变量名表示给变量分配的存储单元的首地址示给变量分配的存储单元的首地址。n属性:属性:段基址段基址、段内偏移量段内偏移量、类型类型(字节、字字节、字等等)3)标号)标号n代表代表指令所在

    4、存储单元的地址指令所在存储单元的地址,通常用来作为程,通常用来作为程序中转移、循环指令的操作数。序中转移、循环指令的操作数。n属性:属性:段基址段基址、段内偏移量段内偏移量、距离距离(NEARNEAR、FARFAR)2表达式表达式n由由常数常数、变量变量、标号标号和和运算符运算符连接而成连接而成n分类:分类:数字数字表达式、表达式、地址地址表达式表达式n8086汇编语言中的汇编语言中的运算符运算符 算术运算符算术运算符 逻辑运算符逻辑运算符 关系运算符关系运算符 数值返回运算符数值返回运算符 属性修改运算符属性修改运算符1)算术、逻辑、关系运算符)算术、逻辑、关系运算符算术运算符算术运算符+、

    5、-、*、/、mod等等逻辑运算符逻辑运算符AND、OR、NOT、XOR关系运算符关系运算符EQ、NE、LT、LE、GT、GEn 注意注意逻辑运算指令逻辑运算指令和和逻辑运算符逻辑运算符的区别的区别 AND DX,PORT AND 0FFH汇编时汇编时由汇编程序计算由汇编程序计算程序程序运行时运行时计算计算若两个数的关系若两个数的关系符合比较条件,符合比较条件,则比较结果为则比较结果为全全1,否则为全,否则为全0=2)数值返回数值返回运算符运算符 段基址运算符段基址运算符SEG SEG 变量变量/标号标号功能:功能:取变量取变量/标号的段基址标号的段基址 偏移量运算符偏移量运算符OFFSET O

    6、FFSET 变量变量/标号标号功能:功能:取变量取变量/标号的偏移地址标号的偏移地址例:将变量例:将变量NUM1的段基址送的段基址送AX,偏移地址送,偏移地址送SI。MOV AX,SEG NUM1 MOV SI,OFFSET NUM1;等价于等价于LEA SI,NUM1 类型运算符类型运算符TYPE TYPE 变量变量/标号标号功能:功能:返回反映返回反映变量变量/标号标号类型的数值类型的数值 长度运算符长度运算符LENGTH LENGTH 变量变量功能:功能:返回变量的元素个数。返回变量的元素个数。若变量定义时采用若变量定义时采用DUP表达式表达式,则返回,则返回最外层最外层DUP的重复次数

    7、;若最外层未用的重复次数;若最外层未用DUP,则返回,则返回1。DUP表达式的格式表达式的格式:重复次数:重复次数 DUP(数据(数据,)类型类型字节字节字字双字双字 NEAR FAR返回值返回值124-1-2例:例:X1 DB 1,2,3,4 X2 DB 10 DUP(2,3 DUP(0)X3 DB 2,3 DUP(0)则:则:LENGTH X1的值为的值为_ LENGTH X2的值为的值为_ LENGTH X3的值为的值为_ 字节总数运算符字节总数运算符SIZE SIZE 变量变量功能:功能:返回变量所占的总字节数。返回变量所占的总字节数。SIZE X=(LENGTH X)*(TYPE X

    8、)1101例:例:VAR1 DB 2 DUP(1,2 DUP(0)MOV AX,SEG VAR1MOV BX,OFFSET VAR1MOV CL,TYPE VAR1MOV CH,LENGTH VAR1MOV DX,SIZE VAR1;CL=1;CH=2;DX=23)属性修改属性修改运算符运算符类型修改运算符类型修改运算符PTR类型类型 PTR 地址表达式地址表达式短转移运算符短转移运算符SHORT JMP SHORT 标号标号类型指定运算符类型指定运算符THIS THIS 类型类型段超越运算符段超越运算符段名段名:地址表达式地址表达式段寄存器段寄存器:地址表达式地址表达式BYTE、WORD、D

    9、WORD、QWORD、TBYTE、NEAR、FAR变量、变量、标标号号、存储、存储单元单元3运算符的优先规则运算符的优先规则(自学自学)优先级优先级运算符运算符高高LENGTH,SIZE,段超越运算符段超越运算符PTR,OFFSET,SEG,TYPE,THIS*,/,MOD,SHL,SHR+,-EQ,NE,LT,LE,GT,GE低低NOT AND OR XORSHORT二、汇编语言的伪指令二、汇编语言的伪指令n指令语句指令语句n伪指令语句伪指令语句n宏指令语句宏指令语句执行语句。经过执行语句。经过汇编产生汇编产生可供计可供计算机硬件执行的机器算机硬件执行的机器目标代码目标代码。说明语句。如:程

    10、序有几个段,说明语句。如:程序有几个段,段的名称,是否需要预留存储空段的名称,是否需要预留存储空间等。间等。不直接产生目标代码不直接产生目标代码。指令语句指令语句+伪指令语句。替代源伪指令语句。替代源程序中一段有独立功能的程序,程序中一段有独立功能的程序,汇编时汇编时产生产生相应的相应的目标代码目标代码。1数据定义伪指令数据定义伪指令n定义格式:定义格式:DB DW 变量名变量名 DD 数据项表数据项表 DQ DTn功能:将功能:将数据项表数据项表中的数值中的数值存入连续的存储单存入连续的存储单元中元中,并,并关联变量名和存储单元地址关联变量名和存储单元地址。可以是可以是常数常数、表达表达式式

    11、、字符串字符串、?、带带DUPDUP的表达式的表达式数据定义例(数据定义例(1)DABYTE DB -5HDAWORD DW 6*3DADWORD DD 1234HDABYTEDAWORDDADWORDFBH12H00H34H12H00H00H数据定义例(数据定义例(2)STRING1STRING1 DBDB ABABSTRING2STRING2 DWDW ABABSTRING3STRING3 DDDD ABABSTRING1STRING2STRING341H42H42H41H00H00H41H42H2符号定义伪指令符号定义伪指令n用用符号符号表示表示常数常数、表达式表达式n赋值赋值伪指令伪指

    12、令 格式:格式:符号名符号名 EQU 表达式表达式n等号等号伪指令伪指令 格式:格式:符号名符号名 =表达式表达式n区别:区别:用用EQU定义的符号定义的符号在释放前(在释放前(PURGE)不可以重新赋值不可以重新赋值注意:注意:符号名不具有标号的三个属性。符号名不具有标号的三个属性。常数表达式常数表达式地址表达式地址表达式变量名变量名标号名标号名过程名过程名寄存器名寄存器名指令助记符指令助记符COUNT=5COUNT=10 NUM EQU 13+5-4NUM EQU 12*6 符号定义例符号定义例PURGE NUMNUM EQU12*6正确正确错误错误3类型定义伪指令(类型定义伪指令(自学自

    13、学)n定义格式:定义格式:变量名变量名/标号名标号名LABEL 类型类型n功能:为功能:为当前存储单元当前存储单元重新定义一个重新定义一个指定指定类型类型的的变量变量或或标号标号,但并不为此变量,但并不为此变量/标号标号分配存储单元。分配存储单元。4段定义伪指令段定义伪指令n功能:功能:把源程序划分成若干逻辑段把源程序划分成若干逻辑段,便于汇,便于汇编程序生产相应的目标代码,便于连接程序编程序生产相应的目标代码,便于连接程序生产可执行程序。生产可执行程序。n一个汇编语言源程序可以包含若干个逻辑段一个汇编语言源程序可以包含若干个逻辑段(代码段、数据段、附加段或堆栈段),段(代码段、数据段、附加段

    14、或堆栈段),段与段之间的顺序可随意排列。与段之间的顺序可随意排列。需独立运行的需独立运行的程序必须包含一个代码段程序必须包含一个代码段,并指示程序执行,并指示程序执行的的起始点起始点,一个程序,一个程序只有一个起始点只有一个起始点。逻辑段定义格式逻辑段定义格式段名段名 SEGMENT 定位类型定位类型组合类型组合类型类别类别名名段名段名 ENDS1)段名由用户自定义)段名由用户自定义2)段名的属性:)段名的属性:段基址段基址、段内偏移量段内偏移量、定位类型、定位类型、组合类型、类别名组合类型、类别名STACK SEGMENT .STACK ENDSDATA SEGMENT .DATA ENDS

    15、CODE SEGMENT.CODE ENDS5设置起始地址伪指令设置起始地址伪指令n定义格式:定义格式:ORG 表达式表达式n功能:指出功能:指出该伪指令后面该伪指令后面的的程序段程序段或或数据数据块块存放的存放的起始地址起始地址的的偏移量偏移量。n注意:注意:省略省略ORG则从本段则从本段起始地址起始地址(偏移(偏移量为量为0)开始)开始连续连续存放存放DATASEGMENT BUFF1 DB 23H,56H ORG 2000H BUFF2 DB STRINGDATAENDS从从DATA段偏移地址段偏移地址为为2000H的单元开始的单元开始存放存放设置起始地址伪指令例设置起始地址伪指令例从从

    16、DATA段偏移地段偏移地址为址为0的单元开始的单元开始存放存放6汇编结束伪指令汇编结束伪指令n定义格式:定义格式:END 起始标号起始标号n功能:功能:表示整个源程序结束,停止汇编。表示整个源程序结束,停止汇编。n注意:注意:必须必须是最后一条语句是最后一条语句;若有多个若有多个END语句,只有语句,只有第一个有效第一个有效。7段寄存器设定伪指令段寄存器设定伪指令n说明设定好的说明设定好的段段与与段寄存器段寄存器的关系。的关系。n定义格式:定义格式:ASSUME 段寄存器名段寄存器名:段名段名,段寄存器名段寄存器名:段名段名nASSUME语句的语句的位置任意,位置任意,一般设在代码段中。一般设

    17、在代码段中。注意:注意:ASSUME仅用于定义段和段寄存器的对应关仅用于定义段和段寄存器的对应关系,并系,并未将各段基址装入相应段寄存器未将各段基址装入相应段寄存器。CS和和SS可由系统可由系统自动装入自动装入,而,而DS和和ES需用程序装入需用程序装入。STACK1 SEGMENT STACK.STACK1 ENDSDATA2 SEGMENT.DATA2 ENDSCODE3 SEGMENTASSUME CS:CODE3,DS:DATA2,SS:STACK1START:MOV AX,DATA2 MOV DS,AX .CODE3 ENDS END STARTDS的装入的装入8过程定义伪指令过程定

    18、义伪指令(了解了解)n过程过程具有一定功能的程序具有一定功能的程序n定义格式:定义格式:过程名过程名PROC NEAR/FAR RET/RET n过程名过程名ENDPn注意:注意:过程名的三个属性:过程名的三个属性:段基址段基址、偏移地偏移地址址、类型属性类型属性(距离类型:(距离类型:NEAR、FAR)过程必须在某个过程必须在某个段内定义段内定义每个过程一定有返回指令每个过程一定有返回指令RET,可能,可能有多个,但执行的有多个,但执行的最后一条指令必是最后一条指令必是RET过程和段过程和段可互相嵌套可互相嵌套,但,但不可交叉覆不可交叉覆盖盖3.3 汇编语言程序设计n汇编程序的结构框架DAT

    19、ADATA SEGMENTSEGMENTDATADATA ENDSENDSCODECODE SEGMENTSEGMENT ASSUMEASSUME CS:CODE,DS:DATACS:CODE,DS:DATA STARTSTART:MOVMOVAXAX,DATADATA MOV MOVDSDS,AXAX MOV MOVAHAH,4CH4CH INT INT21H21HCODECODE ENDSENDS ENDEND STARTSTART数据定义数据定义;段寄存器定义;段寄存器定义DSDS的装入的装入DOSDOS调用调用;可定义过程可定义过程汇编程序的结构举例汇编程序的结构举例三、汇编语言的语句

    20、结构三、汇编语言的语句结构 名字名字 操作码操作码 操作数操作数 ;注释注释 例例 START START:MOV AX MOV AX,30H ;AX30H ;AX30H30Hn 以以字母开头字母开头,后跟,后跟字母字母、数字数字、特殊字符特殊字符(?(?、*、_ _、$、等等)组成,不超过组成,不超过3131个字符个字符n 不能与保留字相同不能与保留字相同n 任选,多数指令不用,多数伪指令用任选,多数指令不用,多数伪指令用n 指令语句的名字后跟冒号指令语句的名字后跟冒号,表示是,表示是标号标号,它代表,它代表该行指令的地址;该行指令的地址;伪指令前的名字后不带冒号伪指令前的名字后不带冒号时,

    21、时,表示变量、符号、段名、过程名等。表示变量、符号、段名、过程名等。必不可少的核心,规定了所要执行的操必不可少的核心,规定了所要执行的操作,由作,由指令指令或或伪指令助记符伪指令助记符组成。组成。参与操作的数据或地址,可以有参与操作的数据或地址,可以有多种表达形式,之间用多种表达形式,之间用,隔开。隔开。;后面的字符串,用后面的字符串,用来说明程序或语句的功能来说明程序或语句的功能4.3 汇编语言程序设计实例汇编语言程序设计实例n顺序程序设计顺序程序设计n分支程序设计分支程序设计n循环程序设计循环程序设计n子程序设计子程序设计(自学自学)例例17 以以TABLE为首地址的内存中存有一位十六进为

    22、首地址的内存中存有一位十六进制数的制数的ASCII码表。码表。查表查表求求HEX单元中数单元中数(0H0FH)的的ASCII码,并存于码,并存于ASCI单元。单元。DATA SEGMENT TABLE DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,41H,42H,43H,44H,45H,46H HEX DB 4 ASCI DB?DATA ENDS顺序程序设计顺序程序设计设设BXBX指向指向TABLETABLE表首地址表首地址HEXHEX的值送的值送ALAL查表查表得出结果得出结果将结果送给将结果送给ASCIASCILEALEA BXBX,TABLETAB

    23、LE(MOV BXMOV BX,OFFSET TABLEOFFSET TABLE)MOVMOV AL AL,HEXHEXXLATXLATMOVMOV ASCI ASCI,ALAL流程图流程图CODE SEGMENT ASSUME CS:CODE,DS:DATABEING:MOV AX,DATAMOV DS,AXMOV BX,OFFSET TABLEMOV AL,HEXXLAT TABLEMOV ASCI,ALMOV AH,4CHINT 21HCODEENDSEND BEING分支程序设计分支程序设计基本思想基本思想:根据逻辑判断的结果来形成程序的分支。:根据逻辑判断的结果来形成程序的分支。(a

    24、)二分支结构二分支结构(b)多分支结构多分支结构例例4-18 求数求数X的绝对值,并送值回原处的绝对值,并送值回原处DATASEGMENT X DW 8192H ;变量;变量XDATAENDS X (X=0)X (X=0)X (X0)X (X=0X=0?求求X X的相反数的相反数结束结束=0=0 0 0CMPCMP X,0X,0NEG XNEG XJGEJGE流程图流程图CODECODE SEGMENT SEGMENT ASSUME CS:CODE,DS:DATA ASSUME CS:CODE,DS:DATASTART:START:MOV AX,DATA MOV AX,DATA MOV DS,

    25、AX MOV DS,AX CMP X,0CMP X,0 JGE DONE JGE DONE NEG X NEG XDONE:MOV AH,4CHDONE:MOV AH,4CH INT 21H INT 21HCODECODE ENDSENDSEND END STARTSTART循环结构程序设计循环结构程序设计循环结构程序的组成:循环结构程序的组成:n置循环初值置循环初值n循环体循环体n循环修改循环修改n循环控制循环控制n循环结束处理循环结束处理两种循环结构两种循环结构设置初值设置初值循环体循环体循环修改循环修改结束结束循环控制循环控制未完未完设置初值设置初值循环体循环体循环修改循环修改结束结束循

    26、环控制循环控制未完未完图图4-5 4-5 循环程序流程图循环程序流程图例例4-204-20:求某数据区内:求某数据区内负数的个数负数的个数。设从偏。设从偏移量为移量为3000H3000H开始的开始的数据区的数据区的第第1 1个单元个单元存放存放数据个数数据个数,第,第2 2个单元开始存放数据,个单元开始存放数据,最后一个单元存放结最后一个单元存放结果果N数据为负数据为负?YBL+1BLBL+1BLDI DI+1DI DI+1CX CX-1CX CX-1CX=0?NY存结果存结果BLDIBLDI循环次数循环次数CX3000HCX3000H字节字节地址指针地址指针DI 3001HDI 3001H负数个数计数器负数个数计数器BL0BL0设设初初值值;测试数据是否为负测试数据是否为负 MOV CL,3000HXOR CH,CHMOV BL,0 MOV DI,3001HA1:MOV AL,DITEST AL,80HJZ A2INC BL A2:INC DILOOP A1MOV DI,BLCMP AL,0JGE A2AND AL,ALJNS A2;初始化数据区地址指针初始化数据区地址指针;数据个数送数据个数送CLCL;CH;CH清零清零;BL;BL记录负数个数,初值为零记录负数个数,初值为零;取出当前数据取出当前数据;存结果存结果;计数值加计数值加1 1;修改地址指针修改地址指针

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第四章汇编语言程序设计-2课件.ppt
    链接地址:https://www.163wenku.com/p-4142840.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库