鱼C论坛

 找回密码
 立即注册
查看: 2303|回复: 2

汇编语言那里错了

[复制链接]
发表于 2012-12-16 20:34:43 | 显示全部楼层 |阅读模式
1鱼币
.386 ; 指令集
.model flat,stdcall ; 工作模式
option casemap:none ; 格式

; 数据段
.data
a db 'Hello, World !',0
; 代码段
.code
start:
mov ax,offset a
mov ds,ax
mov ax,0b800h
mov es,ax
mov cx,14
s:
mov al,[si]
mov es:[di],al
inc si
add di,2
loop s
end start ; 指定程序的入口
0.asm(20) : error A2155: cannot use 16-bit register with a 32-bit address
0.asm(21) : error A2155: cannot use 16-bit register with a 32-bit address
0.asm(14) : error A2022: instruction operands must be the same size
怎么解决





想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-12-17 07:47:57 | 显示全部楼层
本帖最后由 s0512 于 2013-1-20 13:00 编辑

你用的是Flat 模式(32位地址),而报错那几行代码你使用的是SI、DI,把
它们改成ESI EDE,就可以解决了。
另~Falt模式使用的是32位地址空间,ES,DS这些16位段寄存器在保护模式下用法是不同的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-29 10:24:58 | 显示全部楼层
{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-19 02:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表