code segment
assume cs:code
start: mov ax,cs ;安装程序到软盘
mov es,ax
mov bx,offset os
mov ah,3
mov al,2
mov ch,0
mov cl,1
mov dh,0
mov dl,0
int 13h
mov ax,4c00h
int 21h
os: jmp short osstart ;任务程序
a db '1) reset pc '
b db '2) start system '
c db '3) clock '
d db '4) set clock '
e db 'please input:'
osstart: mov ax,cs ;显示字幕
mov ss,ax
mov sp,512
mov ds,ax
mov si,offset a
mov ax,0b800h
mov es,ax
mov di,160*10+32*2
mov cx,4
show:push cx
mov cx,16
s: mov al,ds:[si]
mov es:[di],al
add si,1
add di,2
loop s
add di,128
pop cx
loop show
mov cx,13 ;显示要输入的一行
s1:mov al,[si]
mov es:[di],al
add si,1
add di,2
loop s1
mov bh,0 ;置光标位置
mov dh,14
mov dl,45
mov ah,2
int 10h
stack1 db 512-($-offset os) dup(0)
code ends
end start
当系统从软盘启动时显示的是乱码,我实在想不出是什么原因?
当我把这程序改写一下,不当做操作系统时,能正常显示的。