使用組合語言 從鍵盤輸入一串以結束的字串,統計其中字元A的個數明天就要交作業,求大神

2022-05-26 05:20:17 字數 3740 閱讀 4386

1樓:做而論道

;*********************************************

data segment

str1 db 13, 10, 'num is: $'

data ends

;--------------------------------------------

code segment

assume cs:code, ds:data

start:

mov ax, data

mov ds, ax

mov bx, 0 ;個數

lop:

mov ah, 1 ;輸入字元

int 21h

cmp al, '*'

je exit

cmp al, 'a'

jne lop

inc bx

jmp lop ;繼續輸入

exit:

;---------------------------------------

disp:

lea dx, str1

mov ah, 9 ;顯示字串

int 21h

;---------------------------------------

mov ax, bx ;取來數字

mov cx, 16 ;顯示16位數

dddd:

mov dl, '0' ;先計劃顯示0

test ax, 8000h ;測試最高位

jz ddd1

inc dl ;非0就顯示1

ddd1:

push ax

mov ah, 2 ;顯示dl中的ascii碼

int 21h

pop ax

shl ax, 1 ;左移

loop dddd ;cx-1,非零轉移

jmp end0 ;16位顯示完畢,轉到結束

;---------------------------------------

end0:

mov ah, 4ch ;返回dos

int 21h

code ends

;---------------------------------------

end start

;*********************************************

個數顯示,使用了二進位制形式。

2樓:

初始化一個暫存器值為0 每次讀進來的字元都進行判斷 只要不是* 就讓個暫存器內的值+1 然後再次去讀輸入 讀到* 跳出讀字元 就是這樣

用8086組合語言編寫程式,從鍵盤輸入一段字元,以#結束,統計其中數字,字母,以及空格的個數。急急 20

3樓:白雲深處是我家

為了簡便,直接使用了21中斷的輸入字串子功能,即使你不輸入#作為結束符,也可以使用。62616964757a686964616fe58685e5aeb931333337386639

統計時,則將'#'後面的字元忽略

正確的作法,是呼叫21中斷的1號子功能,每次讀取一個字元,直到讀取到'#'為止。

這個修改很簡單,我就不再寫了。

data segment

buf db 255 ;

db ?

db 255 dup('$')

c1 dw 0 ;spacebar

c2 dw 0 ;digital number

c3 dw 0 ;alphabet

m1 db 0dh, 0ah, "spacebar number:$"

m2 db 0dh, 0ah, "digital number:$"

m3 db 0dh, 0ah, "alphabet number:$"

data ends

code segment

assume cs:code, ds:data

start:

mov ax, data

mov ds, ax

mov es, ax

;code start here

; read string

lea dx, buf

mov ah,0ah

int 21h

;xor cx, cx

mov cl, buf+1

mov si, 0

loop1:

mov al, buf[si+2]

cmp al, '#'

jz  lopend

cmp al, 20h

jz space

cmp al, '0'

jb alphabet

cmp al, '9'

ja alphabet

inc c2      ;digital number

jmp lop

space:

inc c1      ;spacebar

jmp lop

alphabet:

inc c3

lop:

inc si

loop loop1

lopend:

; print result

lea dx, m1

mov ah, 9

int 21h

mov ax, c1

call print

lea dx, m2

mov ah, 9

int 21h

mov ax, c2

call print

lea dx, m3

mov ah,9

int 21h

mov ax, c3

call print

;exit to os

mov ah,4ch

int 21h

print proc near

mov bx, 10

xor cx, cx

q0:xor dx, dx

div bx

or dx, 0e30h

push dx

inc cx

cmp ax, 0

jnz q0

q1:pop ax

int 10h

loop q1

retprint endp

code ends

end start

用組合語言試編寫程式,從鍵盤輸入字元以回車結束,統計輸入的字元個數,並顯示輸入的字元和字元個數

彙編程式設計:從鍵盤輸入一串字元,分別統計其中的字母(不區分大小寫)、數字字元和其他

從鍵盤輸入一串字串,已回車結束,分別統計輸出其中數字、字母和其他字元的個數。

4樓:匿名使用者

#include#includeint main()

5樓:匿名使用者

#include int main() printf("統計:字母=%d 空格=%d 數字=%d 其它

C語言程式設計從鍵盤輸入字串,分別統計其中大寫字母 小寫字母及其其他字元的個數,並輸出

include include int main c語言程式設計,從鍵盤輸入一字串,將其中的小寫字母全部轉換成大寫字母 小寫字母全部轉換成大寫字母的源 如下 includevoid main printf input a string n gets str while str i fclose fp...

幫忙寫彙編程式,要求從鍵盤輸入的字串(以回車結束),並將字串末尾加上結束標誌然後

因為你輸出的字串是 80,lea dx,buffer int 21h 把它改為 lea dx,buffer 2 int 21h 你的程式有兩個錯誤 1。呼叫mov ah,0ah int21h 後dx指向的是緩衝區的開始,不是結尾,因此你加 的位置應該是 緩衝區開始地址 2 輸入位元組數 2。顯示時,...

C語言輸入字串,統計其中數字0,1,2的出現個數

int num,i char a 100 num 0 printf 請輸入一 個字串 scanf s a for i 0 i 100 i printf 你輸入的字串 s中,數字0,1,2出現的總個數為 d個 a,num 大致的程式思路是這樣,不過我沒有執行過,有什麼不懂的可以問。注意前面定義了a 1...