马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 泡泡吧 于 2016-12-30 16:49 编辑
第一个向屏幕显示文本
第二个转换大小写字母;功能名: show
;说明: 向屏幕显示文本,以0结尾文本
;参数: push ax 文本,以零结尾
;参数: push ax 文本颜色,
;参数: push ax 行,从零开始
;结果: 向指定行显示指定文本
;源码始:
show: mov bp,sp
mov ds,[bp+6] ;文本
mov ax,0b800h ;屏幕显示地址
mov es,ax
mov ax,[bp+2] ;行
add ax,4
mov bx,160 ;第一行4*160
mul bx
mov bx,ax
mov si,0
mov di,0
show_s1:mov cl,ds:[di] ;ds:[di]指向文本byte单元
mov ch,0
jcxz s0 ;如果=0直接返回
mov al,cl
mov ah,[bp+4] ;颜色
mov es:[bx][si],ax ;显示
add si,2
inc di
loop show_si
show_s0:ret
;源码终
;功能名: capital
;说明: 将字母转换大小写.以0结尾字母
;参数: push ax 字母
;参数: push 0and1 ;0表示大写,1表示小写
;结果: 字母的首地址保存在ax中
;源码始
capital:mov bp,sp
mov ds,[bp+4];把字母放入ds中
mov cx,[bp+2];
mov si,0
jcxz caps0 ;如果=0 转为大写 跳转到caps
caps1: mov cl,ds:[si] ;指向第一个字符
mov ch,0
jcxz caps2 ;如果=0跳出循环
or byte ptr[si],00100000b
inc si ;ds:[si]下一个
loop caps1
jmp short caps2
caps0: mov cl,ds:[si] ;指向第一个字符
mov ch,0
jcxz caps2 ;如果=0跳出循环
and byte ptr [si],11011111b
inc si ;ds:[si]下一个
loop caps0
jmp short caps2
caps2: mov ax,ds ;(ax)=(ds)
ret
;源码终
|