zhenglibob 发表于 2012-8-24 11:03:31

关于小甲鱼汇编内中断的除法中断处理程序

昨天试了下面程序还可以,今天在屏幕上却显示了乱码,不是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

lukelqz 发表于 2012-8-24 11:03:32

http://bbs.fishc.com/thread-20960-1-3.html 六楼
应该是mov di,offset shut +2这句的问题
你要把di指向0:202H才行啊。因为中断例程的字符串在这个地址。
offset shut是原安装程序的偏移地址

zhenglibob 发表于 2012-8-24 12:55:31

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

_nosay丶 发表于 2012-8-24 13:37:49

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]
查看完整版本: 关于小甲鱼汇编内中断的除法中断处理程序