;编程1:在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串“Welcome to MASM!”
assume cs:code, ds:data
data segment
db 'Welcome to MASM!'
db 02h, 24h, 71h
data ends
code segment
start: movax, data
movds, ax
movbx, 0;ds:bx指向data源地址
movax, 0B800h
mov es, ax
mov si, 11*160+32*2 ;es:si用于定位文字显示区域
mov di, 0;ds:di用于选择颜色
movcx, 3
s: pushcx
mov cx, 16
s0: mov al,
mov ah, [di+16]
mov word ptr es:[si], ax
inc bx
add si, 2
loops0
sub si, 32
add si, 0A0h
movbx, 0
inc di
popcx
loop s
mov ax, 4c00h
int21h
code ends
end start
;编程2:当发生除法溢出时,在屏幕中间显示“Overflow!”,返回DOS
assume cs:code
code segment
;////do0安装程序////
start: mov ax, cs
mov ds, ax
mov si, offset do0;设置ds:si指向源地址
mov ax, 0
moves, ax
movdi, 200h;设置es:di指向目的地址
mov cx, offset do0end-offset do0
;设置cx为传输长度
cld;设置传输方向为正
rep movsb ;将源地址所存放的数据全部存放到目的地址
;////设置中断向量表////
mov ax, 0
mov es, ax
mov word ptr es:[0*4], 200h
movword ptr es:[0*4+2], 0
movax, 4c00h
int21h
;////显示字符串“overflow!”////
do0: jmp short do0start
db"Overflow!"
do0start:mov ax, cs
mov ds, ax
mov si, 202h;设置ds:si指向字符串
mov ax, 0b800h
mov es, ax
mov di, 12*160+36*2;设置es:di指向显存空间中间的位置
mov cx, 9 ;设置cx为字符串长度
s: mov al, [si]
mov es:[di], al
inc si
add di, 2
loop s
mov ax, 4c00h
int21h
do0end: nop;nop为空操作符,占一个字节
code ends
end start