- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
微机-15程序设计
§4—3 汇编语言程序设计 3.1 汇编语言程序编制步骤 分析问题,确定算法 准备数据、数据表示范围、细分步骤、标志位 根据算法设计程序框图 自上而下;逐步细化;正确合理地使用寄存器;合理分配存储空间 编写源程序,作静态检查,注意程序分支处理! 上机调试 检查算法 编制程序说明文件 设计思想;参数定义;内存分配;程序清单 3.2 8086汇编语言程序的分段结构 存储空间分段管理,所以,源程序必须用段定义伪指令进行分段,使代码;数据;堆栈等分开存储,既有利于内存应用,程序安全可靠,又使程序清晰明了。总的分段数目不限,各段顺序自由,但当前段只有4段(代码;数据;堆栈;附加)。 一般程序所需堆栈较小时,可以不自己设置堆栈段,而直接利用操作系统的堆栈,这时忽略连接过程中出现的警告: WARNING:NO STACK SEGMENT THERE WAS 1 ERROR DETECTED 各段的段基址在程序调入内存时确定 3.4 程序设计的模块化和结构化 模块化:将大任务化整为零,分出层次,独立编制. 多人分工,加快速度,易读易懂,调试和修改容易,减少重复劳动.但要处理好模块与模块间的通信(连接信息和参数传递) 结构化:任何程序都可以由以下三种基本结构的组合而成 顺序结构;分支结构;循环结构 3.5 上机过程 DOS是汇编语言在PC上的支撑软件 编辑各个源程序模块 EDIT.EXE 写字板 .ASM扩展名 LP.ASM 汇编源程序 CMASM LP.ASM 生成XXX.OBJ和[XXX.LST]文件(LP.OBJ),显示如下信息: xxxxxx Warning errors xxxxxx Sever errors 用EDIT XXXX.LST查看具体错误位置和类型,重新编辑、修改后再汇编,直到不再报错。 连接 CLINK LP[.OBJ] 生成XXXX.EXE(LP.EXE) .MAP和库文件.LIB一般不需要 多目标模块需要连接时: CLINK 模块名1+模块名2+……+模块名n 调试程序 用DEBUG.COM来观察程序的运行过程,查找程序的逻辑错误。如有问题,则用编辑程序修改后再重复做以上的步骤。 运行程序 CLP 3.6 汇编语言程序的调试技术(DEBUG.COM使用) 进入与退出 CDEBUG↙ -Q↙ ;”-”是DEBGU的提示符 调试状态默认输入为十六进制! 装入被调试程序 CDEBUG XXX.EXE↙ -N XXX.EXE ↙ ;文件命名命令 -L ↙ ;文件装入命令 显示命令 -D [地址]↙ ;显示从地址开始的80H字节内存 -D [范围]↙ ;显示地址范围内的内存内容 -D DS:100 ↙ ;(DS)+100H -D 100 ↙ ;(上次所用段寄存器)+100H -D DS:100 10F↙ -R↙ ;显示和修改寄存器的内容 FR用状态字符表示: OF DF IF SF ZF AF PF CF 置位1 OV DN EI NG ZR AC PE CY 复位0 NV UP DI PL NZ NA PO NC 修改寄存器内容 -R DS ↙ DS 0962 ;DS原有内容 : 10a2↙ ;修改后的DS内容 修改内存单元内容 -E [地址] [单元内容表] ↙ -E ds:10 eb ‘ABC’ 34 ↙ 反汇编 -U [地址] ↙ ;任何数据都可以反汇编,但只有代码段有意义! -U [范围]↙ -U CS:0 12 ↙ 汇编 -A [地址] ↙ ;回车后输入汇编语句 程序运行 -G [=地址],[地址1],[地址2],…… ↙ 从“=地址”开始执行程序,其后的地址是设置的断点。 G 命令不带参数表示从当前指令执行到程序结束! -T[=地址],[值] ↙ ;跟踪方式 从“=地址”开始执行程序,“值”是一次执行的指令条数。 -T=D4 ↙ T命令进入子过程和中断服务程序内部! -P P命令连续执行循环指令,且将CALL XXXX和INT n当一条指令执行,不进入子过程和中断服务程序内部。 9.统计16位二进制数X中1的个数,程序框图如下,*和**处应填入的操作是什么? 10.将一位十六进制数转换成ASCII 码
文档评论(0)