请教这个NASM的Hello World!

xtdumpling 2009-02-25 12:27:39
org 100h 
section .text
xchg ax, bp;why?
mov dx, msg
int 21h
ret
msg db "Hello, World!$"


用debug调试, ax和bp的值都为0, 调试完也不会有任何显示.
但是在命令行执行就会显示"Hello, World!"

一般都是用ah=09h, dx=offset of str ,int 21h来显示的,
这里是怎么显示字符串的呢??
...全文
281 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
捕鲸叉 2009-02-25
  • 打赏
  • 举报
回复
调用DOS中断
stukid 2009-02-25
  • 打赏
  • 举报
回复
msg db 'Hello, World!','$'

这样试一下!
cxdzxc 2009-02-25
  • 打赏
  • 举报
回复
在第一个 ret 前加了个jmp $,在XP命令行看到了091EHello, World!,否则会一闪而过,啥都看不到
xtdumpling 2009-02-25
  • 打赏
  • 举报
回复
Win2k/XP 091Eh, DOS 0912h.
cxdzxc 2009-02-25
  • 打赏
  • 举报
回复
我在XP的命令行运行hello.com没反应,在虚拟机里运行显示---0912Hello, World!
cnzdgs 2009-02-25
  • 打赏
  • 举报
回复
这是DOS shell的问题了,也许换个运行环境就不是了。
xtdumpling 2009-02-25
  • 打赏
  • 举报
回复
请问,为什么bp=091Eh呢? 一直都是
xtdumpling 2009-02-25
  • 打赏
  • 举报
回复
附上源代码:

;nasm hello.asm -o hello.com
org 100h
section .text
xchg ax, bp;why?
call display_hex_16
mov dx, msg
int 21h
ret
msg db "Hello, World!$"

display_hex_16:
push ax
rol ax,8
call display_hex_8
rol ax,8
call display_hex_8
pop ax
ret

display_hex_8:
pusha
mov bl,al
mov cx,2
@bb:
mov al,bl
rol al,4
mov bl,al
and al,0fh
cmp al,9
jbe @nn
add al,7
@nn:
add al,30h
call display_char
loop @bb
popa
ret

display_char:
pusha
mov dl,al
mov ah,2
int 21h
popa
ret
cnzdgs 2009-02-25
  • 打赏
  • 举报
回复
bp高字节是09,换到ah里面就是int21h的显示字符串功能了。
debug加载程序时会把bp初始化为0。
xtdumpling 2009-02-25
  • 打赏
  • 举报
回复
bp=091Eh ......

在debug/debug32里面就是看不出来?
cnzdgs 2009-02-25
  • 打赏
  • 举报
回复
写段代码把程序开始运行时bp的值显示出来。
xtdumpling 2009-02-25
  • 打赏
  • 举报
回复
调用DOS中断??
这里ah=0,int 21h是程序终止的功能啊!
内容概要:本文围绕“新型电力系统下多分布式电源接入配电网承载力评估方法”的研究,系统性地介绍了基于Matlab的仿真建模与代码实现方案,旨在评估高比例分布式电源(如光伏、风电等)接入背景下配电网的接纳能力。研究融合了智能优化算法(如蜣螂优化、灰狼优化、遗传算法)、多目标优化、鲁棒优化及双层优化模型,结合潮流计算、稳定性分析与故障仿真,构建了完整的承载力评估体系。文档不仅提供核心算法实现,还拓展至微电网调度、储能配置、电氢耦合系统、电动汽车协同等前沿方向,强调“复现+创新”相结合的科研路径,助力研究者快速掌握高水平论文复现技巧并激发原创思路。; 适合人群:具备电力系统、自动化或相关专业背景,熟悉Matlab/Simulink仿真环境,正在从事科研或工程应用的研究生及初级科研人员(工作1-3年);; 使用场景及目标:①复现高水平期刊中关于配电网承载力的优化模型;②开展高比例可再生能源接入下的配电网规划与运行研究;③学习并应用智能优化算法解决复杂电力系统问题;④获取完整科研资源包以加速课题进展与论文撰写; 阅读建议:建议读者关注公众号“荔枝科研社”获取网盘资源,下载全套代码与模型文件,按照文档结构循序渐进学习,重点理解算法设计逻辑与仿真建模细节,结合所提供的复现案例深化对优化模型与工程应用场景的理解,提升科研效率与创新能力。

21,500

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧