(12) wrong parameters: MOV si, message怎么解决
时间: 2024-04-04 12:32:42 浏览: 44
这个错误通常是因为 `message` 变量未被定义或未正确定义。请确保 `message` 变量已经被正确地声明和初始化。如果 `message` 变量已经被正确地定义,那么可能是指令的语法有误。请检查指令语法是否正确,特别是 `MOV` 指令的参数是否正确。`MOV` 指令的第一个参数应该是一个寄存器,第二个参数可以是一个寄存器、一个内存地址或一个立即数。如果问题仍然存在,请提供更详细的代码以便我能够更好地帮助您解决问题。
相关问题
运行时出现(10) wrong parameters: MOV DX, FFFFh
这个错误通常是因为指令MOV DX, FFFFh的操作数类型不匹配,导致指令无法正确执行。
在emu8086中,MOV指令有多种不同的操作数类型,其中包括:
- MOV reg, imm16:将一个16位立即数加载到寄存器中;
- MOV mem, imm16:将一个16位立即数存储到内存中;
- MOV reg, mem:将内存中的一个16位值加载到寄存器中;
- MOV mem, reg:将寄存器中的一个16位值存储到内存中。
根据错误信息,可以看出是指令MOV DX, FFFFh中的操作数类型不正确。DX是一个16位寄存器,因此需要使用MOV reg, imm16或MOV mem, reg指令来加载或存储DX的值。
如果指令MOV DX, FFFFh是用来实现符号位扩展的,可以使用以下指令替换:
```
MOV AH, 0FFh ; 将AH寄存器置为全1
CBW ; 将AX寄存器的高位全部设置为AH的值,实现符号位扩展
```
上述指令将AH寄存器置为全1,然后使用CBW指令将AX寄存器的高位全部设置为AH的值,实现符号位扩展。
将指令MOV DX, FFFFh替换为以上指令,并重新编译和运行程序,应该就可以解决此错误了。
运行时出现(1) wrong parameters: MOV AX, [Buf]
这个错误通常是因为变量Buf没有在数据段中声明,或者数据段声明的位置不正确,导致程序无法正确读取变量Buf的值。
在emu8086中,可以使用以下方式在数据段中声明变量Buf:
```
DATA SEGMENT
Buf DW 0 ; 声明一个2字节的变量Buf
Buf2 DW 0 ; 声明一个2字节的变量Buf2
DATA ENDS
```
上述代码将在数据段中声明两个2字节的变量Buf和Buf2,可以根据实际情况调整变量的大小。
在程序中,需要在代码段的顶部添加以下语句,将段寄存器DS设置为数据段的段地址:
```
MOV AX, @DATA ; 将数据段的段地址加载到寄存器AX中
MOV DS, AX ; 将寄存器AX的值存放到段寄存器DS中
```
上述语句将加载数据段的段地址并存储到段寄存器DS中,使得程序可以正确访问数据段中的变量。
将上述语句和变量声明语句添加到程序中,并修改程序中的变量读取指令为:
```
MOV AX, [Buf] ; 将变量Buf的值加载到寄存器AX中
```
然后重新编译和运行程序,应该就可以正确地读取变量Buf的值了。
阅读全文