【汇编】汇编程序入门篇
先吐槽几句:总是有人说,门门通不如一门精。也不知道,这话到底是不是真的如其所言,感觉自己就像武侠里习武的少年,总想把世界上所有的武学全部学会,到最后却走火入魔。
从大一接触计算机起,已经五个年头了,学的知识方方面面,可回想自己精通的知识,C++?算了吧,虽然读了N遍教材,认真研习了经典教材《C++ primer》但是,每每还是有弄不明白的地方。Java?拉倒吧,这么多的类库、函数。C#? 你在开玩笑么?在拖控件开发网页的基础上学习C#,能有很深的造诣么?python?哇塞,刚入门就搞别的了。不提也罢。C?哥们,你会驱动开发么?精通么?如果不的话,还是不要说精通C了。
你学习汇编干什么?
自己感觉有用,正所谓艺多不压身。好吧,前后矛盾的解释,勉强算你过了吧。
你能坚持学下来么?
能,没有学过汇编一直是我的一个心结,最近在研究驱动方面的知识,需要学习学习汇编,这是一个弥补的机会。
你觉得艺多不压身?还是门门通不如一门精?
感觉计算机各个领域都是相互关联的,多了解些知识,对计算机技术的掌握容易融汇贯通。比如去年自作主张的自学了Android,没想到后来做项目时候,还真能用的上。以前没有学汇编,这不现在还得补。出来混迟早要还的,早不学的东西,迟早要学。要不就不要从事这一行。
学习计算机五年了,你累么?
不累,我是越来越喜欢计算机这一行了。虽然天天熬夜编码。可也没人逼着我呀,这都是兴趣。我做我喜欢,哦也!!
一,环境搭建
Win7+Masm for Windows 集成实验环境 2012.5
二,代码分析
;完整段的Hello World程序 ;分号为注释符号 DATAS SEGMENT ;定义一个段名为DATAS的数据段 STRING DB 'Hello World!',13,10,'$' ;定义程序中需要的常量和变量 DATAS ENDS ;结束数据段定义 CODES SEGMENT ;定义代码段 ASSUME CS:CODES,DS:DATAS;对准语句 START: ;程序开始 MOV AX,DATAS ;将DATAS的段地址送AX MOV DS,AX ;寄存器AX送到段寄存器DS LEA DX,STRING ;把字符串的偏移地址存放到DX MOV AH,9 ; INT 21H MOV AH,4CH INT 21H CODES ENDS END START