. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->标志寄存器
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  王爽《汇编语言》实验11(带详细注释和图片)  [待解决] 回复[ 0次 ]   点击[ 337次 ]  
chinaljg
[帖 主]   [ 发表时间:2011-02-08 20:53 ]   [引用]   [回复]   [ top ] 
荣誉值:10
信誉值:0
注册日期:2011-01-04 11:04
;王爽《汇编语言》实验11(带详细注释和图片) 

;实验11:编写子程序 
;将包含任意字符,以0结尾的字符串中的小写字母转变为大写字母 
;名称:letterc 
;功能:将以0结尾的字符串中的小写字母转变为大写字母 
;参数:ds:si指向字符串首地址 
assume cs:codesg 

datasg segment 
        db "Beginner's All-purpose Symbolic Instruction Code.",0 
datasg ends 
codesg segment 
begin: 
        mov ax,datasg 
        mov ds,ax 
        mov si,0 
        call letterc 

        mov ax,4c00h 
        int 21h 

letterc: 
        push cx ;子程序用到的寄存器入栈 
        push ds  ;子程序用到的寄存器入栈 
        push si  ;子程序用到的寄存器入栈 
s:        mov cl,ds:[si]  ;用cx来判断是否到字符串结尾 
        mov ch,0 
        jcxz fanhui  ;到字符串结尾,返回 
        cmp cx,'a'   
        jb next        ;不是小写字母,判断下一字节 
        cmp cx,'z' 
        ja next     ;超过小写字母最大的ascii码,判断下一字节 
        and cl,11011111B         ;小写字母变大写字母 
        mov ds:[si],cl        ;将大写字母写回原处 
next:        inc si                ;下一字节 
        jmp short s         ;继续判断 
fanhui: 
        pop si                ;子程序用到的寄存器出栈,注意顺序 
        pop ds                ;同上 
        pop cx                ;同上 
        ret 
codesg ends 
end begin 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
;向大家学习。 
;链接地址:http://www.asmedu.net/blog/user/postcontent.jsp?neighborId=37247&kindId=52075&postId=50852&readSg=1
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved