首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

初学汇编,请问几个小问题

2012-02-20 
初学汇编,请教几个问题buf db8db?db8dup(?)pushcxdeccxleasi,buf+2tt1:incsilooptt1popcx以上是程序的片断

初学汇编,请教几个问题
buf db     8
          db   ?
          db   8   dup(?)

push   cx
dec   cx
lea   si   ,buf+2  
    tt1:   inc   si
                loop   tt1
pop   cx  

以上是程序的片断(书上的练习),该程序用buf+1存数据长度(是怎么取长度的?)
还有 inc   si 起到什么作用(该段是要将数值转换为ASCII)

本人初学汇编想问一下有什么好的习题可以做


[解决办法]
buf 这个数据结构规范, 是 int21h 的 0ah 字符串输入功能使用的吧.
buf+1 中的数据长度是由 0ah 功能根据实际输入的字符数填充的. 调用该功能后即可直接取该字节来获得输入的字符的格式. 要注意的是, 虽然缓冲区要求给输入时的回车留个位置, 并且, 回车字符也确实被填进了缓冲区中, 但这个数据长度却是不包括那个回车符的.

inc si 在你这个不完全的代码中, 推测的话, 比较可能是通过不停进 1 的方式, 使 si 执行输入字符串的最后一个字符, 虽然该功能有更简单的方法. 但是, 这里没有看到对 cx 置值, 所以只是推测, 你没有将 buf+1 设置给 cx 的代码部分贴上来.

习题方面, 教程还算可以的话, 每个章节后面的练习应该是不错的.

热点排行