avatar10010 发表于 2014-10-7 22:59:36

实验16

本帖最后由 avatar10010 于 2014-10-8 10:52 编辑

assume cs:code
code segment
start:                  
    mov ax,cs
    mov ds,ax
    mov si,setscreen
    xor ax,ax
    mov es,ax
    mov di,200h
    mov cx,endscreen-setscreen
    cld
    rep movsb
    mov word ptr es:,200h
    mov word ptr es:,0

    mov ah,2   ;测试int 7ch中断
    mov al,4   ;测试int 7ch中断
    int 7ch      ;测试int 7ch中断
    mov ax,4c00h
    int 21h         
    org 200h
       
setscreen:
        jmp begin
        table dw sub0,sub1, sub2, sub3
begin:
        push bx
        cmp ah,3
        ja sret
        mov bl,ah
        xor bh,bh
        add bx,bx
        call table
sret:
        pop bx
        iret
       
sub0:
        push bx
        push cx
        push es
       
        mov bx,0b800h
        mov es,bx
        xor bx,bx
        mov cx,2000
s0:
        mov byte ptr es:,' '
        add bx,2
        loop s0
       
        pop es
        pop cx
        pop bx
        ret
       
sub1:
        push bx
        push cx
        push dx
        push es
       
        mov bx,0b800h
        mov es,bx
        mov bx,1
        and byte ptr es:,11111000b
        or es:,al
        mov dl,es:
        mov cx,2000
s1:
        mov es:,dl
        add bx,2
        loop s1
               
        pop es
        pop dx
        pop cx
        pop bx
        ret
       
sub2:
        push bx
        push cx
        push dx
        push es
       
        mov cl,4
        shl al,cl
        mov bx,0b800h
        mov es,bx
        mov bx,1
        and byte ptr es:,10001111b
        or es:,al
        mov dl,es:
        mov cx,2000
s2:
        mov es:,dl
        add bx,2
        loop s2
       
        pop es
        pop dx
        pop cx
        pop bx
        ret
       
sub3:
        push cx
        push si
        push di
        push es
        push ds
       
        mov si,0b800h
        mov es,si
        xor di,di
        mov ds,si
        mov si,160
        mov cx,24*80
        cld
        rep movsw
       
        mov cx,80
s3:
        mov byte ptr es:,' '
        add di,2
        loop s3
       
        pop ds
        pop es
        pop di
        pop si
        pop cx
        ret
       
endscreen:
        nop
          
code ends
end start

15岁的小朋友 发表于 2014-10-8 08:16:03

int 7ch 是计算ax的平方的 mov ah 0时ax已经为0了

avatar10010 发表于 2014-10-8 09:20:03

15岁的小朋友 发表于 2014-10-8 08:16
int 7ch 是计算ax的平方的 mov ah 0时ax已经为0了

我是重新安装的int 7ch中断例程

大个的糖果 发表于 2014-11-1 01:54:31

xusiman 发表于 2017-2-21 23:42:44

偏移很容易混淆
页: [1]
查看完整版本: 实验16