| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3594 人关注过本帖
标题:解释下面汇编代码
只看楼主 加入收藏
相思豆
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2016-10-25
结帖率:50%
收藏
 问题点数:0 回复次数:4 
解释下面汇编代码

设计一个小程序, 用次数控制在终端屏幕上输出'0'到'9'十个数字符。



从地址2020H 开始输入下列程序:
2020:MVRD R2,00OA ;送入输出字符个数
2022:MVRD R0,0030 ;“0” 的ASCII 码送寄存器R0
2024:OUT 80 ;输出保存在R0 低位字节的字符
2025:DEC R2 ;输出字符个数减1
2026:JRZ 202E ;判10 个字符输出完否,已完,则转到程序结束处
2027:PUSH R0 ;未完,保存R0 的值到堆栈中
2028:IN 81 ;查询接口状态,判字符串输出完否,
2029:SHR R0 ;
202A:JRNC 2028 ;未完成, 则循环等待
202B:POP R0 ;已完成, 准备输出下一字符并从堆栈恢复R0 的值
202C:INC R0 ;得到下一个要输出的字符
202D:JR 2024 ;转去输出字符
202E:RET
202F:↙
不太了解汇编语言,帮忙解释一下2024:OUT 80,R0低位字节字符指什么,保存R0的值到堆栈怎么理解
搜索更多相关主题的帖子: 寄存器 字符串 接口 
2017-03-01 17:45
shanxidls
Rank: 1
来 自:山西运城
等 级:新手上路
帖 子:12
专家分:0
注 册:2017-5-14
收藏
得分:0 
我是刚入门菜鸟级,顶一下,看看高手解释

近年倒霉走麦场遭遇恐怖已六载跟踪迫害是常事网上捣乱家常饭
2017-05-14 19:56
shanxidls
Rank: 1
来 自:山西运城
等 级:新手上路
帖 子:12
专家分:0
注 册:2017-5-14
收藏
得分:0 
人家都闲太简单,我来练练,说的不对,请指正,我就班门弄斧了。
后面的解释很清楚, 比如输出字符个数A是十六进制的10,10次。
MVRD是将后面的数送入前面的寄存器。
.out当然是输出了,至于80是R0的低字节,我也不懂。
DEC就是后面的数字减一,PUSH R0是将R0的值压入堆栈。IN是输入,IN 81是查询接口状态我不懂。
SHR是逻辑右移,jrnc 2028是当标志位c=0时,转移到2028处执行。POP R0是将R0从堆栈取出。
Inc R0是R0的值加一。jrz是z=1时跳转到后面的地址处执行;JR是无条件转到后面地址处执行。
RET就是结束。磕磕绊绊总算说完了

近年倒霉走麦场遭遇恐怖已六载跟踪迫害是常事网上捣乱家常饭
2017-05-25 18:35
shanxidls
Rank: 1
来 自:山西运城
等 级:新手上路
帖 子:12
专家分:0
注 册:2017-5-14
收藏
得分:0 
补充,OUT和IN是写读端口指令(cpu和外设之间必须通过这两个指令交换数据),
RET是结束子程序,返回主程序。

近年倒霉走麦场遭遇恐怖已六载跟踪迫害是常事网上捣乱家常饭
2017-05-26 11:26
shanxidls
Rank: 1
来 自:山西运城
等 级:新手上路
帖 子:12
专家分:0
注 册:2017-5-14
收藏
得分:0 
回复 3楼 shanxidls
POP R0是取栈顶(一次取一个字?)到段寄存器R0。答了这一小段题,错误百出。见笑了

近年倒霉走麦场遭遇恐怖已六载跟踪迫害是常事网上捣乱家常饭
2017-05-29 19:54
快速回复:解释下面汇编代码
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.053269 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved