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...