王爽汇编第三版实验9

assume cs:codesg
data segment
    db 'welcome to masm!'
    db 02H,24H,71H              ;字符显示的属性值
data ends
stack segment
    db 16 dup (0)
stack ends
codesg segment
start:  ;初始化data数据段,es:di指向data
        mov ax,data
        mov es,ax
        mov di,0
        ;初始化显示缓冲区,ds:bx指向显示缓冲区。
        mov ax,0b800H
        mov ds,ax
        ;25行取中是12、13、14行,80列取中开始是61列
        ;12行的偏移量是12*160=1920
        ;总偏移量为(偏移地址)1920+60=1980
        mov bx,1980
       
        ;字符的属性在数据段中的偏移量
        mov si,16
        ;建栈,并初始化栈顶,熟悉栈结构。
        ;其实这里都不用人工建栈,有系统自动的。
        mov ax,stack
        mov ss,ax
        mov sp,16
           
        mov cx,3        ;计数器初始化为3(循环显示3次)
    s:  push cx         ;入栈保护CX,在stack中
       
        mov cx,16       ;内循环为16次,16个字符
output: ;将字符写入显存中
        mov al,es:[di]
        mov [bx],al
        ;将字符属性写入显存中
        mov ah,es:[si]
        mov [bx+1],ah
       
        inc di
        add bx,2
        loop output
        ;每行输出的偏移量为128字节  
        add bx,128
       
        mov di,0
        inc si
        pop cx          ;出栈恢复cx计数器值
        loop s
           
        mov ax,4c00H
        int 21H
codesg ends
end start
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值