2011-12-10 4 views
0
; multi-segment executable file template. 

data segment 
    string db "THis is LuxUR in Summer." 
ends 

stack segment 
    dw 128 dup(0) 
ends 

code segment 
start: 
; set segment registers: 
    mov ax, data 
    mov ds, ax 
    mov es, ax 

    mov bx, offset string 
    mov al, 0 ;  lower letters in word 
    mov dl,0 ; maximum letters 

check: 
mov cl, 41h ; from A-Z 
mov ch, 5Ah 

mov ah, [bx] 
cmp ah, "." 
je dot 
cmp ah, " " 
je empty 
jne letters 

letters: 
cmp ah, cl 
je uppercase 
inc cl 
cmp cl, ch 
jne letters 

mov cl, 61h  ; a-z 
mov ch, 7Ah 

lowercase: 
inc al 
cmp dl,al 
jl maksimum 

inc bx 
jmp check 

maksimum: 
mov dl, al 

inc bx 
jmp check 

uppercase: 
inc bx 
jmp check  

empty: 
mov al, 0 
inc bx 
jmp check 

dot: 

私のプログラムカウントは、それからdlに入れます。 (最大小文字) 名前はドットです。アセンブリ文字列の結果をプリントする

夏が最も低く例5

私はそれを行うには、いくつかの手順を試してみたが、それは仕事をdoesntの持つ単語である:そこに私は私の結果を印刷することができるいくつかの命令を配置する必要があります。

+0

あなたがそれがうまくいかないと言うと、あなたは*出力を得ますか?もしそうなら、何を得るのですか? –

+0

私の結果はdlレジスタにあり、それは5です – user1011868

+0

正しい結果が得られますが、単に印刷する方法を尋ねていますか? DOS割り込みを使用できますか? –

答えて

0

Windowsを使用している場合、最も簡単な方法はDOS Interruptsです。具体的には、interrupt 09を試してください。これは文字列を受け取り、それを標準出力に出力します。

+0

LEA DX、文字列 MOV AH、9 INT 21H このintteruptで試してみますが、画面に文字列が表示されます(すべての文章がすべての単語で表示されます)。結果Summer 5 letters – user1011868

+0

あなたは出力ではなく入力を印刷しているように聞こえます。印刷する前に出力をフォーマットする必要があることを覚えておいてください。 –

+0

2つの結果、1つの文字列Summerと文字数を表示するために、どの割り込みを使用するのかわかりません。例コードがわかりやすくて役に立ちます。 – user1011868

関連する問題