姬月祈 发表于 2021-2-11 15:46:16

实验九

只用到了loop,感觉这一章学的转移指令没有用到?之前的知识就能够做出来
assume cs: codesg, ds: datasg, ss: stacksg

datasg segment
        db 'welcome to masm!'
        db 02H, 24H, 71H
datasg ends

stacksg segment
        dw 8 dup(0)
codesg segment
start:        mov ax, datasg
                mov ds, ax
                mov bx, 0    ;定位行
               
                mov ax, stacksg
                mov ss, ax
                mov sp, 16
               
                mov ax, 0b872H   ;12行中间
                mov es, ax
               
                mov bp, 0   ;属性
               
                mov cx, 3   ;最外层循环,3行
        s:        push cx
               
                mov si, 0;datasg中待复制字母的偏移地址
                mov di, 0;显存中操作的偏移地址
               
                mov cx, 16
        s0:        mov al, ds:
                mov es:, al;ASCII码
               
                inc di;下一个字节存放属性
               
                mov al, ds:10H
                mov es:, al;属性
               
                inc di;准备存放下一个字母
                inc si;指向下一个字母
                loop s0
               
                add bx, 160;指向下一行
                inc bp ;下一行用下一个属性
               
                pop cx
                loop s

                mov ax, 4c00H
                int 21H
codesg ends
end start               
页: [1]
查看完整版本: 实验九