原文地址http://blog.sina.com.cn/s/blog_4b7bd3380100a76z.html
1 DATAS SEGMENT 2 STR DB"please input a string:$" 3 BUF DB 20 4 DB ? 5 DB 20 DUP (?) 6 CRLF DB 0AH,0DH,"$";此处输入数据段代码 7 DATAS ENDS 8 STACKS SEGMENT STACK 9 DB 200 DUP(?) ;此处输入堆栈段代码 10 STACKS ENDS 11 12 CODES SEGMENT 13 ASSUME CS:CODES,DS:DATAS,SS:STACKS 14 START: MOV AX,DATAS 15 MOV DS,AX 16 LEA DX,STR 17 MOV AH,9 18 INT 21H 19 MOV AH,10 20 LEA DX,BUF 21 INT 21H 22 LEA DX,CRLF 23 MOV AH,9 24 INT 21H 25 MOV CL,BUF+1 26 LEA SI,BUF+2 27 NEXT: MOV DL,[SI] 28 MOV AH,2 29 INT 21H 30 INC SI 31 DEC CL 32 JNZ NEXT;此处输入代码段代码 33 MOV AH,4CH 34 INT 21H 35 CODES ENDS 36 END START
以上是从键盘输入字符串并输出该字符串的简单汇编程序
以下是整理的对上面程序的部分解释:
BUF:键盘缓冲区BUF。
DB:定义变量的类型为字节类型。
DB 20:表示缓冲区能容纳20个字符。
DB 200 DUP(?)中的问号:不对分配的存储单元初始化。

这篇博客介绍了一个简单的汇编程序,用于从键盘接收20个字符的字符串并将其显示在屏幕上。文章详细解释了程序中的关键指令和数据结构,如键盘缓冲区、数据段寄存器(DS)、代码段寄存器(CS)、堆栈段寄存器(SS),以及如何使用MOV、LEA、CL、SI等指令。讨论了如何将2号DOS调用改为9号调用以优化字符串输出,并给出了简化后的代码。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



