使用DOS中断字符串输入和显示输入MASM
发布时间:2020-12-14 02:08:06 所属栏目:Windows 来源:网络整理
导读:在MASM中,我创建了一个缓冲变量来保存键盘输入的用户字符串.我坚持如何将字符串输入保存到该缓冲区变量中.我没有任何像irvine那样链接的库,并希望用DOS中断来实现.到目前为止,我有一些东西 .model small .stack 100h .databuff db 25 dup(0),10,13lbuff EQU
在MASM中,我创建了一个缓冲变量来保存键盘输入的用户字符串.我坚持如何将字符串输入保存到该缓冲区变量中.我没有任何像irvine那样链接的库,并希望用DOS中断来实现.到目前为止,我有一些东西
.model small .stack 100h .data buff db 25 dup(0),10,13 lbuff EQU ($- buff) ; bytes in a string .code main: mov ax,@data mov ds,ax mov ah,0Ah ; doesn't work mov buff,ah ; doesn't seem right int 21h mov ax,4000h ; display to screen mov bx,1 mov cx,lbuff mov dx,OFFSET buff int 21h mov ah,4ch int 21h end main 我假设使用0Ah是正确的,因为它是用于读取缓冲字符的输入数组. 解决方法
我对您的代码进行了一些更改.首先,“buff”变量需要三级格式(允许的最大字符数,输入字符数的另一个字节,以及缓冲区本身),因为这是0AH所需的服务.为了使用服务0AH我添加了“偏移buff”(正如沃尔夫冈所说).这里是:
.model small .stack 100h .data buff db 26 ;MAX NUMBER OF CHARACTERS ALLOWED (25). db ? ;NUMBER OF CHARACTERS ENTERED BY USER. db 26 dup(0) ;CHARACTERS ENTERED BY USER. .code main: mov ax,ax ;CAPTURE STRING FROM KEYBOARD. mov ah,0Ah ;SERVICE TO CAPTURE STRING FROM KEYBOARD. mov dx,offset buff int 21h ;CHANGE CHR(13) BY '$'. mov si,offset buff + 1 ;NUMBER OF CHARACTERS ENTERED. mov cl,[ si ] ;MOVE LENGTH TO CL. mov ch,0 ;CLEAR CH TO USE CX. inc cx ;TO REACH CHR(13). add si,cx ;NOW SI POINTS TO CHR(13). mov al,'$' mov [ si ],al ;REPLACE CHR(13) BY '$'. ;DISPLAY STRING. mov ah,9 ;SERVICE TO DISPLAY STRING. mov dx,offset buff + 2 ;MUST END WITH '$'. int 21h mov ah,4ch int 21h end main 当0AH从键盘捕获字符串时,它以ENTER(字符13)结束,这就是为什么,如果要捕获25个字符,则必须指定26. 要知道用户输入的字符数(长度),请访问第二个字节(偏移buff 1).不包括ENTER,因此,如果用户键入8个字符和ENTER,则第二个字节将包含数字8,而不是9. 输入的字符从偏移buff 2开始,当字符13出现时它们结束.我们使用它来增加buff 2 1的长度,用’$’代替chr(13).现在我们可以显示字符串了. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- windows-server-2008 – 无密码文件共享仍需要登录
- windows – 防止整个屏幕更新
- windows – Haskell,GHC,win32,cairo
- Windows Server 2012 克隆修改SID
- Windows-10通用 – 应用程序认证因PreLaunch测试失败
- 值为NULL的列是否会影响Microsoft SQL Server的性能?
- Windows 10 Creators Update更改了PropertyGrid控件的样式
- 访问Windows主机上的docker容器URL
- active-directory – Microsoft Active Directory端口
- windows-server-2008-r2 – Windows 2008 R2文件服务器群集
推荐文章
站长推荐
- 如何在Windows 7上安装ImageMagick(2)
- windows-server-2008 – 在Windows Server 2008中
- 为vagrant windows box更正“config.ssh.shell”
- windows-server-2003 – 运行我自己的专用服务器
- WiX:在安装MSI期间显示“复制新文件文件:[1],目
- window的渊源、发展过程、趋势
- 调试 – 可以在目标平台上的交叉编译的win32应用
- Windows安装程序 – 使用Visual Studio安装项目设
- windows – 控制台FTPS(不是SFTP)客户端?
- windows – 扩展现有程序的功能我没有源代码
热点阅读