一道彙編程式設計題求解

2021-12-16 11:58:04 字數 3508 閱讀 9299

1樓:鯤鵬展翅

發到[email protected]

中的信被系統退回。只好把原程式貼這了。

data segment

msg1 db "please input a string: $"

msgd db 0dh,0ah,"the number of digit is: $"

msgl db 0dh,0ah,"the number of letter is: $"

msgo db 0dh,0ah,"the number of other is: $"

string db 80,?,80 dup(?);執行時輸入一串字元

digit db 0 ;存數字個數

letter db 0 ;存字母個數

other db 0 ;存其它字元個數

data ends

code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

lea dx,msg1

mov ah,9

int 21h

lea dx,string

mov ah,0ah

int 21h

lea si,string

mov cl,[si+1]

mov ch,0

add si,2

next:

mov al,[si]

cmp al,'0'

jb nexto;小於'0'轉到其它

cmp al,'9'

ja nextu;大於'9'轉到大寫字母

inc digit ;'0'-'9'之間,數字個數加1

jmp next1;轉到下乙個數

nextu:cmp al,'a'

jb nexto ;小於'a'轉到其它

cmp al,'z'

ja nextl ;大於'z'轉到小寫字母

inc letter ;'a'-'z'之間,大寫字母個數加1

jmp next1;轉到下乙個數

nextl:cmp al,'a'

jb nexto ;小於'a'轉到其它

cmp al,'z'

ja nexto;大於'z'轉到其它

inc letter ;'a'-'z'之間,小寫字母個數加1

jmp next1;轉到下乙個數

nexto:inc other ;其他字元個數加1

next1:

inc si

loop next

tj:mov bh,0

lea dx,msgd

mov ah,9

int 21h

mov bl,digit

call disp

lea dx,msgl

mov ah,9

int 21h

mov bl,letter

call disp

lea dx,msgo

mov ah,9

int 21h

mov bl,other

call disp

mov ah,1

int 21h

mov ah,4ch

int 21h

disp proc near

mov cx,10d

call dec_div

mov cx,1d

call dec_div

retdec_div proc near

mov ax,bx

mov dx,0

div cx

mov bx,dx

mov dl,al

add dl,30h

mov ah,2

int 21h

retdec_div endp

disp endp

code ends

end start

2樓:

data segment

tips db 'please input a string: ',0dh,0ah,'$'

buffer db 82,0,80 dup(0)result db 0dh,0ah,' letter='

letter dw 0 ;字母計數器

r2 db ' dight='

dight dw 0 ;數字計數器

r3 db ' other='

other dw 0 ;其它計數器

r4 db 0dh,0ah,'$' ;串結束標記data ends

code segment

assume cs:code,ds:datastart:

mov ax,data

mov ds,ax

lea dx,tips;提示

mov ah,9

int 21h

lea dx,buffer;輸入源串

mov ah,0ah

int 21h

cldlea si,buffer ;指向輸入串

add si,2

t0:cmp byte ptr [si],0dh ;從串中找回車結束標記

jz show

_lop:lodsb ;取一位元組

cmp al,'0'

jb q1

cmp al,'9'

ja q1

inc dight ;數字+1

jmp next

q1:cmp al,'a'

jb q2

cmp al,'z'

ja q2

inc letter ;字母+1

jmp next

q2:cmp al,'a'

jb q3

cmp al,'z'

ja q3

inc letter ;字母+1

jmp next

q3:inc other ;其他字元+1

next:jmp t0

show:

mov ax,letter

aam ;二化十

xchg ah,al ;調序

or ax,3030h ;轉換成待顯示的ascii碼mov letter,ax ;送入記憶體

mov ax,dight

aamxchg ah,al

or ax,3030h ;同上

mov dight,ax

mov ax,other

aamxchg ah,al

or ax,3030h ;同上

mov other,ax

lea dx,result ;=mov dx,offset result

mov ah,9 ;顯示統計計數結果

int 21h

;下面這句,方便從資源管理器看

;沒這句,螢幕一閃就沒了

mov ah,0 ;暫停

int 16h

mov ah,4ch

int 21h

code ends

end start

一道C語言程式題求解,一道C語言程式設計題求解

float y w 就是每一項的值,即 1 2 1 4 1 8,要加項小於10的 6,也就是要 float y w的絕對值大於10的 6才迴圈,在不用abs函式的求絕對值的時候,假定要x的絕對值 x可能為正數或負數 大於10的 6,那麼自然就是x z1 同為正數 或者x z1 同為負數 其實這題 太...

求解一道C語言程式設計題目,求一道C語言程式設計題

說一下思想 先定義乙個int min 1000000 或者其他大於4的數,因為陣列 專最大就4,按行屬列遍歷陣列所有元素,min min a i j a i j min 輸出的min即為所求 include define n 2 int getmin int a n int m,int n int ...

一道C語言程式設計題求解一道簡單的C語言程式設計題

樓主,抄樓上不太會說話,不要理,bai等等我貼出 沒有其他語言基礎du的c語言初學者起zhi步是慢了一dao點,但是要渣油 include int main return 0 dim arr斐波 那契數bai 列du 19 as integer arr斐波那 zhi契數dao列回 答 0 1 arr...