版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
衔接篇程序框架第1页,课件共34页,创作于2023年2月硬指令和伪指令硬指令——使CPU产生动作、并在程序执行时才处理的语句。伪指令(Directive)——不产生CPU动作、在程序执行前由汇编程序处理的说明性语句,例如,数据说明、变量定义等等。伪指令与具体的处理器类型无关,但与汇编程序的版本有关。我们采用微软宏汇编程序MASM6.15第2页,课件共34页,创作于2023年2月一、汇编语言程序的开发本节从汇编语言程序的语句格式出发,给出第一个示范性的汇编语言源程序,并说明汇编语言程序的过程:编辑汇编连接调试即汇编语言程序的开发方法第3页,课件共34页,创作于2023年2月1汇编语言程序的语句格式⑴执行性语句——由硬指令构成的语句,它通常对应一条机器指令,出现在程序的代码段中:标号:硬指令助记符操作数,操作数 ;注释⑵说明性语句——由伪指令构成的语句,它通常指示汇编程序如何汇编源程序:名字伪指令助记符参数,参数,… ;注释第4页,课件共34页,创作于2023年2月
MOVCX,0
;传送指令,具有2个操作数DELAY: NOP ;空操作指令,没有操作数,带有标号
LOOPDELAY ;循环指令,标号DELAY说明转移位置BUFFER DB1,2,3,4,5,6,7
;数据定义伪指令,在主存中开辟7个连续的字节单元,初值依次为1~7,BUFFER表示首地址汇编语言语句实例第5页,课件共34页,创作于2023年2月标号、名字与标识符标号是反映硬指令位置(逻辑地址)的标识符,后跟一个冒号分隔名字是反映伪指令位置(逻辑地址)和属性的标识符,后跟空格或制表符分隔,没有一个冒号标识符(Identifier)一般最多由31个字母、数字及规定的特殊符号(如_、$、?、@)组成,不能以数字开头。默认情况下,汇编程序不区别标识符中的字母大小写一个程序中,每个标识符的定义是唯一的,还不能是汇编语言采用的保留字第6页,课件共34页,创作于2023年2月保留字保留字(ReservedWord)是汇编程序已经利用的标识符,主要有:硬指令助记符——例如:MOV、ADD伪指令助记符——例如:DB、EQU操作符——例如:OFFSET、PTR寄存器名——例如:AX、CS预定义符号——例如:@data
汇编语言大小写不敏感第7页,课件共34页,创作于2023年2月注释语句中由分号“;”开始的部分为注释内容,用以增加源程序的可读性必要时,一个语句行也可以由分号开始作为阶段性注释汇编程序在翻译源程序时将跳过该部分,不对它们做任何处理第8页,课件共34页,创作于2023年2月2汇编语言的程序格式完整的汇编语言源程序由段组成一个汇编语言源程序可以包含若干个代码段、数据段、附加段或堆栈段,段与段之间的顺序可随意排列需独立运行的程序必须包含一个代码段,并指示程序执行的起始点,一个程序只有一个起始点所有的可执行性语句必须位于某一个代码段内,说明性语句可根据需要位于任一段内通常,程序还需要一个堆栈段第9页,课件共34页,创作于2023年2月汇编语言源程序源程序分别用两种格式书写第一种格式从MASM5.0开始支持简化段定义格式第二种格式MASM5.0以前就具有完整段定义格式Hello,Everybody!程序功能第10页,课件共34页,创作于2023年2月;01a.asm(文件名)stack segmentstack ;定义堆栈段
dw512dup(?) ;堆栈段有512字(1024字节)空间stack ends ;堆栈段结束data segment ;定义数据段string db’Hello,Everybody!’,0dh,0ah,’$’data endscode segment’code’ ;定义代码段
assumecs:code,ds:data,ss:stackstart: movax,data ;建立DS段地址
movds,ax例:完整段定义格式第11页,课件共34页,创作于2023年2月
movdx,offsetstring movah,9 int21h movax,4c00h int21h ;利用功能调用返回DOScode ends ;代码段结束
endstart ;汇编结束,同时指明程序起始点例:完整段定义格式第12页,课件共34页,创作于2023年2月;SampleA.ASMstack segmentstack dw512dup(?)stack endsdata segment ... ;在数据段定义数据data endscode segment’code’ assumecs:code,ds:data,ss:stackstart: movax,data movds,ax ... ;在代码段填入指令序列
movax,4c00h int21hcode ends... ;子程序代码
endstart完整段定义格式
MASM5.x支持第13页,课件共34页,创作于2023年2月;01b.asm(文件名)
.modelsmall ;定义程序的存储模式
.stack ;定义堆栈段
.data ;定义数据段string db’Hello,Everybody!’,0dh,0ah,’$’ ;在数据段定义要显示的字符串
.code ;定义代码段
.startup ;程序起始点,建立DS、SS movdx,offsetstring ;指定字符串
movah,9 int21h ;利用功能调用显示信息
.exit0 ;程序结束点,返回DOS end ;汇编结束例:简化段定义格式第14页,课件共34页,创作于2023年2月;SampleB.ASM .modelsmall .stack .data ... ;在数据段定义数据
.code .startup ;(注1)
... ;在代码段填入指令序列
.exit0 ;(注2)
... ;子程序代码
end ;(注3)简化段定义格式
MASM6.x支持第15页,课件共34页,创作于2023年2月;SampleC.ASM .modelsmall .stack .data ... ;在数据段定义数据
.codestart:movax,@data movds,ax ... ;在代码段填入指令序列
movax,4c00h int21h ... ;子程序代码
endstart简化段定义格式
MASM5.x支持第16页,课件共34页,创作于2023年2月TITLE A04ASM1(EXE)MoveandaddoperationsSTACK SEGMENTPARASTACK'Stack' …….STACK ENDS;----------------------------------------------DATASEG SEGMENTPARA'Data'……DATASEG ENDS;-----------------------------------------------CODESEG SEGMENTPARA'Code'MAIN PROCFAR ASSUMESS:STACK,DS:DATASEG,CS:CODESEG MOVAX,DATASEG ;Setaddressofdata MOVDS,AX ;segmentinDS……. MOV AX,4C00H ;Endprocessing INT 21HMAIN ENDP ;EndofprocedureCODESEG ENDS ;Endofsegment END MAIN ;Endofprogram程
序
的
框
架
结
构
(1)第17页,课件共34页,创作于2023年2月TITLE A04ASM2(EXE)Moveandaddoperations;----------------------------------------------------- .MODELSMALL .STACK64 ;Definestack .DATA ;Definedata…….;-----------------------------------------------------
.CODE ;DefinecodesegmentMAIN PROCFAR MOV AX,@data ;Setaddressofdata MOV DS,AX ;segmentinDS
……. MOV AX,4C00H ;Endprocessing INT 21HMAIN ENDP ;Endofprocedure END MAIN ;Endofprogram程
序
的
框
架
结
构
(2)第18页,课件共34页,创作于2023年2月3汇编语言程序的开发过程编辑文本编辑器,如EDIT.COM源程序:文件名.asm汇编汇编程序,如MASM.EXE目标模块:文件名.obj连接连接程序,如LINK.EXE可执行文件:文件名.exe调试调试程序,如DEBUG.EXE应用程序错误错误错误错误第19页,课件共34页,创作于2023年2月源程序:.asm目标文件:.obj可执行文件:.exe编辑源程序.asm.asm汇编.obj连接.exe选项.LST.CRF第20页,课件共34页,创作于2023年2月编写注意编写建议:对任一功能段,编写注释程序识别一般不区分大小写可读性强,通常所有汇编指令用大写,而注释全部用小写第21页,课件共34页,创作于2023年2月二、DEBUG程序跟踪调试第22页,课件共34页,创作于2023年2月基本命令的使用DEBUG是我们学习汇编语言的调试工具。所有的命令不区分大小写所有的输入数据都默认十六进制的,不用H结尾C:\>DEBUG-C:\>DEBUGfile.exe-第23页,课件共34页,创作于2023年2月R检查寄存器C:\>DEBUG-RAX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0AC4ES=0AC4SS=0AC4CS=0AC4IP=0100NVUPEIPLNZNAPONC0AC4:0100F6C280TESTDL,80第24页,课件共34页,创作于2023年2月RF标记寄存器-RF列举出标志寄存器的各个位状态OF 溢出(是/否) OV NVDF 方向(减量/增量) DN UPIF 中断(允许/关闭) EI DISF 符号(负/正) NG PLZF 零(是/否) ZR NZAF 辅助进位(是/否) AC NAPF 奇偶(偶/奇) PE POCF 进位(是/否 CY NC第25页,课件共34页,创作于2023年2月D检查内存内容使用的格式:
-Dstartingaddress[length]开始的地址:segment:offset采用默认DS的偏移地址offset例如:-D0000-DDS:0000-D0100L5第26页,课件共34页,创作于2023年2月E编辑机器指令程序C:\>DEBUG-ECS:100B82301052500-ECS:1068BD803D88BCB-ECS:10C2bc82bc0ebee-DCS:1000B00:0100B823010525008BD8-03D88BCB2BC82BC0.#..%.......+.+.0B00:0110EBEEC3750580CF80-EBD43C0D3400EF0A...u......<.4...0B00:0120013A0602967503E9-1701B23A3814751D.:...u.....:8.u.第27页,课件共34页,创作于2023年2月U反汇编采用U反汇编机器程序例如,反汇编刚才的机器指令-U1000B05:0100B82301MOVAX,01230B05:0103052500ADDAX,00250B05:01068BD8MOVBX,AX0B05:010803D8ADDBX,AX0B05:010A8BCBMOVCX,BX0B05:010C2BC8SUBCX,AX0B05:010E2BC0SUBAX,AX0B05:0110EBEEJMP01000B05:01123EDS:0B05:01133299C606XORBL,[BX+DI+06C6]0B05:01173499XORAL,99第28页,课件共34页,创作于2023年2月T跟踪执行指令命令T执行CS:IP指向的一条指令-RAX=0000BX=0290CX=0148DX=0000SP=FFFEBP=0000SI=0000DI=0000DS=0B05ES=0B05SS=0B05CS=0B05IP=0100NVUPEIPLZRNAPENC0B05:0100B82301MOVAX,0123-TAX=0123BX=0290CX=0148DX=0000SP=FFFEBP=0000SI=0000DI=0000DS=0B05ES=0B05SS=0B05CS=0B05IP=0103NVUPEIPLZRNAPENC0B05:0103052500ADDAX,0025-TAX=0148BX=0290CX=0148DX=0000SP=FFFEBP=0000SI=0000DI=0000DS=0B05ES=0B05SS=0B05CS=0B05IP=0106NVUPEIPLNZNAPENC0B05:01068BD8MOVBX,AX-TAX=0148BX=0148CX=0148DX=0000SP=FFFEBP=0000SI=0000DI=0000DS=0B05ES=0B05SS=0B05CS=0B05IP=0108NVUPEIPLNZNAPENC0B05:010803D8ADDBX,AX第29页,课件共34页,创作于2023年2月R改变寄存器的内容命令R改变寄存器的内容,在提示符下敲入寄存器的值格式
Rregname-RAX=0000BX=0290CX=0148DX=0000SP=FFFEBP=0000SI=0000DI=0000DS=0B05ES=0B05SS=0B05CS=0B05IP=0100NVUPEIPLZRNAPENC0B05:0100B82301MOVAX,0123-RAXAX0000:1234-RAX=1234BX=0290CX=0148DX=0000SP=FFFEBP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- JJF 2181-2024塑料薄膜和薄片氧气透过率测试仪校准规范
- 2024年版简易个人向公司借款合同模板
- 2024年版权授权费用协议
- 杞县特色小镇投资建设研究报告
- 硫酸盐项目申请报告可行性研究报告
- 中秋节假日作文大全10篇
- 水浒传每章读书笔记
- 双十一促销活动策划方案8篇
- 保护树木的建议书模板汇编十篇
- 法律执法课程设计
- 普外科医疗组长竞聘演讲
- 北京市朝阳区2022-2023学年三年级上学期英语期末试卷
- 哔哩哔哩MATES人群资产经营白皮书【哔哩哔哩】
- 【历史】第一、二单元测试题2024~2025学年统编版七年级历史上册
- 婚姻家庭规划
- 认识实习报告(10篇)
- 【MOOC】内科护理学-中山大学 中国大学慕课MOOC答案
- 2024年商业地产买卖合同样本
- 2023-2024学年广东省深圳市福田区七年级(上)期末英语试卷
- 双碳全景系列培训第一章碳达峰、碳中和
- 【企业盈利能力探析的国内外文献综述2400字】
评论
0/150
提交评论