+ -
当前位置:首页 → 问答吧 → 汇编初学者小问题

汇编初学者小问题

时间:2011-08-12

来源:互联网

就是,汇编键盘的输入输出,是不是我可以有三种输入方式,就是dos,bios,还有直接读取端口的方式
求解用这三个方式输入一个字符然后在输出到显示器上,不用太麻烦的程序
多谢了

作者: quan958201599   发布时间: 2011-08-12

我的意思是以前我们学习c或者其他的时候都可以从实现简单的输入输出开始,但是对于汇编的输入输出不是很了解,尤其是不知道,在用int 21中断以后,读取的字符放在哪了,是在中断前读取还是中断后读取

作者: quan958201599   发布时间: 2011-08-12

Assembly code

;这段代码的功能是,接受用户输入,但是不回显示,直到按下回车键才回显, 按下0键退出程序
;汇编方法
;ml /AT isme2.asm
;link16 /TITY isme2;

code segment public
assume cs:code, ds:code
    org 100h
start:    jmp begin
msg1    db 'Type anything,followed by enter; type 0 to quit.',13,10,'$'
secret db 256 dup(?) ;输入的字符放在这里

begin:
    ;设置ds (ds=cs)
    mov ax,cs
    mov ds,ax
    ;显示提示信息
    mov dx,offset msg1
    mov ah,09h
    int 21h

NewLine:
    
    mov cx,253 ;每次回车前,键入的字符数不要超过253个
    xor bx,bx
    
nextChar:
    mov ah,07h ;请求直接控制台输入但不回显
    int 21h    ;调用DOS
    cmp al,0dh ;输入的是不是回车符?
    je disp    ;如果是就跳转(显示串)
    cmp al,30h ;输入的是不是字符0?
    je quit    ;是就退出
    
    mov secret[bx],al ;以上都不是就把输入的字符放进缓冲区,备用
    inc bx            ;缓冲区指针加1
    loop nextChar     ;如果cx>0,就再接收下一个
    
disp:
    mov secret[bx],13   ;追加回车符
    inc bx
    mov secret[bx],10   ;换行换行符
    inc bx
    mov secret[bx],'$'  ;追加结束符
    mov dx,offset secret;取缓冲区(这里就是串)的首地址
    mov ah,09h          ;请求在标准输出设备上显示串
    int 21h             ;调用DOS
    jmp NewLine
    
quit:    
    mov ah,00h
    int 21h
    
code ends
end start

作者: gsy999   发布时间: 2011-08-12

[code=Assembly][/code];使用masm5.0进行编译
;程序功能:在屏幕上显示一行字符串.
;注意:使用masm5.0编译asm文件的时候,文件名长度不要超过8个字符,否则会无法打开文件.

assume cs:code

code segment
start:
mov ax,cs
mov ds,ax
mov ah,9
mov dx,offset msg ;ah=9,ds:dx指向由美元标志($,对应于ASCII码24h)终止的字符串.
int 21h ;将字符串输出给标准输出设备(STDOUT)

mov ah,4ch
int 21h

msg db 'hello,world',24h
code ends
end start

这个也能实现显示的功能。

作者: haojiahuo50401   发布时间: 2011-08-12

热门下载

更多