当前位置: 网学 > 编程文档 > 汇编语言 > 正文

Casl汇编语言辅导:二、汇编语言常用子程序

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/18
下载{$ArticleTitle}原创论文样式

【例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 GR0,C30 ;减去30H
  CPL GR0,C0A ;< 10 否?
  JMI L2 ;< 10 ,完成转换
  SUB GR0,C7 ;≥ 10,再减去 7
L2 ST GR1,STR,GR2 ;将 STR 中的 ASCII 码转换成十六进制数
  ADD GR0,STR,GR2 ;将此位十六进制数加到 GR0 低位
  LEA GR2.1,GR2 ;地址指针指向下一位 ASCII 码
  LEA GR3,-1,GR3 ;循环计数器减 1
  JNZ L1 ;未处理完,继续
  RET    
C00FF DC #00FF ;十六进制常数,屏蔽高 8 位用
C30 DC #30 ;十六进制常数 30
C0A DC #0A ;十六进制常数 0A
C7 DC 7 ;常数 7
STR DS 4  
  END    

3、利用加减法及移位指令做乘法:

1)左移指令可将操作数乘 2 的整数次方(2、4、8、16);右移指令可将操作数除以 2 的整数次方。

若操作数是无符号数,用逻辑移位指令;若操作数是有符号数,用算术移位指令。

【例1】将 GR0 中的二进制数乘以 8。

  SLL GR0,3

【例2】将 GR0 中的带符号二进制数除以 4。

  SRA GR0,2

2)将移位指令和加减法结合起来可完成乘数不是 2 的整数次方的乘法运算。

【例1】将 GR0 中的二进制数乘以 10。

  START  
  SLL GR0,1
  ST GR0,REG
  SLL GR0,2
  ADD GR0,REG
  RET  
REG DS 1
  END  

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号