《汇编语言》三 P187 实验九

汇编颇为繁复,随手所记,偶有复习。

assume cs:codes, ds:datas, ss:stacks

    datas segment
        db 'welcome to masm!'
        db 02h, 24h, 71h
    datas ends

    stacks segment
        dw 8 dup(0)
    stacks ends

    codes segment
        start:      mov ax, datas                   ;数据段地址
                    mov ds, ax

                    mov ax, stacks                  ;栈段地址
                    mov ss, ax
                    mov sp, ss

                    mov ax, 0b87cH                  ;显存段地址
                    mov es, ax

                    mov cx, 3
                    mov si, 0                       ;颜色偏移地址
                    mov di, 0                       ;显示位置偏移地址


            s1:     push cx
                    mov ah, ds:[si+16]              ;修改高位颜色
                    mov bx, 0                       ;字符偏移地址
                    mov cx, 16              

            s2:     mov al, ds:[bx]                 ;修改低位字符
                    mov es:[di], ax                 ;设置显存值
                    inc bx                      
                    add di, 2                       ;每个字符在显存中占2位
                    loop s2

                    add di, [128]                   ;换行整体偏移160, 写入字符时本身有偏移
                    pop cx
                    inc si
                    loop s1

                    mov ah, 4ch
                    int 21h

    codes ends
end start

你可能感兴趣的:(《汇编语言》三 P187 实验九)