首页 > 汇编语言 > 汇编语言MS-Windows编程
阅读:310
汇编语言ReadConsole函数:读取文本输入并将其送入缓冲区
函数 ReadConsole 为读取文本输入并将其送入缓冲区提供了便捷的方法。其原型如下所示:
在调用 ReadConsole 时,输入缓冲区还要包含两个额外的字节用来保存行结束字符。如果希望输入缓冲区里是空字节结束字符串,则用空字节来代替内容为 ODh 的字节。Irvine32.lib 的过程 ReadString 就是这样操作的。
ReadConsole PROTO,
hConsoleInput: HANDLE z ;输入句柄
lpBuffer:PTR BYTE, ;缓冲区指针
nNumberOfCharsToRead:DWORD, ;读取的字符数
lpNumberOfCharsRead:PTR DWORD, ;指向读取字节数的指针
lpReserved:DWORD ;未使用
在调用 ReadConsole 时,输入缓冲区还要包含两个额外的字节用来保存行结束字符。如果希望输入缓冲区里是空字节结束字符串,则用空字节来代替内容为 ODh 的字节。Irvine32.lib 的过程 ReadString 就是这样操作的。
【示例】要读取用户输入的字符,就调用 GetStdHandle 来获得控制台标准输入句柄,再使用该句柄调用 ReadConsoleo 下面的 ReadConsole 程序演示了这个方法。注意:Win32 API 函数不会保存 EAX、EBX、ECX 和 EDX 寄存器。
提示:Win32 API 调用与 Irvine32 链接库兼容,因此在调用 Win32 函数的同时还可以调用 DumpRegs
; 从控制台读取 (ReadConsole.asm) INCLUDE Irvine32.inc BufSize = 80 .data buffer BYTE BufSize DUP(?),0,0 stdInHandle HANDLE ? bytesRead DWORD ? .code main PROC ; 获取标准输入句柄 INVOKE GetStdHandle, STD_INPUT_HANDLE mov stdInHandle,eax ; 等待用户输入 INVOKE ReadConsole, stdInHandle, ADDR buffer, BufSize, ADDR bytesRead, 0 ; 显示缓冲区 mov esi,OFFSET buffer mov ecx,bytesRead mov ebx,TYPE buffer call DumpMem exit main ENDP END main如果用户输入 “abcdefg”,程序将生成如下输出。缓冲区会插入 9 个字节:“abcdefg” 再加上 ODh 和 OAh,即用户按下 Enter 键时产生的行结束字符。bytesRead 等于 9:
所有教程
- socket
- Python基础教程
- C#教程
- MySQL函数
- MySQL
- C语言入门
- C语言专题
- C语言编译器
- C语言编程实例
- GCC编译器
- 数据结构
- C语言项目案例
- C++教程
- OpenCV
- Qt教程
- Unity 3D教程
- UE4
- STL
- Redis
- Android教程
- JavaScript
- PHP
- Mybatis
- Spring Cloud
- Maven
- vi命令
- Spring Boot
- Spring MVC
- Hibernate
- Linux
- Linux命令
- Shell脚本
- Java教程
- 设计模式
- Spring
- Servlet
- Struts2
- Java Swing
- JSP教程
- CSS教程
- TensorFlow
- 区块链
- Go语言教程
- Docker
- 编程笔记
- 资源下载
- 关于我们
- 汇编语言
- 大数据
- 云计算
- VIP视频