汇编网首页登录博客注册
sbjcm33的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新评论
最新留言
好友圈
文章收藏
友情链接

[2012-12-10 23:57] 实验11:编写子程序实现把所有小写字母转换成大字字母

;实验11:编写子程序
data segment
        db "Beginner's All-purpose Symbolic Instrution code.",0
data ends
stack segment
        dw 16 dup (0)
stack ends

code segment
    assume cs:code,ds:data,ss:stack
start:
    mov ax,data
    mov ds,ax
    mov ax,stack
    mov ss,ax
    mov sp,32
    
    mov si,0
    call letterc
    mov dh,8
    mov dl,3
    mov cl,2
    call show_to0
    mov ah,4ch
    int 21h
    
letterc:
        ;名称:letterc
        ;功能:将以0结尾的字符串中的小写字母转变成大写字母
        ;参数:ds:si指向字符串首地址
        push ax
        push si
        
ls:        mov al,[si]
        cmp al,0
        je ok
        cmp al,'a'
        jb next
        cmp al,'z'
        ja next
        and al,11011111b
        mov [si],al
next:        inc si
        jmp short ls
ok:        pop si
        pop ax
        ret
        
show_to0:
        ;功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串。
        ;参数:(dh)=行号(取值范围0~24),(dl)=列号(取值范围0~79),
        ;      (cl)=颜色,ds:si指向字符串的首地址。
        ;返回:无
        push ax
        push bx
        push cx
        push dx
        push si
        push di
        push es
        mov ax,0b800h
        mov es,ax
        
        mov ax,160
        mul dh
        mov bx,ax               ;bx指向行
        
        mov dh,0
        mov di,dx
        add di,di               ;si指向列
        
        mov ah,cl
show_to0_next:
        mov al,[si]
        mov cx,0
        mov cl,al
        jcxz show_to0_ok
        mov es:[bx+di],ax
        inc si
        add di,2
        jmp short show_to0_next
show_to0_ok:
        pop es
        pop di
        pop si
        pop dx
        pop cx
        pop bx
        pop ax
        ret
        
        
        
code ends
end start
评论次数(0)  |  浏览次数(370)  |  类型(汇编作业) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码