社区
汇编语言
帖子详情
关于masm6.14 16位和32位程序
zhushouqqq
2009-06-06 11:54:20
最近在看杨季文的书
第十章的第一个例子 我在masm6.14下编译不通过
有网友说 是我用masm的时候没有指定段是16位 还是32位
我想问的问题有
1 masm如果不加段说明 默认的是16位 还是32位
2 如果程序里有16位 和32位的代码(实模式到保护模式再到实模式) 那么如何使用连接器 才能正确连接呢 用什么版本的连接器
3 谁能介绍下关于masm中文的 资料 E文看不懂 - - !!
急 再线等60分钟
...全文
185
8
打赏
收藏
关于masm6.14 16位和32位程序
最近在看杨季文的书 第十章的第一个例子 我在masm6.14下编译不通过 有网友说 是我用masm的时候没有指定段是16位 还是32位 我想问的问题有 1 masm如果不加段说明 默认的是16位 还是32位 2 如果程序里有16位 和32位的代码(实模式到保护模式再到实模式) 那么如何使用连接器 才能正确连接呢 用什么版本的连接器 3 谁能介绍下关于masm中文的 资料 E文看不懂 - - !! 急 再线等60分钟
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zhushouqqq
2009-06-09
打赏
举报
回复
[Quote=引用 3 楼 cnzdgs 的回复:]
1 masm如果不加段说明 默认的是16位 还是32位
.model flat模式是32位,其它模式如果在.model之前指定指令集则默认32位,其余情况默认为16位。
2 如果程序里有16位 和32位的代码(实模式到保护模式再到实模式) 那么如何使用连接器 才能正确连接呢 用什么版本的连接器
用MASM附带的link.exe即可,没有特别的地方。
3 谁能介绍下关于masm中文的 资料 E文看不懂 - - !!
不锻炼永远看不懂。
[/Quote]
不是知道你说的link是什么版本
PE不能在在DOS下执行吧。
link3是 le格式的 link5是PE格式的
zhushouqqq
2009-06-09
打赏
举报
回复
额。。
问题已经解决了
用masm614编译 ml /c test.asm
然后 用link3连接的
因为dos程序是/omf格式
zhushouqqq
2009-06-06
打赏
举报
回复
无人问津?
cxdzxc
2009-06-06
打赏
举报
回复
[Quote=引用 15 楼 cxdzxc 的回复:]
LGDT qword ptr cs:GDTR ;masm5.0在这里要用qword,因为MASM5.0有这个BUG,其它MASM6.XX要用fword
[/Quote]
mydo看看我在这里链接里15楼的回复吧
http://topic.csdn.net/u/20090311/11/937a87ca-5599-466b-bc23-8f87f25228d5.html
大熊猫侯佩
2009-06-06
打赏
举报
回复
出错提示?
cxdzxc
2009-06-06
打赏
举报
回复
如果使用.386P伪定义的话,默认的编译方式是32位的,要正确编译混合代码模式中的16位段的程序,必须使用USE16编译伪指令,在后面的32位程序段重新使用USE32伪指令重新定义回32位编译方式,这里有以前发的一个帖子
http://topic.csdn.net/u/20090311/11/937a87ca-5599-466b-bc23-8f87f25228d5.html
,在14楼有一个这样的例子,但愿能对你有用了... ^_^
.386P
CSEG16 SEGMENT USE16
ASSUME CS:CSEG16
ORG 100H
START: cli
mov bx,offset cs:xianshixinxi_16
mov di,20*2
call xianshi_16
xor eax,eax
mov ax,cs
mov word ptr cs:seg_offset_16+2,ax
shl eax,4
xor ebx,ebx
mov bx,SEG CSEG_P32
SHL EBX,4
mov word ptr cs:cs_SEL32+2,bx
shr ebx,16
mov byte ptr cs:cs_SEL32+4,bl
xor ebx,ebx
mov bx,SEG CSEG_P16
SHL EBX,4
mov word ptr cs:cs_SEL16+2,bx
shr ebx,16
mov byte ptr cs:cs_SEL16+4,bl
xor edx,edx
mov dx,offset cs:gdt0
add eax,edx
mov dword ptr cs:GDTR+2,eax
LGDT qword ptr cs:GDTR
mov eax,cr0
or al,1
mov cr0,eax
db 0eah
seg_offset_16_P32: dw 0
dw offset cs_SEL32 - offset gdt0
xianshixinxi_16_dos_prog:
mov bx,offset cs:xianshixinxi_16_dos
mov di,80*2*3+20*2
call xianshi_16
return_dos:
mov ah,4ch
int 21h
xianshi_16:
mov ax,0b800h
mov es,ax
mov dh,0F4h
XIANSHI_16_1:
mov dl,cs:[bx]
cmp dl,0
je xianshi_over_16
mov word ptr es:[di],dx
add di,2
inc bx
jmp XIANSHI_16_1
xianshi_over_16: ret
;--------------------------------------------------------------------------------------------------------
gdt0: DQ 0
cs_SEL32: dw 0ffffh,0000,9a00h,00CFh
cs_SEL16: dw 0ffffh,0000,9a00h,0080h
DATA_SEL32: dw 0ffffh,0000,9200h,00CFh
GDTR: DW $-gdt0-1,0,0
;----------------------------------------------------------------------------------------
xianshixinxi_16 db "HELLO WORLD_DOS_16",0
xianshixinxi_16_dos db "RETURN DOS---QQ GROUP:83372198;QQ:750347821;
http://biosos.5d6d.com/
NAME:CXDZXC Address:LANZHOU DATE:2009-3-15 ",0
;----------------------------------------------------------------------------------------
CSEG16 ENDS
;-------------------------------------------------------------------------------------------------------
CSEG_P32 SEGMENT USE32
assume CS:CSEG_P32
MOV dx,DATA_SEL32 - gdt0
MOV es,dx
mov edi,0b8000h+80*2*1+20*2
XOR EBX,EBX
mov Ebx,offset cs:xianshixinxi_P32
mov dh,0F4h
xianshi_P32:
mov dl,cs:[ebx]
cmp dl,0
je xianshi_over_P32
mov word ptr es:[edi],dx
add edi,2
inc ebx
jmp xianshi_P32
xianshi_over_P32:
db 0eah
SEL_offset_P32_P16: dw 0,0,offset cs_SEL16 - offset gdt0
;----------------------------------------------------------------------------------------
xianshixinxi_P32 db "HELLO WORLD_P32",0
;----------------------------------------------------------------------------------------
CSEG_P32 ENDS
;-------------------------------------------------------------------------------------------------------
CSEG_P16 SEGMENT USE16
assume CS:CSEG_P16
mov edi,0b8000h+80*2*2+20*2
XOR EBX,EBX
mov bx,offset cs:xianshixinxi_P16
mov dh,0F4h
xianshi_P16:
mov dl,cs:[ebx]
cmp dl,0
je xianshi_over_P16
mov word ptr es:[edi],dx
add edi,2
inc ebx
jmp xianshi_P16
xianshi_over_P16:
mov eax,cr0
AND al,0FEH
mov cr0,eax
db 0eah
seg_offset_16: dw offset xianshixinxi_16_dos_prog,0
;----------------------------------------------------------------------------------------
xianshixinxi_P16 db "HELLO WORLD_P16",0
;----------------------------------------------------------------------------------------
CSEG_P16 ENDS
END START
cnzdgs
2009-06-06
打赏
举报
回复
1 masm如果不加段说明 默认的是16位 还是32位
.model flat模式是32位,其它模式如果在.model之前指定指令集则默认32位,其余情况默认为16位。
2 如果程序里有16位 和32位的代码(实模式到保护模式再到实模式) 那么如何使用连接器 才能正确连接呢 用什么版本的连接器
用MASM附带的link.exe即可,没有特别的地方。
3 谁能介绍下关于masm中文的 资料 E文看不懂 - - !!
不锻炼永远看不懂。
BAYNPU
2009-06-06
打赏
举报
回复
把源代码贴出来看看吧。
汇编语言
MASM
masm
6.0
汇编语言
MASM
MASM
6.0是1991年推出的,支持80486处理器,它对
MASM
进行重新组织,并提供了许多类似高级语言的新特点。
MASM
6.0之后又有一些改进,微软又推出
MASM
6.11,利用它的免费补丁
程序
可以升级到
MASM
6.14
,支持到Pentium III指令系统。
汇编语言编程工具
Masm
6.11
良好的编程平台,理想实现汇编。 This document contains release notes for the Microsoft
MASM
Professional Development System, version
6.14
. The information in this document and in the Microsoft Advisor (on-line help) is more up-to-date than that in the manuals.
软件逆向高级工程
汇编篇:一个
程序
编译完成之后是如何通过在计算机运行起来的,其中少不了底层知识的汇编指令,汇编篇中将深入浅出的带领同学们对
MASM
32SDK的一套汇编库中开发
程序
,熟悉汇编的原理,如何运用汇编写出一套花指令,...
解决
masm
在64
位
windows版本不兼容无法运行
最近在学校机房用
MASM
编译汇编代码无奈在64
位
windows中不兼容。 找到了一种解决办法:用DOSBox0.74挂载
masm
到其他盘,在其他盘中进行编译操作。 具体方法: 1.下载安装DOSBox0.74之后运行会出来命令框; 2.mount输入命令Mount e: d:/
masm
(我们是将
masm
文件放在D盘下,用命令挂载到E盘
masm
版本简介
ASM32 是一个为那些对学习或者编写 32
位
微软汇编(
MASM
)感兴趣 的
程序
员提供的工作环境,它最流行的版本是 8.0 版,而我所知道最新版本是 9.0 版。但是请大家一定要注意,这里的 8.0 版和 9.0 版不是指
MASM
编译器 ( 即 ML) 的版本,而是
MASM
32 开发环境的版本。 经常看到网上有网友发的贴把这两个概念都搞混了。 那么
MASM
(M
汇编语言
21,459
社区成员
41,601
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章