欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    第2部分汇编语言基础知识.ppt

    • 资源ID:70969463       资源大小:284KB        全文页数:57页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第2部分汇编语言基础知识.ppt

    第2部分 汇编语言基础知识 Assembly Language Programming1 汇编语言的编码要求Assembly Language Programming基本特征程序注释程序注释保留字保留字标识符标识符语句语句伪操作伪操作汇编程序的基本框架数据类型数据类型简单的程序举例注释注释利用 ;开始可自成一行,也可在指令之后的同一行里例如ADD AX,BX ADD AX,BX ;计算总量计算总量保留字在特殊情况下使用,具有固定用途而保留的某些在特殊情况下使用,具有固定用途而保留的某些名字,称为保留字。主要类型:名字,称为保留字。主要类型:指令指令如如MOV,ADDMOV,ADD等计算机可执行的操作等计算机可执行的操作伪操作伪操作如如END,SEGMENTEND,SEGMENT,为为编译程序提供信息的语句编译程序提供信息的语句操作符操作符如如FAR,SIZEFAR,SIZE,在表达式中使用在表达式中使用预定义符号预定义符号如如data,modeldata,model等,在编译期间向程序返回信息等,在编译期间向程序返回信息标识符1用户定义的符号名称,包括两类:数据项的名称数据项的名称:表示数据项的地址:表示数据项的地址如如COUNTERCOUNTER DB 0 DB 0标号标号:表示指令、过程或者段的:表示指令、过程或者段的地址地址 MAINMAIN PROC FAR PROC FARB30B30:ADD BL,25:ADD BL,25标识符2定义规则定义规则第一个字符必须是字母或者不为第一个字符必须是字母或者不为.的特的特殊字符殊字符长度限定在长度限定在1 13131之间之间不能和保留字相冲突不能和保留字相冲突不区分大小写不区分大小写例如例如 合法:合法:TATAL,QTY25,$P80TATAL,QTY25,$P80 非法:非法:5 5P,.TYP,.TY字母:AZ和az数字:09特殊:?_ .$语句语句包括两类:指令指令具有对应的机器码具有对应的机器码例如:例如:ADD,MOVADD,MOV伪指令伪指令只在程序汇编过程起作用,产生机只在程序汇编过程起作用,产生机器不可执行的代码器不可执行的代码例如:例如:定义数据项定义数据项DB,DWDB,DW指令指令机器指令操作operation是必有的,规定该指令的动作操作数operand是可选的,并且数量不定例如:标识符标识符操作操作操作数操作数伪指令伪指令:COUNTCOUNTDBDB1 1指令:指令:MOV MOV AX,0AX,0标示名称 操作 操作数1n ;注释伪操作介绍几个常用的伪操作PAGEPAGE和和TITLETITLESEGMENTSEGMENTPROCPROCENDEND和和ENDPENDPASSUMEASSUME标示名称 伪操作 操作数1n ;注释PAGE和TITLE程序的开头,PAGE定义程序打印时一页的最大行数和每行最大字符数。默认50,80格式:PAGE 60,132TITLE为程序产生标题,打印程序时位于第2行格式:TITLE Assembly program sortSEGMENT格式:格式:segment_name SEGMENT align combine classsegment_name SEGMENT align combine class segment_name ENDSsegment_name ENDS解释解释 定位定位alignalign:指明段开始的边界。指明段开始的边界。通常段为小边界,参数为通常段为小边界,参数为PARAPARA。组合组合combinecombine:指明程序连接时,该段是否和其它的段指明程序连接时,该段是否和其它的段组合在一起(以后解释),参数为组合在一起(以后解释),参数为STACK,COMMON,STACK,COMMON,PUBLICPUBLIC堆栈段通常定义堆栈段通常定义 segment_name SEGMENT PARA STACKsegment_name SEGMENT PARA STACK 类别类别classclass:指明段的类别指明段的类别代码段代码段 codecode,数据段数据段 datadata,堆栈段堆栈段 stackstackPROC定义过程,格式:定义过程,格式:proc_name PROC FARproc_name PROC FAR proc_name ENDPproc_name ENDP过程名的操作数为过程名的操作数为FARFAR,意味着相应程序的入口意味着相应程序的入口点为此过程,在程序中只有一个操作数为点为此过程,在程序中只有一个操作数为FARFAR的的过程。过程。ENDPENDP指明过程的结束,过程的结束在代码段内,指明过程的结束,过程的结束在代码段内,即即ENDSENDS之前完成。之前完成。代码段内可以包含任意数量的过程,其它的过程代码段内可以包含任意数量的过程,其它的过程通常使用通常使用NEARNEAR的操作数。的操作数。ENDENDS段结束ENDP过程结束END完整的程序结束格式格式:END END 过程操作数过程操作数FARFAR的的PROCPROCASSUME指明程序各个段的用途典型的格式典型的格式ASSUME DS:ASSUME DS:datasegdataseg,CS:,CS:codesegcodeseg,SS:,SS:stacksegstackseg,上述的次序任意上述的次序任意假如需要扩展段假如需要扩展段ESES,也可以加上即可也可以加上即可ES:ES:datasegdataseg程序的框架结构page 60,132TITLEA04ASM1(EXE)Move and add operationsSTACKSEGMENT PARA STACK Stack.STACKENDS;-DATASEG SEGMENT PARA DataDATASEG ENDS;-CODESEGSEGMENT PARA CodeMAINPROC FARASSUME SS:STACK,DS:DATASEG,CS:CODESEGMOV AX,DATASEG;Set address of data MOV DS,AX;segment in DS.MOV AX,4C00H;End processingINT 21HMAINENDP;End of procedureCODESEGENDS;End of segmentEND MAIN;End of program解释段的定义顺序可任意入口过程MAIN的名称可以为其它,例如START等程序结束返回MOV AH,4CH MOV AH,4CH ;请求结束处理请求结束处理MOV AL,MOV AL,retcode retcode ;设置返回码设置返回码INT 21HINT 21H;调用中断处理调用中断处理通常正常返回0,故可写作MOV AX,4C00HMOV AX,4C00HINT 21HINT 21H编程技巧提示由于汇编源程序的格式相对不变,故可以把上述的框架保留下来,添加功能代码即可数据类型 1名称:对应标识符伪操作Dn:定义数据的类型长度字节字节DBDB(1 1字节)字节)字字DWDW(2 2字节)字节)双字双字DDDD(4 4字节)字节)表达式:定义数据的数值的常数或者表达式名称 Dn 表达式 数据定义的格式数据的定义1表达式的形式对于尚未初始化的数据,使用对于尚未初始化的数据,使用?表示表示常数常数举例最简单的情形最简单的情形DATAX DB?DATAX DB?DATAY DATAY DB 25 DB 25数据的定义2数据序列的定义数组数据因素依次用数据因素依次用 ,隔开隔开DATAZ DB 21,22,23,24DATAZ DB 21,22,23,24对DATAZ的数据因素访问,根据数据所处的位置进行DATAZ+0 DATAZ+0 表示表示2121,DATAZ+1 DATAZ+1 表示表示2222,依次,依次类推类推MOV AL,DATAZ+3MOV AL,DATAZ+3数据的定义3重复数据序列的定义举例DW 10 DUP(?)DW 10 DUP(?)DB 5 DUP(12)DB 5 DUP(12)DB 3 DUP(5 DUP(4)DB 3 DUP(5 DUP(4)DB 4 DUP(3 DUP(0,1),2 DUP($)DB 4 DUP(3 DUP(0,1),2 DUP($)名称 Dn 重复个数 DUP(表达式)请大家思考:上述的数据是什么?数据的定义4字符和字符串的定义字符或者字符串在字符或者字符串在单引号单引号 或者或者双引号双引号“”“”内定义内定义数据类型常用的是数据类型常用的是DBDB举例举例DB Computer cityDB Computer city若串中含有 “”,以下处理DB Crazy DB Crazy samsam”s CD”s CDDB “Crazy DB “Crazy samsams CD”s CD”完整的源程序举例page 60,132TITLEA04ASM1(EXE)Move and add operationsSTACKSEGMENT PARA STACK StackDW 32 DUP(0)STACKENDS;-DATASEGSEGMENT PARA DataFLDDDW 215FLDEDW 125FLDFDW?DATASEGENDS;-CODESEGSEGMENT PARA CodeMAINPROC FARASSUME SS:STACK,DS:DATASEG,CS:CODESEGMOV AX,DATASEG;Set address of data MOV DS,AX;segment in DS MOV AX,FLDD;Move 0215 to AXADD AX,FLDE;Add 0125 to AXMOV FLDF,AX;Store sum in FLDFMOV AX,4C00H;End processingINT 21HMAINENDP;End of procedureCODESEGENDS;End of segmentEND MAIN;End of program编写注意编写建议:同一小功能段,编写注释同一小功能段,编写注释程序识别一般不区分大小写程序识别一般不区分大小写可读性强,通常所有汇编指令用大写,而注释可读性强,通常所有汇编指令用大写,而注释全部用小写全部用小写使用简化的编程框架.MODEL 自动产生ASSUME语句.MODEL 本教程通常两种:Tiny:Tiny:为为.comcom生成代码生成代码Small:Small:为为.exeexe生成代码生成代码并且两者代码偏移量限定在并且两者代码偏移量限定在6464KBKB内内简化模型举例page 60,132TITLEA04ASM2(EXE)Move and add operations;-.MODEL SMALL.STACK 64;Define stack.DATA ;Define dataFLDDDW 215FLDEDW 125FLDFDW?;-.CODE;Define code segmentMAINPROC FARMOV AX,data;Set address of dataMOV DS,AX;segment in DSMOV AX,FLDD;Move 0215 to AXADD AX,FLDE;Add 0125 to AXMOV FLDF,AX;Store sum in FLDFMOV AX,4C00H;End processingINT 21HMAINENDP;End of procedureEND MAIN;End of program2 源程序的编译、连接和执行Assembly Language Programming几个文件源程序:.asm目标文件:.obj可执行文件:.exe (.com)编辑源程序.asm.asm汇编.obj连接.exe选项.LST.CRF汇编过程1ML a04asm1.a04asm1.asmasmMicrosoft(R)Segmented Executable Linker Version 5.31.009 Jul 13 Microsoft(R)Segmented Executable Linker Version 5.31.009 Jul 13 19921992Copyright(C)Microsoft Corp 1984-1992.All rights reserved.Copyright(C)Microsoft Corp 1984-1992.All rights reserved.Object Modules.Object Modules.objobj:a04asm1.:a04asm1.objobjRun File a04asm1.exe:a04asm1.exeRun File a04asm1.exe:a04asm1.exeList File List File nulnul.map:NUL.map:NULLibraries.lib:Libraries.lib:Definitions File Definitions File nulnul.def:.def:注意:该命令编译,生成obj,连接,生成exe同时完成汇编过程2E:E:srcsrcCH04ML CH04ML/c/c a04asm1.a04asm1.asmasmMicrosoft(R)Macro Assembler Version 6.11Microsoft(R)Macro Assembler Version 6.11Copyright(C)Microsoft Corp 1981-1993.All rights reserved.Copyright(C)Microsoft Corp 1981-1993.All rights reserved.Assembling:a04asm1.Assembling:a04asm1.asmasmE:E:srcsrcCH04LINK a04asm1.CH04LINK a04asm1.objobjMicrosoft(R)Segmented Executable Linker Version 5.31.009 Jul 13 1992Microsoft(R)Segmented Executable Linker Version 5.31.009 Jul 13 1992Copyright(C)Microsoft Corp 1984-1992.All rights reserved.Copyright(C)Microsoft Corp 1984-1992.All rights reserved.Run File a04asm1.exe:a04asm1.exeRun File a04asm1.exe:a04asm1.exeList File List File nulnul.map:.map:Libraries.lib:Libraries.lib:Definitions File Definitions File nulnul.def:.def:注意:该命令编译,生成obj,连接,生成exe分别完成执行E:E:srcsrcCH04a04asm1.exeCH04a04asm1.exeE:E:srcsrcCH04CH04ML其它注意的汇编选项除了/c只汇编程序外,还要知道:/Fl:产生列表文件.lst/Fr:产生映象文件.map/Sn:禁止符号表的列表/Zd:包含调试信息的行号/Zi:包含符号的调试信息大家在实验中,将上述的各个选项应用上编译程序,知道各个选项的含义。3 编写.COM汇编程序Assembly Language Programming.COM程序.com程序通常较为小巧,最大不超过64KB,适合作为常驻内存的程序代码段和数据段在一个段内.堆栈段由装入程序在段尾自动创建头100H为Program Segment Prex.exe PSP堆栈段数据段代码段ESSSDSCSPSP代码段堆栈段ESDSCSSS编写格式ASSUME将所有段寄存器初始化为代码段的地址ORG 100H指明第一条指令的地址为100H偏移量,即IP=100H注意:定义数据的方法,通常程序一开始即定义TITLEA05COM1 COM program to move and add dataCODESEG SEGMENT PARA CodeASSUME CS:CODESEG,DS:CODESEG,SS:CODESEG,ES:CODESEGORG 100H;Start at end of PSPBEGIN:JMP MAIN;Jump past data;-DATAXDW 215;Data definitionsDATAYDW 125DATAZDW?;-MAINPROC NEARMOV AX,DATAX;Move 0215 to AXADD AX,DATAY;Add 0125 to AXMOV DATAZ,AX;Store sum in DATAZMOV AX,4C00H;End processingINT 21HMAINENDPCODESEG ENDSEND BEGIN通常格式通常格式TITLEA05COM2 COM program to move and add data.MODEL TINY.CODEORG 100H;Start at end of PSPBEGIN:JMP MAIN;Jump past data;-DATAXDW 215;Data definitionsDATAYDW 125DATAZDW?;-MAINPROC NEARMOV AX,DATAX;Move 0215 to AXADD AX,DATAY;Add 0125 to AXMOV DATAZ,AX;Store sum in DATAZMOV AX,4C00H;End processingINT 21HMAINENDPEND BEGIN简化格式简化格式.com文件的汇编连接Assembling and programsC:ml /AT/Fl/Fm A05COM2.ASMMicrosoft(R)Macro Assembler Version 6.11Copyright(C)Microsoft Corp 1981-1993.All rights reserved.Assembling:A05COM2.ASMMicrosoft(R)Segmented Executable Linker Version 5.31.009 Jul 13 1992Copyright(C)Microsoft Corp 1984-1992.All rights reserved.Object Modules.obj:A05COM2.obj/tRun File A05COM:A05COMList File nul.map:A05COM2.map/mLibraries.lib:Definitions File nul.def:参数:参数:/AT:产生产生com格式的可执行文件格式的可执行文件/Fl:产生列表文件产生列表文件/Fm:产生映像文件产生映像文件4 DEBUG程序跟踪调试Assembly Language Programming基本命令的使用DEBUG是我们学习汇编语言的调试工具。所有的命令不区分大小写所有的命令不区分大小写所有的输入数据都默认十六进制的,不用所有的输入数据都默认十六进制的,不用H H结结尾尾C:DEBUG-C:DEBUG file.exe-R检查寄存器C:DEBUG-RAX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=0AC4 ES=0AC4 SS=0AC4 CS=0AC4 IP=0100 NV UP EI PL NZ NA PO NC0AC4:0100 F6C280 TEST DL,80RF标记寄存器-RF列举出标志寄存器的各个位状态OF溢出(是/否)OV NV DF方向(减量/增量)DNUPIF中断(允许/关闭)EIDISF符号(负/正)NGPLZF零(是/否)ZRNZAF辅助进位(是/否)ACNAPF奇偶(偶/奇)PEPOCF进位(是/否CYNCD检查内存内容使用的格式:-D starting address length开始的地址:segment:offset 采用默认DS的偏移地址offset例如:-D 0000-D DS:0000-D 0100 L5E编辑机器指令程序C:DEBUG-E CS:100 B8 23 01 05 25 00-E CS:106 8B D8 03 D8 8B CB-E CS:10C 2b c8 2b c0 eb ee-D CS:1000B00:0100 B8 23 01 05 25 00 8B D8-03 D8 8B CB 2B C8 2B C0.#.%.+.+.0B00:0110 EB EE C3 75 05 80 CF 80-EB D4 3C 0D 34 00 EF 0A.u.debug-n A05COM2.COM-l-RAX=0000 BX=0000 CX=0017 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000DS=0C2E ES=0C2E SS=0C2E CS=0C2E IP=0100 NV UP EI PL NZ NA PO NC0C2E:0100 EB06 JMP 0108-u 1000C2E:0100 EB06 JMP 01080C2E:0102 D7 XLAT0C2E:0103 007D00 ADD DI+00,BH0C2E:0106 0000 ADD BX+SI,AL0C2E:0108 A10201 MOV AX,01020C2E:010B 03060401 ADD AX,01040C2E:010F A30601 MOV 0106,AX0C2E:0112 B8004C MOV AX,4C000C2E:0115 CD21 INT 210C2E:0117 E65F OUT 5F,AL0C2E:0119 7D5F JGE 017A0C2E:011B BB5FA1 MOV BX,A15F0C2E:011E 3437 XOR AL,37-r-t

    注意事项

    本文(第2部分汇编语言基础知识.ppt)为本站会员(hyn****60)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开