You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:as86编译汇编引导代码时出现'as: error reading input'错误

解决as86编译时as: error reading input的问题

可能的原因及解决方案

1. 确认bin86工具包已安装

Ubuntu默认不包含as86,需先安装对应工具包:

sudo apt update && sudo apt install bin86

2. 检查文件路径与权限

确保在ts.s所在目录执行编译命令,或用绝对路径指定文件:

as86 /绝对路径/ts.s -o ts.o

注:若文件权限正常,无需使用sudo,普通用户权限即可完成编译。

3. 修正汇编语法问题

as86采用Minix风格的8086汇编语法,你的代码存在几处语法不兼容点,这是触发错误的核心原因:

  • as86中立即数前缀为$而非#,需将所有#替换为$,例如:
    movb ah, $2          // 原代码:movb ah, #2
    movb al, $BSECTORS   // 原代码:movb al, #BSECTORS
    push $msg            // 原代码:push #msg
    
  • 补充未定义符号:_NSEC、_main、_prints在当前代码中未定义,需在当前文件补充常量定义(如_NSEC = 1),或确保这些符号存在于关联编译文件中。

4. 验证编译命令格式

正确的as86编译命令格式:

as86 ts.s -o ts.o

若需生成纯8086模式的16位目标文件,可添加-0参数:

as86 -0 ts.s -o ts.o

修改后的示例代码片段

.globl _main,_prints,_NSEC
.globl _getc,_putc,_readfd,_setes,_inces, _error   
BOOTSEG = 0x9800                                   
OSSEG = 0x1000                                     
SSP = 32*1024                                      
BSECTORS = 2
_NSEC = 1  // 补充未定义的常量

start:
mov ax, BOOTSEG                                    
mov es, ax

xor dx, dx                                         
xor cx, cx                                         
incb cl                                            
xor bx, bx                                         
movb ah, $2                                        
movb al, $BSECTORS
int 0x13

jmpi next, BOOTSEG
next:
mov ax, cs
mov ds, ax
mov ss, ax
mov sp, $SSP
call _main
jmpi 0, OSSEG 

_getc: 
xorb ah, ah
int 0x16
ret
_putc:
push bp
mov bp, sp
movb al, 4[bp]
movb ah, $14
int 0x10
pop bp
ret
_readfd:
push bp
mov bp, sp
movb dl, $0x00
movb dh, 6[bp]
movb cl, 8[bp]
incb cl
movb ch, 4[bp]
xor bx, bx
movb ah, $0x02
movb al, _NSEC
int 0x13
jb _error
pop bp
ret
_setes:
push bp
mov bp, sp
mov ax, 4[bp]
mov es, ax
pop bp
ret
_inces:
mov bx, _NSEC
shl bx, $5
mov ax, es
add ax, bx
mov es, ax
ret
_error:
push $msg
call _prints
int 0x19
msg: .asciz "Error"

内容的提问来源于stack exchange,提问作者Saleh Hatefinya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 05:23:12