暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
汇编语言常用子程序.docx
41
5页
1次
2024-08-09
25墨值下载
汇编语言常用子程序
1、拆字与拼字:
【例 1】将 GR0 中的四位 BCD 码从高到低依次存放到 GR2 所指的四个内存单元中。
 START
 LEA GR3,4 ;循环计数器
 L1 ST GR0,REG ;保护其余几位 BCD
 AND GR0,C000F ;屏蔽高 3 位,留下最低 1 BCD
 ST GR0,3,GR2 ;将此位 BCD 码存放到 GR2 所指第四个内存单元
 LD GR0,REG ;恢复其余几位 BCD
 SRL GR0,4 ;将已处理过的此位 BCD 码移出
 LEA GR2.-1,GR2 ;地址指针减 1
 LEA GR3,-1,GR3 ;循环计数器减 1
 JNZ L1 ;未处理完,继续
 RET
 C000F DC #000F ;十六进制常数,屏蔽高 3 BCD 码用
 REG DS 1 ;暂存单元
 END
  2 GR2 BCD
GR0 中 。
 START
 LEA GR0,0 GR0 0
 LEA GR3,4 ;循环计数器
 L1 SLL GR0,4 ;将已处理过的 BCD 码移到高位
 LD GR1,0,GR2 GR1 用作临时工作寄存器
 AND GR1,C000F ;屏蔽高 12
 ST GR1,0,GR2 ;对内存单元中的 BCD 码预处理
 ADD GR0,0,GR2 ;将已处理过的此位 BCD 码加到 GR0 低位
 LEA GR2.1,GR2 ;地址指针指向下一位 BCD
 LEA GR3,-1,GR3 ;循环计数器减 1
 JNZ L1 ;未处理完,继续
 RET
 C000F DC #000F ;十六进制常数,屏蔽高 12 位二进制数
 END
2、数字与 ASCII 码之间的相互转换:
 十进制数字 09 ASCII 码是 30H39H 所以只要将十进制数(BCD )加 30H
是对应的 ASCII 码。
十六进制数转换成 ASCII 可分成两段, 09 ASCII 30H39H 即加 30H A
F ASCII 码是 41H45H ,即加 37 H
 【例 1】将 GR0 中的四位 BCD 码化成 ASCII 码从高到低依次存放到字符串变量 STR 中。
 START
 LEA GR2,3 ;相对于 STR 首址的地址指针
 LEA GR3,4 ;循环计数器
 L1 ST GR0,REG ;保护其余几位 BCD
 AND GR0,C000F ;屏蔽高 3 位,留下最低 1 BCD
 ADD GR0,C30 ;转换成 ASCII
 ST GR0,STR,GR2 ;将 ASCII 码存放到 GR2 所指第四个内存单元
 LD GR0,REG ;恢复其余几位 BCD
 SRL GR0,4 ;将已处理过的此位 BCD 码移出
 LEA GR2.-1,GR2 ;地址指针减 1
 LEA GR3,-1,GR3 ;循环计数器减 1
 JNZ L1 ;未处理完,继续
 RET
 C000F DC #000F ;十六进制常数,屏蔽高 3 BCD 码用
 C30 DC #30 ;十六进制常数 30
 STR DS 4
 REG DS 1 ;暂存单元
 END
 【例 2】将 GR0 中的 16 位二进制数化成四位十六进制数 ASCII 码从高到低依次存放到
字符串变量 STR 中。
 START
 LEA GR2,3 ;相对于 STR 首址的地址指针
 LEA GR3,4 ;循环计数器
 L1 ST GR0,REG ;保护其余几位二进制数
 AND GR0,C000F ;屏蔽高 12 位,留下最低 4 位二进制数
 CPL GR0,C10 < 10 否?
 JMI L2 < 10 跳过加 7 ,只加 30H
 ADD GR0,C7 ;≥ 10,加 30H 前先加上 7
 L2 ADD GR0,C30 ;加上 30H
 ST GR0,STR,GR2 ;将 ASCII 码存放到 GR2 所指第四个内存单元
 LD GR0,REG ;恢复其余几位二进制数
 SRL GR0,4 ;将已处理过的此 4 位二进制数移出
 LEA GR2.-1,GR2 ;地址指针减 1
 LEA GR3,-1,GR3 ;循环计数器减 1
 JNZ L1 ;未处理完,继续
 RET
 C000F DC #000F ;十六进制常数,屏蔽屏蔽高 12 位二进制数
 C30 DC #30 ;十六进制常数 30
 C10 DC 10 ;十进制常数 10
 C7 DC 7 ;常数 7
 STR DS 4
 REG DS 1 ;暂存单元
 END
 【例 3】将字符串 STR 中的四位十六进制数的 ASCII 码化成 16 位二进制数放到 GR0 中 。
 START
 LEA GR0,0 GR0 0
 LEA GR2,0 ;相对于 STR 首址的地址指针
 LEA GR3,4 ;循环计数器
 L1 SLL GR0,4 ;将已处理过的十六进制数移到高位
 LD GR1,STR,GR2 GR1 用作临时工作寄存器
 AND GR1,C00FF ;屏蔽高 8
 SUB GR1,C30 ;减去 30H
 CPL GR1,C0A < 10 否?
 JMI L2 < 10 ,完成转换
 SUB GR1,C7 ;≥ 10,再减去 7
of 5
25墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜