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

我的博客

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

[2011-09-08 21:32] 试验11,将其显示在屏幕上 哪里有错误希望好心人不吝指出

图片载入中
assume cs:code
date segment
  db "Beginner's All-purpose Symbolic Instruction Code.",0
date ends
code segment
start:
                mov ax,date
                mov ds,ax
                mov si,0
                mov dh,7
                mov dl,1
                mov cl,2
                call show_str
                call letterc
                mov dh,8
                mov dl,1
                mov cl,2
                call show_str
                mov ax,4c00h
                int 21h
                
letterc:push ax
                push si
                push ds
        letterc_s:        mov al,ds:[si]
                                cmp al,0
                                je letterc_s1                                        ;遇到ascii=0则跳出对字符串的大小写转换操作
                                cmp al,61h
                                jb letterc_s0                                        ;如果小于a的ascii码则不对字符串操作
                                cmp al,86h
                                ja letterc_s0                                        ;如果大于z的ascii吗则不对字符串操作
                                and al,11011111b                                ;如果ascii码介于a和z的则转换为大写ascii码
                letterc_s0:        mov ds:[si],al
                                        inc si
                                jmp short letterc_s
                                letterc_s1:
                pop ds
                pop si
                pop ax
                ret

show_str:        
                push ax
                push es
                push bp
                push dx
                push cx
                push si                                ;保存相关寄存器
                mov ax,0b800h
                mov es,ax
                mov ax,160
                mul dh
                mov dh,0
                add ax,dx
                add ax,dx        
                mov bp,ax                        ;设置字符串在显存的初始偏移地址es:bp
                mov ah,cl
show_str_copy:                
                mov al,ds:[si]
                mov cl,al
                mov ch,0
                jcxz show_str_retur
                mov es:[bp],ax
                add bp,2
                inc si
        jmp short show_str_copy                        ;将ds:si中的字符串复制到es:bp对应的显存中,复制以0为结束标志
show_str_retur:                
                pop si
                pop cx
                pop dx
                pop bp
                pop es
                pop ax
                ret

code ends
end start
;哪里有错误希望好心人不吝指出
评论次数(1)  |  浏览次数(429)  |  类型(汇编作业) |  收藏此文  | 

[  chinatree   发表于  2011-09-08 23:18  ]

还真没有发现有什么问题,不是正常显示了吗?

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码