| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1440 人关注过本帖
标题:发个DOS asm在cmd中间显字符[把小写转大写]
只看楼主 加入收藏
onepc
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:223
专家分:569
注 册:2009-8-27
结帖率:54.55%
收藏
 问题点数:0 回复次数:0 
发个DOS asm在cmd中间显字符[把小写转大写]
程序代码:
;刚才整理了一下硬盘,这个是看王爽的书时的练习,开始我是从暗组那里搞几下想学破解,哈,一学就学这么久,还没破入门。
;by onepc 153785587
;先字符串的小写字母转为大写。。。注:只是先把字符串转为大写。然后再把这个字符串显示
assume cs:code
data segment
    db "Welcome to darkst! the zero study carck. onepc's first dos asm", 0
data ends
code segment
start: mov ax, data
    mov ds, ax
    mov si, 0
    call conver   
    call show_str ;把指向mov ax,4c00h的IP压入栈中 [push ip]-------ss:sp指向栈顶
    mov ax, 4c00h
    int 21h

    conver:mov al,[si]
     cmp al,0
     je ok   ;这里若是al等于0那么就跳到ok ret这里把栈里的数据变为ip的值,就是说恢复call之前的ip指向的地址
     cmp al,61h   ;
     jnb dayu   ;这里不小于就跳  就是说比61大的就跳
     mov [si],al  ;若是不比61大那么就把值没改变又送回去
     inc si
     jmp short conver 
     
     
     dayu:cmp al,7ah  
     jna yes   ;再与小写z比较若是在 61-7a的范围内那么就表示小写
     mov [si],al  ;这里不在这个范围内那么也直接传回去
     jmp conver
     
     yes:and al,11011111b  ;这里把小写转大写
     mov [si],al    ;转之后的再传回去
     jmp conver
     
    show_str:mov si, 0
    mov ax,0b800h
    mov es,ax
    mov di,(11*160+5*2) ;这里是在12行的16列里显示字符

    
         wstring:mov al,[si]
         cmp al,0   ;比较不影响结果,al-0  这里若是结果为0 则把标志寄存器zf位置1
         je ok   ;这里的意思就是说若是zf=1 表示相等,那么就跳转
         mov es:[di+0],al
         mov es:[di+1],2
         inc si
         add di,2
         jmp short wstring
         ok:ret
code ends
end start   
收到的鲜花
  • zklhp2009-10-10 17:43 送鲜花  50朵   附言:我很赞同
搜索更多相关主题的帖子: 字符 小写 DOS cmd asm 
2009-10-10 13:33
快速回复:发个DOS asm在cmd中间显字符[把小写转大写]
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022083 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved