組合語言 第三版 王爽 實驗12 編寫0號終端的處理程式
阿新 • • 發佈:2019-02-06
題目:
編寫0號中斷的處理程式,使得在除法溢位發生時,在螢幕中間顯示字串“divide error!”,然後返回dos
程式碼:
結果:assume cs:code code segment start: mov ax,cs ;要執行的d0段複製到空白記憶體處作為中斷處理程式 mov ds,ax mov si,offset do0 mov ax,0 mov es,ax mov di,200H mov cx,offset do0end - offset do0 cld rep movsb ;設定0中斷碼的中斷向量 mov word ptr es:[0*4],200H mov word ptr es:[0*4+2],0 mov ax,0000H ;溢位測試 mov dx,1H ;結果為10000H 溢位 mov bx,1H div bx mov ax,4c00h int 21h do0:jmp short do0start ;兩個位元組 db 'divide error!' do0start: mov ax,cs mov ds,ax mov si,202h mov ax,0B800h mov es,ax mov di,12*160+36*2 ;顯示的偏移地址 mov cx,13 s: mov al,[si] mov es:[di],al inc si add di,2 loop s mov ax,4c00h int 21h do0end:nop code ends end start
輸入p 返回dos
注意:
do0開始的jmp short指令佔兩個位元組,如果寫成 jmp指令,佔3個位元組!