刚学会用栈做参数写了两个功能子程序
本帖最后由 泡泡吧 于 2016-12-30 16:49 编辑第一个向屏幕显示文本
第二个转换大小写字母
;功能名: show
;说明: 向屏幕显示文本,以0结尾文本
;参数: push ax 文本,以零结尾
;参数: push ax 文本颜色,
;参数: push ax 行,从零开始
;结果: 向指定行显示指定文本
;源码始:
show: mov bp,sp
mov ds,;文本
mov ax,0b800h;屏幕显示地址
mov es,ax
mov ax, ;行
add ax,4
mov bx,160 ;第一行4*160
mul bx
mov bx,ax
mov si,0
mov di,0
show_s1:mov cl,ds: ;ds:指向文本byte单元
mov ch,0
jcxz s0 ;如果=0直接返回
mov al,cl
mov ah, ;颜色
mov es:,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,;把字母放入ds中
mov cx,;
mov si,0
jcxz caps0 ;如果=0 转为大写 跳转到caps
caps1:mov cl,ds: ;指向第一个字符
mov ch,0
jcxz caps2 ;如果=0跳出循环
or byte ptr,00100000b
inc si ;ds:下一个
loop caps1
jmp short caps2
caps0:mov cl,ds: ;指向第一个字符
mov ch,0
jcxz caps2 ;如果=0跳出循环
and byte ptr ,11011111b
inc si ;ds:下一个
loop caps0
jmp shortcaps2
caps2:mov ax,ds ;(ax)=(ds)
ret
;源码终
页:
[1]