首页 > 代码库 > 汇编实验12
汇编实验12
assume cs:codesg
codesg segment
start:
; 设置源地址与目的地址,并使用movsb传送
mov ax, cs
mov ds, ax
mov si, offset do0
mov ax, 0
mov es, ax
mov di, 200h
mov cx, offset do0_end - offset do0
cld
rep movsb
; 设置向量表
mov ax, 0
mov es, ax
mov word ptr es:[0], 200h
mov word ptr es:[2], 0
; 激发一个除法溢出,后来证明其它程序有除法溢出时也会打印do0里的字符串,说明内存中的数据被改变。
; 重启电脑后无效,说明中断程序重新加载,疑问,加载的源程序信息在哪???继续学习之路吧
mov ax, 1000
mov bl, 1
div bl
mov ax, 4c00h
int 21h
do0:
jmp short do0_start
db ‘divide error!‘ ; 13个字符
do0_start:
mov ax, cs
mov ds, ax
mov bx, 202h ; do0 最前面的jmp指令长度忘了,打印出来开始两个字符是乱码,貌似有$符
mov cx, 13
mov ax, 0b800h
mov es, ax
mov di, 12*160+5*2 ; 12行,第5列,1 颜色不设置看会输出什么,结果黑底白色
mov ah, 24h
loop_do0:
mov al, [bx]
mov es:[di], ax
inc bx
add di, 2
loop loop_do0
mov ax, 4c00h
int 21h
do0_end:
nop
codesg ends
end start