应用:字符串的输入(1702)

简介: 本文为《汇编语言程序设计》1702小节例程。点击链接…进课程主页。任务:(见程序中注释) 程序:;最基本的字符串输入程序,需要具备下面的功能:;(1)在输入的同时需要显示这个字符串;;(2)一般在输入回车符后,字符串输入结束;;(3)能够删除已经输入的字符。

本文为《汇编语言程序设计》1702小节例程。点击链接…进课程主页。

任务:(见程序中注释)
程序:

;最基本的字符串输入程序,需要具备下面的功能:
;(1)在输入的同时需要显示这个字符串;
;(2)一般在输入回车符后,字符串输入结束;
;(3)能够删除已经输入的字符。

;编写一个接收字符串的输入子程序,实现上面三个基本功能。
;因为在输入的过程中需要显示,子程序的参数如下:
;       (dh)、(dl)=字符串在屏幕上显示的行、列位置;
;       ds:si 指向字符串的存储空间,字符串以O 为结尾符。


assume cs:code, ds:data
data segment
   db 32 dup (?)
data ends
code segment
start:
        mov ax, data
        mov ds, ax
        mov si, 0   ;设置字符串的存储空间
        mov dh, 12
        mov dl, 20  ;设置显示位置
        call getstr

return: mov ax,4c00h
        int 21h


;完整的接收字符串输入的子程序

getstr: push ax

getstrs:mov ah,0
        int 16h

        cmp al,20h
        jb nochar   ;小于20h,说明不是字符
        mov ah,0;
        call charstack;字符入栈
        mov ah,2
        call charstack;显示栈中的字符
        jmp getstrs


nochar:      ;处理非字符
        cmp ah,0eh;退格键的扫描码
        je backspace
        cmp ah,1ch;回车键的扫描码
        je enter
        jmp getstrs


backspace:   ;退格
        mov ah,1
        call charstack;字符出栈
        mov ah,2
        call charstack;显示栈中的字符
        jmp getstrs

enter:;回车
        mov al,0
        mov ah,0
        call charstack ;0入栈
        mov ah,2
        call charstack;显示栈中的字符

        pop ax
        ret ;getstr ends


;功能子程序实现
charstack:
     jmp short charstart
     table dw charpush,charpop,charshow
     top dw 0  ;栈顶
charstart:
        push bx
        push dx
        push di
        push es

        cmp ah,2
        ja sret
        mov bl,ah
        mov bh,0
        add bx,bx
        jmp word ptr table[bx]

charpush:mov bx,top
        mov [si][bx],al
        inc top
        jmp sret

charpop:cmp top,0
        je sret
        dec top
        mov bx,top
        mov al,[si][bx]
        jmp sret

charshow:mov bx,0b800h
        mov es,bx
        mov al,160
        mov ah,0
        mul dh
        mov di,ax
        add dl,dl
        mov dh,0
        add di,dx

        mov bx,0

charshows:cmp bx,top
        jne noempty
        mov byte ptr es:[di],' '
        jmp sret

noempty:mov al,[si][bx]
        mov es:[di],al
        mov byte ptr es:[di+2],' '
        inc bx
        add di,2
        jmp charshows

sret:   pop es
        pop di
        pop dx
        pop bx
        ret
code ends
end start
目录
相关文章
|
2月前
|
机器学习/深度学习 人工智能 JavaScript
输入数组
输入数组。
48 14
|
3月前
|
C语言
输入一行字符
该C语言程序通过`getchar()`函数读取用户输入的字符,并使用`while`循环直到遇到换行符`\n`停止读取。程序统计并分类计数了输入中的英文字母、数字、空格及其他字符的数量,最后将统计结果输出。示例输出显示了对字符串"www.runoob.com 123"的正确统计结果。
46 4
|
7月前
|
C++
写一个函数,输入一个四位数字,要求输出这四个数字字符,但每两个数字间空一个空格。如输入1990,输出1 9 9 0
这是一个C++代码片段,实现了一个函数`Print`,用于倒序打印整数。代码在`main`函数中读取用户输入的整数`n`,然后调用`Print`函数输出。示例运行结果显示了一张图片,显示了代码执行后的输出,但具体内容未提供。
141 0
|
7月前
53.从键盘输入任意一串字符串,程序输出同样的一串字符,要求输出字符串中大小写相互转化,其他符号不变。如输入“a123BxC”,则输出“A123bXc”
53.从键盘输入任意一串字符串,程序输出同样的一串字符,要求输出字符串中大小写相互转化,其他符号不变。如输入“a123BxC”,则输出“A123bXc”
53 0
|
7月前
按要求输入字符
【2月更文挑战第5天】输入一些字符,逐个把它们送到磁盘上去,直到输入一个#为止。
45 0
|
7月前
输入一个字符串,统计其中字符A的数量并且输出,输入共有一行,为一个不带空格的字符串(其中字符数不超过100),输出一行,包含一个整数,为输入字符串中的A的数量
输入一个字符串,统计其中字符A的数量并且输出,输入共有一行,为一个不带空格的字符串(其中字符数不超过100),输出一行,包含一个整数,为输入字符串中的A的数量
|
C++
c++输出字符串
c++输出字符串
109 1
input输入框输入只能输入数字、字母等组合的正则表达式
input输入框输入只能输入数字、字母等组合的正则表达式
710 0
输入一个字符串,把其中的字符按逆序输出。如输入LIGHT,输出THGIL。要求用string方法。
输入一个字符串,把其中的字符按逆序输出。如输入LIGHT,输出THGIL。要求用string方法。
|
C语言 C++
输入一个字符串并使其反序输出
输入一个字符串并使其反序输出