马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
只用到了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:[si]
mov es:[bx][di], al;ASCII码
inc di;下一个字节存放属性
mov al, ds:10H[bp]
mov es:[bx][di], 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
|