小编Lar*_*rtu的帖子

试图从软盘驱动器读取扇区时,INT 13、2挂在x86实模式下

我正在为学校项目编写DOS克隆,并尝试使用BIOS INT 13、2从软盘驱动器(主要是FAT12文件系统的根目录,扇区19)读取某些扇区。我将参数设置正确-或至少我认为是这样做的-然后用AH = 2调用INT 0x13。然后,系统挂起。我不知道为什么。

我正在使用以下代码来调用中断:

mov ah, 0x2   ;Read sectors function
mov al, 1     ;I want to read one sector
mov ch, 0     ;From track 0
mov cl, 2     ;Sector 2
mov dh, 1     ;Head 1
mov dl, [device_number] ;Obtained from BIOS during boot
mov bx, 0x7C0 ;Buffer located at 0x7C00:0x0000*
mov es, bx
mov bx, 0
stc           ;Set carry for older BIOSes that just unset it.
int 0x13      ;Call BIOS INT 0x13
jc .error     ;If there's an …
Run Code Online (Sandbox Code Playgroud)

x86 assembly bios osdev x86-16

3
推荐指数
1
解决办法
528
查看次数

为什么有些架构没有 MOV?

在大学里,我研究了x86x64架构,以及其他使用MOV函数的架构。在与他们一起工作后,当我发现像MIPS r3000或 Commodore 64 这样的产品没有 MOV 并且依赖于保存到内存和从内存加载来在寄存器之间移动值时,我感到很困惑。

所以,我想知道,这背后的原因是什么?我们设计了基于信号处理的架构,至少在这些情况下,MOV 函数的实现仅依赖于同时打开注册表写入和注册表读取信号,从而使其成为一个非常简单的命令。那么,为什么它没有在这些架构中实现呢?他们是如此不同,事情就不是这样的吗?空间问题?时髦设计?

我不禁想知道。

architecture cpu assembly mips cpu-architecture

2
推荐指数
1
解决办法
1535
查看次数

标签 统计

assembly ×2

architecture ×1

bios ×1

cpu ×1

cpu-architecture ×1

mips ×1

osdev ×1

x86 ×1

x86-16 ×1