汇编语言(王爽)实验十二
程序员文章站
2024-03-23 22:28:04
...
实验十二
编写0号中断的处理程序,使得在除法溢出发生时,在屏幕中间显示字符串"divide error!"
基本跟课本中的代码一致
assume cs:code
code segment
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
cld ; 设置正向传输
rep movsb ; 复制do0的代码到指定内存中
mov ax,0 ; 设置中断向量表的表项
mov es,ax
mov word ptr es:[0],200h
mov word ptr es:[2],0
mov ax,4c00h
int 21h
do0: jmp short do0start
db "divide error!" ; 使用一部分内存存储字符串
do0start: mov ax,cs
mov ds,ax
mov si,202h ; 设置ds:si指向字符串
mov ax,0b800h
mov es,ax
mov di,12*160+33*2 ; 设置es:di指向显存空间的中间位置
mov cx,13 ; 长度不同,循环次数和内存中的位置不同
s: mov al,[si]
mov es:[di],al
mov byte ptr es:[di+1],2 ; 给字符增加颜色
inc si
add di,2
loop s
mov ax,4c00h
int 21h
do0end: nop
code ends
end start
在加载完该程序之后,自行编写一个小程序进行验证
assume cs:codesg
codesg segment
start: mov ax,1000h
mov bl,1
div bl
mov ax,4c00h
int 21h
codesg ends
end start