困惑灵魂 发表于 2011-6-11 23:58:45

实验 13-1 作业完成

assume cs:code
data segment
   dd2 dup(0) ;调试时临时存放段地址和偏移
strdb 'http://www.fishc.com/',0 ; str当变量名用


first:
;--------------要安装的内容--------------------
;功能:在7ch中断处显示用0结束的字符串
;参数:dh=行号dl=列号cl=颜色DS:SI 指向字符串首地址       
        push ax
        push bx
        push es
       
        mov ax,0b800h
        mov es,ax;显示区---段地址
       
        mov ax,0
        ;计算行偏移
        mov al,dh
        mov bl,80*2
        mul bl
        push ax
        ;计算列偏移
        mov al,dl
        mov bl,2
        mul bl
        pop bx
        add bx,ax;显示区---总偏移

s:       
        mov al,
        cmp al,0 ;比较是否到字符串尾部
        je ok
        mov es:,al
        mov es:,cl ;置颜色属性
        inc si
        add bx,2
        JMP short s
ok:       
        pop es
        pop bx
        pop ax
        iret
;--------------要安装的内容--------------------
last:       
      nop
                      
data ends


code segment
start:
        mov ax,data
        mov ds,ax
        ;------调试安装内容代码--------
        ;调试无错后去除这段
        ;mov word ptr ,data
        ;mov word ptr ,offset first
        ;mov dl,12 ;参数
        ;mov dh,5;参数
      ;mov cl,11001010b;参数
      ;mov si,offset str ;参数
        ;jmp dword ptr ds:
       
;-------------------安装----------------
       
        mov si,offset first
        mov ax,0
        mov es,ax
        mov di,200h
        mov cx,offset last - offset first ;安装内容-长度
        cld
        rep movsb
;-------改变中断地址---------------------
        mov word ptr es:,200h;一个地址4字节 地址=编号*4
        mov word ptr es:,0   ;偏移占2字节 段占2字节
       
;---------调用改变后的7ch中断--------------
        mov dh,10 ;参数
        mov dl,10 ;参数
        mov cl,2;参数
        mov si,offset str;参数
        int 7ch
       
        mov ax,4c00h
        int 21h

code ends
end start
;emu8086 4.08 测试通过
页: [1]
查看完整版本: 实验 13-1 作业完成