assume cs:code,ds:data
data segment
db 'welcome to masm!' ;要显示的字符串
db 02H,24H,71H ;三种属性的属性字节
data ends
code segment
start:
mov ax,0B800H ;设置es段地址,指向要显示缓冲区
mov es,ax
mov ax,data ;设置ds段地址,指向data段
mov ds,ax
mov bx,0000H ;data段中数据的偏移地址,指向当前要显示的那个字符
mov si,07C0H ;es段中的数据的偏移地址,指向当前要在缓冲区哪个地址显示出字符
mov di,10H ;data段中数据的偏移地址,指向当前使用的属性字节
mov cx,16 ;每次从data段中复制数据到缓冲区,要复制16个字符,因此循环16次
s:
mov al,ds:[bx] ;将字符字节复制到缓冲区
mov es:[si],al
inc si ;指向缓冲区下一个字节
mov al,ds:[di] ;将属性字节复制到缓冲区
mov es:[si],al
inc bx ;指向data段与缓冲区的下一个字节
inc si
loop s
mov ax,4c00H ;程序返回
int 21H
code ends
end start
王爽汇编--实验九
于 2023-01-13 17:49:17 首次发布