开发者

asm program does not work (nasm)

org 0x100
SEGMENT .CODE
    mov ah,0x9
    mov dx, Msg1
    int 0x21

    ;string input
    mov ah,0xA
    mov dx,buff
    int 0x21
    mov ax,0
    mov al,[buff+1]; length

    ;string UPPERCASE    
    mov cl, al  
    mov si, buff
    cld
loop1:
    lodsb;
    cmp al, 'a' 
    jnb upper
loop loop1
;output
mov ah,0x9
mov dx, buff
int 0x21

exit:
    mov ah, 0x8
    int 0x21
    int 0x20
开发者_运维百科upper:
    sub al,32 
    jmp loop1
SEGMENT .DATA
Msg1 db 'Press string: $'
buff db 254,0

This code does not work. I think that the problem is in jnb upper. This program should make lowercase letters into uppercase letters.


It looks like you are trying to convert a string from lower case to upper case? The problem is that you are only comparing input against the letter 'a':

cmp al, 'a' 
jnb upper

If you want to convert from lowercase to upper case, you need to check for characters in the range from 'a' to 'z', and if once is in that range then subtract 32.

Also, I think you want to write the uppercase char back to memory in upper. All you are doing is updating the register, which is then overwritten in the next iteration of loop1.

Does that help?


I had found my problem: When I was inputing text, '$'-not added.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜