实验11

assume cs:codesg

datasg segment

    db "Beginner's All-purpose Symbolic Instruction Code.",0

datasg ends

codesg segment
    start:
        mov ax, datasg
        mov ds, ax
        mov si, 0
        
        mov dh, 15
        mov dl, 0
        mov cx, 00024h
        call show_str

        call letterc
        
        mov dh, 17
        mov dl, 0
        mov cx, 00024h
        call show_str
        mov ax, 4c00h
        int 21h

letterc:
    pushf
    push si
    push ax
    push cx
    
    
    mov ah, 0
begin_letterc_loop:
    mov al, ds:[si]
    mov cx, ax
    jcxz back_letterc
    cmp al, 'a'
    jb otherletter
    cmp al, 'z'
    ja otherletter
    
lower2capital:
    and al,0dfh
    mov [si], al
otherletter:
    inc si
    jmp short begin_letterc_loop
    
back_letterc:    
    pop cx
    pop ax
    pop si
    popf
    ret

        ;dh  行号,dl 列号  cl  颜色 ,遇到0返回
show_str:

    push ax
    push bx
    push es
    push di
    push si
    push cx
    
    ; 计算偏移量
    mov al, 160
    mul dh
    mov bx, ax
    mov al, 2
    ;mov dl, 2
    mul dl
    add bx, ax
    ; 偏移量存储在bx中
    mov ax, 0b800h
    mov es, ax
    mov di, 0
    mov ah, cl
    mov ch, 0
print:
    mov cl, ds:[si]
    jcxz backshow_str
    mov al, cl
    mov es:[bx + di], ax
    add di, 2
    inc si
    jmp short print
    
backshow_str:
    pop cx
    pop si
    pop di
    pop es
    pop bx
    pop ax
    ret

codesg ends
end start

转载于:https://www.cnblogs.com/boota/p/3712873.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值