level 1
mqron
楼主
[ORG 0x7C00]
Main:
;---------------------------------------------------------------------------
push WORD MSG1
push WORD 0x28
push WORD 1
push WORD 0
call x16 ;显示信息
;----------------------------------------------------------------------------------------------
jmp $
;----------------------------------------------------------------------------
x16:
push bp;
mov bp,sp
mov bx,[bp+4] ;例
mov ax,[bp+6] ;行
mov cx,[bp+8] ;色
mov si,[bp+10] ;字
imul ax,80
add ax,bx
imul ax,2
mov di,ax
mov ax, 0B800h
mov gs, ax
.1:
or ax,ax
mov al,[si]
cbw
mov cl,16
idiv cl
mov dl,al
mov dh,ah
cbw
add ax,xxx
mov bx,ax
mov al,[bx]
call .2
or ax,ax
mov al,dh
cbw
add ax,xxx
mov bx,ax
mov al,[bx]
call .2
inc si
mov al,[si]
cmp al,0
jz .0
jmp .1
.2:
mov cx,[bp+8] ;色
mov ah,cl
mov [gs:di],ax ; 屏幕第 0 行, 第 39 列。
add di,2
ret
.0:
pop bp
ret
;-----------------------------------------------------------------------------------------------
;数据定义
BOOTDRIVER db 0
xxx db "0123456789ABCDEF"
MSG1 db 0x55,0xAA,0x55,"" ;输出信息
db 13 , 10 , 0 ;13 表示回车,10 表示换行,
;0 表示字符串结束
times 510-($-$$) db 0
db 0x55
db 0xAA
这段为什么不是显示 55 AA 55 0D 0A 呢
而是 55 和别的字符 55 0D 0A 呢
2011年02月08日 07点02分
1
Main:
;---------------------------------------------------------------------------
push WORD MSG1
push WORD 0x28
push WORD 1
push WORD 0
call x16 ;显示信息
;----------------------------------------------------------------------------------------------
jmp $
;----------------------------------------------------------------------------
x16:
push bp;
mov bp,sp
mov bx,[bp+4] ;例
mov ax,[bp+6] ;行
mov cx,[bp+8] ;色
mov si,[bp+10] ;字
imul ax,80
add ax,bx
imul ax,2
mov di,ax
mov ax, 0B800h
mov gs, ax
.1:
or ax,ax
mov al,[si]
cbw
mov cl,16
idiv cl
mov dl,al
mov dh,ah
cbw
add ax,xxx
mov bx,ax
mov al,[bx]
call .2
or ax,ax
mov al,dh
cbw
add ax,xxx
mov bx,ax
mov al,[bx]
call .2
inc si
mov al,[si]
cmp al,0
jz .0
jmp .1
.2:
mov cx,[bp+8] ;色
mov ah,cl
mov [gs:di],ax ; 屏幕第 0 行, 第 39 列。
add di,2
ret
.0:
pop bp
ret
;-----------------------------------------------------------------------------------------------
;数据定义
BOOTDRIVER db 0
xxx db "0123456789ABCDEF"
MSG1 db 0x55,0xAA,0x55,"" ;输出信息
db 13 , 10 , 0 ;13 表示回车,10 表示换行,
;0 表示字符串结束
times 510-($-$$) db 0
db 0x55
db 0xAA
这段为什么不是显示 55 AA 55 0D 0A 呢
而是 55 和别的字符 55 0D 0A 呢