可以輸入滿屏字元
輸滿後截止字元輸入,按backspace鍵正常刪除字元
所有情況下enter鍵結束
;最基本的字串輸入程式,需要具備下面的功能:
;(1) 在輸入的同時需要顯示這個字串;
;(2)一般在輸入回車符後,字串輸入結束;
;(3)能夠刪除已經輸入的字元。
;編寫乙個接收字串的輸入子程式,實現上面三個基本功能。
;因為在輸入的過程中需要顯示,子程式的引數如下:
;(dh)、(dl)=字串在螢幕上顯示的行、列位置;;ds
:si 指向字串的儲存空間,字串以o 為結尾符。
assume cs
:code,ds
:data
data segment
db 2000 dup (0)
;定義字串儲存空間——字元棧,最多儲存2000個字元
db 0,0 ;預留空間
data ends
code segment
start
: mov dx,0 ;顯示位置為0行0列
mov ax,data
mov ds,ax
mov si,0 ;
設定ds
:si指向字元棧
call getstr
return
: mov ax,4c00h
int 21h
;完整的接收字串輸入的子程式
getstr
: push ax
getstrs
:mov ah,0
int 16h
cmp al,20h
jb nochar ;判斷的是ascii碼小於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
:cmp top,2000
je sret ;棧滿不再入棧
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
retcode ends
end start
組合語言實現字串的輸入,輸出
1.了解 int 21h 的09h 號中斷呼叫 輸出字串 lea dx,字串的開頭 或 mov dx,offset字串的開頭 mov ah,09h int 21h 2.在定義字串的時候要在末尾加上 作為字串的結束標誌。3.了解 int 21h 的0ah 號中斷呼叫 輸入字串 lea dx,字串的開頭...
計算字串長度 組合語言
設有一字串存放在以 buf 為首址的資料區中,其最後一字元 作為結束標誌,計算該字串的長度並輸出 datas segment buf db 20,20 dup datas ends stacks segment stacks ends codes segment assume cs codes,ds...
組合語言巧妙排序字串
用組合語言實現任意輸入字串排序,我主要是採用先分組,然後分別排序,在把兩個組合起來排序的使用演算法。在我的輸出結果頁面中,總共會有6行,第一行表示的是你所輸入的我們需要排序的字串,第二行表示的是將字串分為兩組其中的第一組,第三行表示的是將字串分為兩組其中的第二組,第四行表示的是對分成的第一組排序得到...