编译引导加载程序代码,操作码和操作数的无效组合

问题描述

我正在为ms dos编译/组装引导加载程序代码,如下所示(行号仅用于演示目的)

1. START: CLI               ; disable maskable Interrupts
2. XOR  AX,AX        ; Zero-out the Accumulator and set
3. MOV  SS,AX        ;  Stack Segment register to ZERO.
4. MOV  SP,0x7C00        ; Stack Pointer top Now 0000:7C00
5. PUSH SS           ;|
6. POP  ES           ;|Makes sure Extra Segment = ZERO.
7. MOV  BX,0x0078      ; 0078h ---> BX
8. LABEL1: LDS  SI,SS:[BX]   ; SS is still zero...
                                 ; Load Far Pointer from [SS:0078]
                                 ; into DS:SI  (usually 0000:0522).

上面的代码在第8行给出了以下错误

error: invalid combination of opcode and operands

在某些行代码之后,我遇到了另一个错误,如下所示:

9. MOV     CH,[MediaDescriptor]
10. MOV     DL,[DriveNumber]
11. MOV     BX,[7C49h]
12. MOV     AX,[LABEL7C4B]
13. JMP     FAR 0070:0000   ; Same as jumping to
                           ; 0000:0700 (start DOS).
; Boot Record found OS successfully... Jump to OS 
;initialization!

当我编译上面给定的代码时,编译器在第13行给出以下错误

 error: mismatch in operand sizes

出什么问题了,请提供帮助和指导。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)