1

我正在尝试将 as86 的这一程序集转换为 fasm。我有3个问题:

1) 为什么 seg es给定的error: illegal instruction.this 在 16 位中无效?

2) mov byte [0],0x41(FASM 语法) 是否完全等同于mov [0],#0x41(as86 语法)?如果不是,你能告诉我相当于吗?

3) 为什么entry start在 FASM 中给出错误?

这是程序集代码:

as86

entry start
start:
       mov ax,#0xb800
       mov es,ax
       seg es
       mov [0],#0x41
       seg es
       mov [1],#0x1f
 loop1: jmp loop1

和我写的 fasm 版本:

FASM

use16
format binary

start:
    mov ax,0xb800
    mov es,ax
    seg es
    mov byte [0],0x41
    seg es
    mov byte [1],0x1f
loop1:  jmp loop1
4

2 回答 2

1

正确的语法是:

mov byte [es:0],0x41    ;I'm not sure if this instruction is supported under 16 bit CPU

或者

push bx 
mov  bx,0   ;you can use also: xor  bx, bx
mov  byte [es:bx],0x41
pop  bx
于 2013-01-19T22:52:33.343 回答
0

seg es看起来很腥。尝试以下操作:

mov byte ptr es:[0],0x41
于 2013-01-19T21:43:41.747 回答