泡泡吧 发表于 2016-12-30 16:46:04

刚学会用栈做参数写了两个功能子程序

本帖最后由 泡泡吧 于 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]
查看完整版本: 刚学会用栈做参数写了两个功能子程序