本文主要是介绍应用:字符串的输入(1702),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本文为《汇编语言程序设计》1702小节例程。点击链接…进课程主页。
任务:(见程序中注释)
程序:
;最基本的字符串输入程序,需要具备下面的功能:
;(1)在输入的同时需要显示这个字符串;
;(2)一般在输入回车符后,字符串输入结束;
;(3)能够删除已经输入的字符。;编写一个接收字符串的输入子程序,实现上面三个基本功能。
;因为在输入的过程中需要显示,子程序的参数如下:
; (dh)、(dl)=字符串在屏幕上显示的行、列位置;
; ds:si 指向字符串的存储空间,字符串以O 为结尾符。assume cs:code, ds:data
data segmentdb 32 dup (?)
data ends
code segment
start:mov ax, datamov ds, axmov si, 0 ;设置字符串的存储空间mov dh, 12mov dl, 20 ;设置显示位置call getstrreturn: mov ax,4c00hint 21h;完整的接收字符串输入的子程序getstr: push axgetstrs:mov ah,0int 16hcmp al,20hjb nochar ;小于20h,说明不是字符mov ah,0;call charstack;字符入栈mov ah,2call charstack;显示栈中的字符jmp getstrsnochar: ;处理非字符cmp ah,0eh;退格键的扫描码je backspacecmp ah,1ch;回车键的扫描码je enterjmp getstrsbackspace: ;退格mov ah,1call charstack;字符出栈mov ah,2call charstack;显示栈中的字符jmp getstrsenter:;回车mov al,0mov ah,0call charstack ;0入栈mov ah,2call charstack;显示栈中的字符pop axret ;getstr ends;功能子程序实现
charstack:jmp short charstarttable dw charpush,charpop,charshowtop dw 0 ;栈顶
charstart:push bxpush dxpush dipush escmp ah,2ja sretmov bl,ahmov bh,0add bx,bxjmp word ptr table[bx]charpush:mov bx,topmov [si][bx],alinc topjmp sretcharpop:cmp top,0je sretdec topmov bx,topmov al,[si][bx]jmp sretcharshow:mov bx,0b800hmov es,bxmov al,160mov ah,0mul dhmov di,axadd dl,dlmov dh,0add di,dxmov bx,0charshows:cmp bx,topjne noemptymov byte ptr es:[di],' 'jmp sretnoempty:mov al,[si][bx]mov es:[di],almov byte ptr es:[di+2],' 'inc bxadd di,2jmp charshowssret: pop espop dipop dxpop bxret
code ends
end start
这篇关于应用:字符串的输入(1702)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!