|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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
- ;源码终
复制代码 |
|