2011-12-10 83 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: 

我的程序计数小于al。然后放入dl中。 (最大的小箱) 我有标签,其名称是点。还有我必须把一些指令通过我可以打印我的结果:打印字符串结果汇编

夏季是最低的情况下5

我试着几条指令要做到这一点,但它不工作的话。

+0

当你说它不起作用时,你有*任何*输出?如果是这样,你会得到什么? –

+0

我的结果是在dl寄存器中,它是5, – user1011868

+0

所以你得到正确的结果,但你只是问如何打印它?你允许使用DOS中断吗? –

回答

0

如果您使用的是Windows,最简单的方法是使用DOS Interrupts。具体来说,请尝试interrupt 09。这需要一个字符串并将其输出到标准输出。

+0

LEA DX,字符串 MOV AH,9 INT 21H 我试着用这个intterupt,但是我得到的只是在屏幕上打印的字符串(所有单词都带有所有单词)我只想打印结果夏天5个字母 – user1011868

+0

听起来像你打印输入,而不是输出。记住你需要在打印前格式化输出。 –

+0

我不知道要使用哪个中断,打印2个结果,其中一个字符串夏天和字母数5个示例代码对我来说会更有用理解 – user1011868