闲来无聊,想重新学习一下汇编,第一个helloworld,想起绝影的一句话"你们学高级语言,但是高级语言会变,我学低级语言,学了永远也不会变!" - -b

stack segment stack ; 定义堆栈段
db 100 dup(?) ;堆栈段长100字节, 这里db就是字节的意思,如果是用dw就是字,100 dup(?) 中的dup是重复的意思,这句话是重复100遍,一遍定义一个字节,每个字节里全填0
stack ends ; 堆栈段结束

data segment ;数据段
szHello db 'hello,world',0dh,0ah,'$' ;定义szHello , 0dh,0ah分别是回车键,换行键的ASCII码, '$'是DOS功能调用INT 21H中9号功能要求的要显示字符串的结束标志,写成szHello db 'hello,world',0dh,0ah,24h;也可以,因为24h就是'$'
data ends ;数据段结束

code segment ;代码段
assume cs:code,ds:data,ss:stack ;确定cs,ds,ss,指向的逻辑段

汇编中,Assume的作用是告诉汇编程序各个段寄存器应该与哪个逻辑段对应,该伪操作把程序中定义的各个段分配给段寄存器,使程序中使用的段名与段寄存器建立起对应关系。使得汇编程序清楚在计算地址时使用哪一个段地址但并不赋予该逻辑段的段地址。没有Assume这行代码也可以,但其后的变量操作需要用段跨越前缀指明所在逻辑段。
所以说ASSUME语句是设定语句,是告诉汇编器在将源代码翻译成机器语言时,CPU的各个段寄存器如何与你定义的各个逻辑段相联系.比如ASSUME CS:CODE 这个例子CS段寄存器就选了CODE代码段.

start:
mov ax,data ;设置数据段的段地址ds
mov ds,ax ;

mov ah,9 ; ah中的9号功能表示要显示一行字符串
mov dx,offset szHello ;取得szHello的偏移地址,也就是在ds段中的偏移地址
int 21h

;暂停,任意键关闭
mov ah,1 ;这两句是从键盘输入一个字符功能
int 21h

mov ah,4ch ;退出 ah中的功能号4ch表示要返回DOS
int 21h ;调用DOS
code ends
end start

汇编语言 HelloWorld (详细注释版)相关推荐

  1. WinAPI入门: 第一个标准Win32窗口程序 [改进详细注释版]

    WinAPI入门: 第一个标准Win32窗口程序 下载链接: 若想立即看到本程序的运行结果,可点击EXE文件的免费下载链接; HelloWin_v1.sfx.exe;–带语音和背景音乐; 相关链接: ...

  2. 详细注释版的ABAQUS COH2D4单元批量添加Python脚本

    详细注释版的ABAQUS COH2D4单元批量添加Python脚本 ABAQUS Cohesive单元批量添加脚本程序-附详细注释版: #本程序只适用于二维问题,对于三维COH3D8的批量嵌入只需要转 ...

  3. 经典剪枝算法的例题——Sticks详细注释版

    这题听说是道十分经典的剪枝算的题目,不要问我剪枝是什么,我也不知道,反正我只知道用到了深度搜索 我参考了好多资料才悟懂,然后我发现网上的那些大神原理讲的很明白,但代码没多少注释,看的很懵X,于是我抄起 ...

  4. CNN经典网络模型(四):GoogLeNet简介及代码实现(PyTorch超详细注释版)

    目录 一.开发背景 二.网络结构 三.模型特点 四.代码实现 1. model.py 2. train.py 3. predict.py 4. spilit_data.py 五.参考内容 一.开发背景 ...

  5. CNN经典网络模型(二):AlexNet简介及代码实现(PyTorch超详细注释版)

    目录 一.开发背景 二.网络结构 三.模型特点 四.代码实现 1. model.py 2. train.py 3. predict.py 4. spilit_data.py 五.参考内容 一.开发背景 ...

  6. 二叉树的非递归遍历算法C语言实现(详细注释版)

    二叉树的非递归算法遍历分为:先序遍历,中序遍历,后序遍历. 此文章我会根据先.中.后的顺序为大家用C语言实现全部代码. 顾名思义先序遍历是先遍历根节点,随后是左孩子,右孩子 . 中序遍历与后序遍历可以 ...

  7. 蓝桥杯算法训练 无聊的逗-详细注释版

    试题 算法训练 无聊的逗 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木 ...

  8. SQL操作类详细注释版

    为什么80%的码农都做不了架构师?>>>    using System; using System.Collections.Generic; using System.Linq; ...

  9. F - 上升子序列-超详细注释版

    永远都不要放弃自己,勇往直前,直至成功! Description 一个只包含非负整数的序列bi,当b1 < b2 < - < bS的时候,我们称这个序列是上升的.对于给定的一个序列{ ...

最新文章

  1. nginx实现web负载均衡
  2. C++面向对象设计原则详解
  3. nginx 带宽_Nginx的Gzip功能
  4. mnesia mysql性能_Mnesia
  5. python数据分析模块包括_数据开发必会 | Python数据分析模块
  6. java拥有键值对的数据结构_Java数据结构之004--HashMap
  7. IT测试时准确数据的技巧(IT总结之三去除旧数据)
  8. HDU 4336:Card Collector 期望+状压
  9. 对外汉语语料库有哪些_燃,9大对外汉语必备语料库,每个都很有“性格”!!...
  10. HTML5前端知识图谱
  11. c语言中obj的错误,C语言中的obj
  12. Python异方差的检验与修正
  13. 常用计量单位及其换算
  14. PUBG绿色玩家 看过来!
  15. 纸壳cms支持php坏境吗,如何参与纸壳CMS开发以及贡献代码
  16. 共享打印机(联想M7605D)出现0x00000709错误代码的解决方法
  17. redirect、redirect-action、chain三者的区别!
  18. Qt 按钮控件虚线框
  19. 半边数据结构【Half Edge】
  20. JAVA并发编程实战-任务执行

热门文章

  1. 安装oracle失败,停止在76%
  2. 20061008: IntelliJ Idea 6
  3. jQuery实现轮播图--入门
  4. 在巴展上做成90%的生意 爱立信MWC关键字:5G、IoT、云
  5. python常见面试题(三)
  6. MySQL 5.6, 5.7并行复制测试(二)(r12笔记第10天)
  7. WinAPI: GetCursorPos - 获取鼠标指针的当前位置
  8. XMPP基本概念--节(stanza)
  9. CSS经典书写技巧之(二)
  10. 用API实现串口异步读写