计算机应用基础 (2)ppt课件.ppt_第1页
计算机应用基础 (2)ppt课件.ppt_第2页
计算机应用基础 (2)ppt课件.ppt_第3页
计算机应用基础 (2)ppt课件.ppt_第4页
计算机应用基础 (2)ppt课件.ppt_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 第六节汇编语言程序设计讲课内容一 概述1 编写汇编语言程序步骤2 判断程序质量的标准3 几种程序结构二 汇编语言程序设计举例 2 一 概述1 编写汇编语言程序步骤2 判断程序质量的标准3 几种程序结构 3 1 编写汇编语言程序步骤分析实际问题 抽象描述问题的模型确定解决模型的算法按算法画出程序流程图按流程图编写程序上机调试 运行程序 4 2 判断程序质量的标准程序的正确性程序的可读性程序的执行时间程序所占内存大小 5 3 几种程序结构顺序结构分支结构循环结构子程结构 6 顺序结构 7 分支结构 8 Y Y N N 分支结构 9 循环结构 当型循环 当条件成立进入循环 直到型循环 直到条件成立退出循环 10 1 多处调用完成同一功能的子程 codeSEGMENTstart CALLsubp CALLsubp CALLsubp MOVAH 4CHINT21HsubpPROC RETsubpENDPcodeENDSENDstart 2 模块化程序设计 codeSEGMENTbegin CALLsub1CALLsub2CALLsub3MOVAH 4CHINT21Hsub1PROC RETsub1ENDPsub2PROC RETsub2ENDPsub3PROC RETsub3ENDPcodeENDSENDbegin 子程结构 注意返回DOS语句位置 11 思考如下程序的执行流程 codeSEGMENTstart CALLsubp CALLsubp MOVAH 4CH INT21HsubpPROC RETsubpENDPMOVAH 4CH 放在此处是不允许的INT21HcodeENDSENDstart 程序执行不到返回DOS功能调用处 最后的结果是死机 12 二 汇编语言程序设计举例例1将寄存器BX中的内容以十六进制形式显示出来 二进制十六进制 例2将键盘输入的十进制数据串转换成其相应大小的数值存放在BX寄存器中 13 有关字符 数码转换的处理1 计算机处理字符时 常用的字符编码是ASCII码 2 数字和字母的ASCII码是一个有序序列数字0 9 30H 39H大写字母A Z 41H 5AH小写字母a z 61H 7AH 14 3 计算机处理信息时 其对象都是二进制数 外设 显示器 打印机 键盘等 用ASCII码与CPU进行信息传送 例如 1 在键盘上按下某一字符键 如 9 键盘接口向键盘缓冲区送去的是该字符的ASCII码 如39H 不是送数字09H 2 在文本方式下 要在显示器上显示某一字符 如 A 须将该字符的ASCII码 如41H 送显示缓冲区 不是送数字0AH 计算机要利用显示器 键盘等外设时 须据程序设计的需要进行有关转换 15 例CPU要处理从键盘输入的某一数据 如键入 1234 需将该数据串进行转换十六进制后才能应用 16 例1将BX寄存器中的内容以十六进制形式显示出来 BX是一个16位寄存器二进制1010100100111110 用十六进显示时 每4位用一个字符显示 共4个其中 0000 0 30H 1010 A 41H0001 1 31H 1011 B 42H 1001 9 39H 1111 F 46H 十六进制A93E 屏幕上的显示 A 9 3 E 对应的ASCII41H39H33H45H 17 算法 取出要显示的某4位 转换为对应的ASCII码 再调用DOS系统功能进行显示 1 对于0000 1001 0 9 先扩展成一个字节 高4位清0 加上30H后 即可得字符 0 9 对应的ASCII码 00000001B 30H 31H00001001B 30H 39H0001B 1 1001B 9 2 对于1010 1111 A F 先扩展成一个字节 高4位清0 加上30H后 还要再加上07H 才能得到 A F 对应的ASCII码00001010B 30H 07H 41H00001111B 30H 07H 46H1010B A 1111B F 18 codeSEGMENTASSUMECS codestart MOVCH 4 字符个数MOVCL 4 循环移位次数next ROLBX CL 取显示位的值MOVDL BL 保存在DL中ANDDL 0FH 清除高4位ADDDL 30H 转变为数字的ASCIICMPDL 39H 大于39H 则应转变JLEprint 为字母A F的ASCIIADDDL 07Hprint MOVAH 2H 显示DL中的字符INT21HDECCH 显示结束 JNZnextMOVAH 4CH 返回DOSINT21HcodeENDSENDstart 19 思考 1 例1采用的是大写字母A F进行显示 若采用小写字符a f进行显示 程序如何改写 1010001110011110 A39E 或 a39e 2 编程将CPU内14个16位寄存器当前的内容分别用十六进制形式显示出来 20 编程将CPU内14个16位寄存器当前的内容分别用十六进制形式显示出来 要点 将上例改写为一个子程 入口参数为BX子程中注意寄存器值的保存和恢复注意 CS IP PSW寄存器值的获取方法 21 例将CPU内14个16位寄存器当前内容分别用16进制形式显示出来 采用DEBUG下R命令的显示顺序 22 listbxPROCPUSHCX 保存寄存器PUSHBXPUSHDXPUSHAXPUSHF POPF 恢复寄存器POPAXPOPDXPOPBXPOPCXRET 子程返回listbxENDPcodeENDSENDstart 用十六进制显示BX内容子程 23 D LIST REG 在DOS下执行程序0000000000FF0BDF00000912000000000BDF0BDF0BEF0BEF00003202D DEBUGLIST REG EXE 利用DEBUG检测结果 R 显示当前寄存器内容AX 0000BX 0000CX 007BDX 0000SP 0000BP 0000SI 0000DI 0000DS 128EES 128ESS 129ECS 129EIP 0000NVUPEIPLNZNAPONC129E 000053PUSHBX G 执行程序00000000007B00000000000000000000128E128E129E129E00007202Programterminatednormally 运行的结果与用R命令显示的结果相同 程序运行结果正确 24 例2将键盘输入的十进制数据串转换成相应大小的十六进制数值存放在BX寄存器中 问题 要转换成1234即04D2h存放在BX中 怎么实现 25 算法一 数值大小 各位值 权值之和1234D 千位 1000 百位 100 十位 10 个位 1 1000 2 100 3 10 4 0000010011010010B 04D2H 26 算法二 数值大小 部分和 10 下一位数值1234D 0 10 1 10 2 10 3 10 4 0000010011010010B 04D2H部分和从0开始 循环次数等于输入的位数 27 28 inputPROCLEADX stringMOVAH 09HINT21HLEADX numMOVAH 0AHINT21HRETinputENDPCODEENDSENDstart 29 change子程序流程图 changePROCLEASI num 2MOVCL num 1MOVCH 0MOVAX 0MOVDI 10next MULDIMOVBH 0MOVBL SI ANDBL 0FHADDAX BXINCSILOOPnextzero MOVBX AXRETchangeENDP 1234D 0 10 1 10 2 10 3 10 4 30 list bx子程序流程图 同前 list bxPROCMOVCH 4MOVCL 4next ROLBX CLMOVDL BLANDDL 0FHADDDL 30HCMPDL 39HJLEprintADDDL 07Hprint MOVAH 2HINT21HDECCHJNZnextRET 子程返回list bxENDPcodeENDSENDstart 31 例2程序存在的问题 1 未处理输入非数字字符的情况2 输入的十进制数范围为0 655353 当输入字符个数为0 直接回车 时 结果错误4 未处理负数情况5 结果的显示未换行Input 1234最后看到的是 0D42t 1234 32 编写子程序的注意事项 注意子程中PUSH POP应成对 否则易造成死机 dataSEGMENTstringDB Hello dataENDScodeSEGMENTASSUMECS code DS datastart MOVAX dataMOVDS AXCALLinputMOVAH 4CHINT21HinputPROCPUSHAXLEADX stringMOVAH 09HINT21HRETinputENDPcodeENDSENDstart 33 例下面程序段 思考是否可以完成AX CX BX DX CODESEGMENTASSUMECS codestart MOVAX dataMOVDS AXPUSHAXPUSHBXCALLsubMOVAH 4CHI

温馨提示

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

评论

0/150

提交评论