組合語言字串的輸入程式2000字元

2021-10-02 19:25:14 字數 2590 閱讀 6521

可以輸入滿屏字元

輸滿後截止字元輸入,按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行,第一行表示的是你所輸入的我們需要排序的字串,第二行表示的是將字串分為兩組其中的第一組,第三行表示的是將字串分為兩組其中的第二組,第四行表示的是對分成的第一組排序得到...