我有这个任务来制作启动程序来显示我的电脑上的分区磁盘..我搜索了很多并发现将这些信息保存在 1BE 中的部分所以我试图从那个扇区读取..我发现了一些代码和试着研究了interrupt 13这段代码,不知道感觉有什么问题
然后当我使用 NASM 运行它时,它显示错误无法识别指令 ORG
多谢 :) :) :)
[BITS 16] ; 16 bit code generation
[ORG 0x7C00] ; Origin location
; Main program
main: ; Label for the start of the main program
start:
mov ax,cs
mov ds,ax
mov es,ax
mov ss,ax
sti
reset: mov ah,0h ;resetting the drive to the first sector
mov dl, 0x80
int 13h
js reset
read: mov ax,1BEh ;reading sectors into memory address 0x1BE:0
mov es,ax
xor bx,bx
mov ah,02h
mov al,01h ;reading 1 sector
mov cx, 0001h ; track 0, sector 1
mov dx, 0000h ; head 0, drive 0
int 13h
jc errp ; detect error
ret
jmp $ ; Never ending loop
; Procedures
errp: ; process error here
mov ax,0x0000
mov ds,ax
mov si, ERRR ; Load the string into position for the procedure.
call PutStr
PutStr: ; Procedure label/start
; Set up the registers for the interrupt call
mov ah,0x0E ; The function to display a chacter (teletype)
mov bh,0x00 ; Page number
mov bl,0x07 ; Normal text attribute
.nextchar
lodsb
or al,al
jz .return
int 0x10 ; Run the BIOS video interrupt
jmp .nextchar ; Loop back round tothe top
.return ; Label at the end to jump to when complete
ret ; Return to main program
; Data
ERRR db 'ERROOOORR',13,10,0
; End Matter
times 510-($-$$) db 0
dw 0xAA55