关于小甲鱼汇编内中断的除法中断处理程序
昨天试了下面程序还可以,今天在屏幕上却显示了乱码,不是welcome to fishc.com!,谢谢大大们,帮解释下,就是小甲鱼汇编内中断的除法中断处理程序assume cs:code
code segment
start: mov ax,0
mov ds,ax
mov word ptr ds:,0
mov word ptr ds:,200H
;从0:200开始写入数据
mov si,offset shut
mov ax,0
mov es,ax
mov di,200H
mov cx,offset over - offset shut
cld
rep movsbes:,cs:
mov ax,4c00h
int 21h
shut:jmp short watch
db 'Welcome to fishc.com!'
watch: mov ax,0B800H
mov ds,ax
mov si,12*160+76
mov ax,0 ;字符串
mov es,ax
mov ax,0 ;防止影响
mov di,offset shut +2
mov cx,21
look:mov al,es:
mov byte ptr ds:,al
mov byte ptr ds:,2
add si,2
inc di
loop look
mov ax,4c00h
int 21h
over:nop
code ends
end start http://bbs.fishc.com/thread-20960-1-3.html 六楼
应该是mov di,offset shut +2这句的问题
你要把di指向0:202H才行啊。因为中断例程的字符串在这个地址。
offset shut是原安装程序的偏移地址 lukelqz 发表于 2012-8-24 12:28 static/image/common/back.gif
http://bbs.fishc.com/thread-20960-1-3.html 六楼
应该是mov di,offset shut +2这句的问题
你要把di指向 ...
恩,可以了,3Q assume cs:code
code segment
start: mov ax,0
mov ds,ax
mov word ptr ds:,0
mov word ptr ds:,200H
mov si,offset shut
mov ax,0
mov es,ax
mov di,200H
mov ax, code ;①
mov ds, ax ;①
mov si, offset shut ;①
mov cx,offset over - offset shut
cld
;rep movsb es:,cs:①
rep movsb
mov ax,4c00h
int 21h
shut:jmp short watch
db 'Welcome to fishc.com!'
watch: mov ax,0B800H
mov ds,ax
mov si,12*160+76
mov ax,0
mov es,ax
mov ax,0
;mov di,offset shut +2③
mov di, 202H ;③
mov cx,21
look:;mov al,es:②
mov al, cs:;②
mov byte ptr ds:,al
mov byte ptr ds:,2
add si,2
inc di
loop look
mov ax,4c00h
int 21h
over:nop
code ends
end start
页:
[1]