社区
汇编语言
帖子详情
关于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分钟
...全文
310
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
打赏
举报
回复
把源代码贴出来看看吧。
实用代码脚本易语言源码时间
实用代码脚本易语言源码时间
实用代码脚本易语言源码设置控件锚点
实用代码脚本易语言源码设置控件锚点
64:点控大师:自定义快捷键驱动的鼠标自动化工具高效简化重复操作软件.rar
64:点控大师:自定义快捷键驱动的鼠标自动化工具高效简化重复操作软件
复现新型电力系统下多分布式电源接入配电网承载力评估方法研究(Matlab代码实现)
内容概要:本文围绕“新型电力系统下多分布式电源接入配电网承载力评估方法”的研究,系统性地介绍了基于Matlab的仿真建模与代码实现方案,旨在评估高比例分布式电源(如光伏、风电等)接入背景下配电网的接纳能力。研究融合了智能优化算法(如蜣螂优化、灰狼优化、遗传算法)、多目标优化、鲁棒优化及双层优化模型,结合潮流计算、稳定性分析与故障仿真,构建了完整的承载力评估体系。文档不仅提供核心算法实现,还拓展至微电网调度、储能配置、电氢耦合系统、电动汽车协同等前沿方向,强调“复现+创新”相结合的科研路径,助力研究者快速掌握高水平论文复现技巧并激发原创思路。; 适合人群:具备电力系统、自动化或相关专业背景,熟悉Matlab/Simulink仿真环境,正在从事科研或工程应用的研究生及初级科研人员(工作1-3年);; 使用场景及目标:①复现高水平期刊中关于配电网承载力的优化模型;②开展高比例可再生能源接入下的配电网规划与运行研究;③学习并应用智能优化算法解决复杂电力系统问题;④获取完整科研资源包以加速课题进展与论文撰写; 阅读建议:建议读者关注公众号“荔枝科研社”获取网盘资源,下载全套代码与模型文件,按照文档结构循序渐进学习,重点理解算法设计逻辑与仿真建模细节,结合所提供的复现案例深化对优化模型与工程应用场景的理解,提升科研效率与创新能力。
108:桌面日程提醒工具-安静版:半透明悬浮标签展示待办任务,支持固定时间与范围时间任务,按星期多时段自定义.rar
108:桌面日程提醒工具-安静版:半透明悬浮标签展示待办任务,支持固定时间与范围时间任务,按星期多时段自定义
汇编语言
21,500
社区成员
41,617
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章