注册 登录
编程论坛 汇编论坛

64位编译汇编程序真难

Memoni 发布于 2015-11-15 19:33, 5238 次点击
只有本站会员才能查看附件,请 登录

程序代码:
data segment
a db 'hello world$'
data ends
stack1 segment stack
dw 21h dup(?)
stack1 ends
code segment
assume cs:code,ss:stack1,ds:data
main:
mov ax,data
mov ds,ax
lea dx,a
mov ah,09h
int 21h
code ends
end main

编译就提示非法指令,搜索也找不到答案。

[此贴子已经被作者于2015-11-15 19:44编辑过]

7 回复
#2
Memoni2015-11-15 19:37
有没有前辈来救我一下。
#3
八画小子2015-11-16 17:27
看代码你写的是16位的实模式代码,怎么会是64位的呢?
#4
hu9jj2015-11-16 20:11
楼上正解
#5
zklhp2015-11-17 14:35
以下是引用八画小子在2015-11-16 17:27:01的发言:

看代码你写的是16位的实模式代码,怎么会是64位的呢?

楼主的意思应该是 【在64位环境下进行16位编程很困难】

当然了 以前32位的Windows提供一个16位环境的模拟器 所以马马虎虎可以进行16位编程 而64位的系统里面已经没有这个模拟器了 所以不行

解决方法也有很多 虽然都不怎么方便

+ 用16位模拟器
+ 虚拟机安装一个16位环境
+ 虚拟机安装一个32位Windows
+ 双系统安装32位Windows/16位环境

总的来说 已经淘汰的东西了 也别太认真了 一门课而已
#6
wmf20142015-11-17 20:38
#7
Alar302015-12-17 18:25
貌似
还是选编译器的问题
真正难的还是X64汇编……
#8
zhulei19782016-03-29 10:10
出了问题,才能找到解决的办法
1