嗨我已经重定向划分溢出中断指向我的自定义创建的中断,在屏幕上打印'你好,我在这里',而不是打印奇怪的ASCII字符。有人能告诉我为什么吗?这里是代码奇怪的打印字符串输出从INT 0x10
[ORG 100h]
jmp start
message: dw 'hello man here i am'
prntstr: push ax
push bx
push cx
push dx
push si
push di
push bp
push ds
push es
push cs
pop ds
mov ah, 0x13
mov al, 1
mov bh, 0
mov bl, 7
mov dx,0x0a03
mov cx,11
push cs
push es
mov bp,message
int 0x10
pop es
pop ds
pop bp
pop di
pop si
pop dx
pop cx
pop bx
pop ax
ret
tsr: mov ah, 0
int 0x16
call prntstr
iret
;mov ah,4ch
;mov al, 6
;int 0x21
;iret
divs: mov ax,0x8569
mov dl,2
div dl
ret
start: xor ax,ax
mov es,ax
mov word[es:0*4], tsr
mov [es:0*4+2],cs
call divs
mov ax,0x4c00
int 0x21
一两件事我不理解的代码是我在ES集胶印:0 * 4 - 我assument认为00是除溢出的位置中断?什么是0 * 4因为任何东西乘以零意味着相同,所以为什么4?在此先感谢
您不能使用'dx'进行间接寻址('bx','bp','si'和'di'是唯一的16位选项),除非它们是32位('edx * 2'就可以)。 – 2012-03-09 02:19:12