;编程1:在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串“Welcome to MASM!”
assume cs:code, ds:data
data segment
db 'Welcome to MASM!'
db 02h, 24h, 71h
data ends
code segment
start: mov ax, data
mov ds, ax
mov bx, 0 ;ds:bx指向data源地址
mov ax, 0B800h
mov es, ax
mov si, 11*160+32*2 ;es:si用于定位文字显示区域
mov di, 0 ;ds:di用于选择颜色
mov cx, 3
s: push cx
mov cx, 16
s0: mov al,
mov ah, [di+16] mov word ptr es:[si], ax inc bx add si, 2 loop s0 sub si, 32 add si, 0A0h mov bx, 0 inc di pop cx loop s mov ax, 4c00h int 21h 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 mov es, ax mov di, 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 mov word ptr es:[0*4+2], 0 mov ax, 4c00h int 21h ;////显示字符串“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 int 21h do0end: nop ;nop为空操作符,占一个字节 code ends end start