社区
汇编语言
帖子详情
请教各位,关于push imm16的问题。
bingking68
2008-02-20 12:04:12
如标题所讲,我希望通过堆栈,用push imm16实现将A000代入ES里。
代码如下:
PUSH A000H
POP ES
但是,DEBUG显示:error A2006: undefined symbol : A000
请问,我这样写是否有问题,该如何写呢?
开发平台:RadASM -> MASM..
...全文
124
9
打赏
收藏
请教各位,关于push imm16的问题。
如标题所讲,我希望通过堆栈,用push imm16实现将A000代入ES里。 代码如下: PUSH A000H POP ES 但是,DEBUG显示:error A2006: undefined symbol : A000 请问,我这样写是否有问题,该如何写呢? 开发平台:RadASM -> MASM..
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bingking68
2008-03-04
打赏
举报
回复
非常感谢各位的帮助,特别是cnzdgs,回了5个帖..
1.本来,我可以好像BAYNPU所说的:
mov ax,a000h
push ax
pop es
但是,觉得多了一句“mov ax,a000h”,对于代码来说,不够优化。
2.另外,像zara所说在,可以在开头加上.586。
这样写也可以解决这个问题。
但是这样只能在简化段运用,若在完整段里,可以这样写吗?
3.还有,如cnzdgs所说的,
把 PUSH 0A000H
改为 DB 068H
DW 0A000H
这里,我有个想法,如果不改为OP码,不知道还是否会有些更优化的写法。。
在此,我们一起交流一下啊!
感谢不尽!
BAYNPU
2008-02-20
打赏
举报
回复
no
mov ax,a000
push ax
pop es
cnzdgs
2008-02-20
打赏
举报
回复
原来是这问题,加.386就可以了。
zara
2008-02-20
打赏
举报
回复
是 dos16 类程序吧? 要使用 push 立即数 这样的指令, 需要在程序的开头加上:
.model small ; 或者是 tiny 等其它自己程序适意的模式
.586
cnzdgs
2008-02-20
打赏
举报
回复
error A2001: immediate operand not allowed。
这问题与编译器有关,如果上面这两种方法也不行,你就直接写目标码。
DB 68H
DW 0A000H
cnzdgs
2008-02-20
打赏
举报
回复
push word ptr 0a000h
cnzdgs
2008-02-20
打赏
举报
回复
push word 0a000h
bingking68
2008-02-20
打赏
举报
回复
cnzdgs
如果我把A000H改为0A000H,调试器会显示error A2001: immediate operand not allowed。
这样还是不行啊!
cnzdgs
2008-02-20
打赏
举报
回复
常数不能以字母开头,A000H改为0A000H。
相关推荐
jdh-8:具有完全自定义架构的 8 位小型机
JDH-8 完全定制的 8 位小型计算机,具有独特的架构和玩 PONG 的明确目标。 上面的程序在模拟器中运行,源码见 。 。 机器说明 特征 8 位数据宽度 16 位地址总线(64 KiB 可用内存 + 银行) 8 个完全通用的寄存器(5 个普通 + 2 个间接地址 + 1 个标志) 16条指令RISC架构 用于设备通信的端口映射 I/O 指令系统: 0: MW reg, imm8/reg -> reg = imm8/reg 1: LW reg, [HL/
imm16
] -> reg = [HL/
imm16
] 2: SW [HL/
imm16
], reg -> [HL/
imm16
] = reg 3:
PUSH
imm8/reg -> [SP--] = imm8/reg 4: POP reg -> reg = [++SP]
(32位汇编 七)堆栈/栈(stack)
PUSH
指令 操作码 操作数
PUSH
r32
PUSH
r16
PUSH
m16
PUSH
m32
PUSH
imm8/
imm16
/imm32 POP指令 操作码 操作数 POP r32 POP r16 POP m16 POP m32
PUSH
AD指令 保护现场 POPAD指令 恢复现场
端口
在8086中端口号是16位的.端口号范围0x0000~0xFFFF 读端口指令:in 写端口指令:out Nasm汇编格式: in al,
imm16
// 从端口读取一个字节 in ax,
imm16
//从端口读取一个字 out
imm16
,al // 向端口写入一个字节 out
imm16
,ax //向端口写入一个字 注意: 在in和out指令
x86汇编第三天学习之堆栈以及跳转指令
PUSH
指令 功能: 1、往堆栈中压入数据 2、栈顶指针ESP寄存器-4 格式:
PUSH
r32
PUSH
r16
PUSH
m16
PUSH
m32
PUSH
imm8/
imm16
/imm32 举例: 堆栈图: POP指令 功能: 1、往堆栈中取数据 2、栈顶指针ESP寄存器+4 格式: POP r32 POP r16 POP m16 POP m32 JMP指令 目的: 修改EIP...
c语言标志寄存器
七.标志寄存器
Push
指令:
PUSH
r32
PUSH
r16
PUSH
m16
PUSH
m32
PUSH
imm3/
imm16
/imm32 POP指令 POP时加几取决于后面容器的宽度 POP r32 POP r16 POP m16 POP m32
PUSH
AD指令:
PUSH
AD指令压入32位寄存器,其入栈顺序是:EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI . POPAD指令 1.POPAD指令则是
PUSH
AD指令的逆操作。 2.POPAD指令则是
发帖
汇编语言
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
2.1w+
社区成员
4.1w+
社区内容
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
帖子事件
创建了帖子
2008-02-20 12:04
社区公告
暂无公告