初学汇编,请教几个问题
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 的代码部分贴上来.
习题方面, 教程还算可以的话, 每个章节后面的练习应该是不错的.