中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-07 15:18
48,041 主题排行 / 350,128 发帖 / 今日 3 篇 / 48,252 会员排行
网络日志(Blog) » 【Redtek】 个人网志(学习笔记)
可打印版本  29,476 / 130
第1楼 redtek 发表于 2006-12-10 00:48
金牌会员 发帖 1,147 积分 2,902
【Redtek】 个人网志(学习笔记)







学习笔记目录:
==============================================



 
 


 



 
 


 
 
 






 




 
 

个人网志:
==============================================


【Redtek 学习网志】 http://www.cn-dos.net/forum/viewthread.php?tid=25504

【Redtek 普通网志】 http://blog.sina.com.cn/m/redtek

[ Last edited by redtek on 2007-1-29 at 01:46 PM ]
第2楼 redtek 发表于 2006-12-10 01:48
金牌会员 发帖 1,147 积分 2,902
【80x86汇编语言学习笔记】
) 初学汇编,遇破书一本《Intel 80X86/Pentium 汇编语言程序设计(第二版) 》30两银子 - ISBN 7-81045-770-5 。
  奉如无尚珍宝,然作者 “瞎编” ,无奈之下只得瞎学:)

) 初学汇编,今日开始。拿起书狂翻,希望遇到一个 “Hello World!” ,一个没有:)

) 按书顺序,但凡初学者希望遇到一个先能编译,哪怕看一眼运行一下的极短的例子,哪怕在观感上可以“明白”一下,结果没有。

  前96页均为基础知识与寄存器、指令讲解。
  特点:如果你看完多数指令和前100页的知识,也不会编译更不会编。因为书是按照编书次序来编,不是按照帮助你学习的次序来写的。

  代码全是片断,如果没有老师带,完全一个人自学,则那些片断你根本不会编译,就是编译,书上的例子编译器与通不过(现在看来)。
  
  也就是说,如果前96页能全看完,那只不过是超旨记忆,你根本没有机会上机试验,那些全是理论。且和Debug中命令方式不同。

) 总结: 注定了看这本书不人性化作者编的这本书,要走极多的弯路。


) 谁说过:“每年要看一本最难的书……”,于是
  俺坚决:今年看一本最难的书 —— 汇编语言! 明年 ——— 易经,学着画一堆小横线~:)
 
◇ 2006-12-09 12:49:57.17



为这本书平反:初学汇编,当学习了一些汇编基础知识以后,再看这本书就可以看懂了。
       所以,这本书现在看来不是不好,而是适合有汇编基础的人学习或是学校有这门课程并做参数。
       这本书内容较全面,当看完了300多页的汇编基础知识后,发现这本书现在适合读了:(

◇ 22:36 2007-1-17

[ Last edited by redtek on 2007-1-17 at 10:37 PM ]
第3楼 redtek 发表于 2006-12-10 03:24
金牌会员 发帖 1,147 积分 2,902
【80x86汇编语言学习笔记】
P12页: 用 IBM PC 汇编语言实现 123+456

书上举例


) 尽管不懂,没关系先输出试试:)
) 怎么编译呀?要是按书上顺序看,早TMD放弃了!
  翻开书第 P98页《汇编语言上机过程》,照上面例子编译。
  用什么编译?用 MASM5.0编译,编译器在哪儿?在网上找吧……温无边际的找……
  运气好的话一会儿就找到了,运行不好的话编译器有 16位纯DOS上用的,用Win32的,一遍遍试吧,这本书上没有相关内容:)

  我就属于那种运气不好的人,嘿嘿……反复换了4、5个编译不同版本的编译器,自学的步步都是错误:)

  自学也难在这里,深深体会到~:)

  没关系~:)
  现在可以编译了~:P



上面编译完全正确~:)

会看到第一行有一句提示:“Invalid keyboard code specified” ,起初不懂:)
后来反复发现只要切换至代码页437(美国),只要不是936(中国)就可以了,
因为这个编译器是纯DOS上使用的,而我现在 WINDOWS CMD SHELL中编译的。

后来查询Windows自带的CHM帮助,发现如果希望兼容一些平时不能运行的DOS程序,则一个 Forcedos 命令可以支持~:)

如:

C:\Masm50>forcedos /?

FORCEDOS filename
/D directory Specifies the current directory for
the specified program to use.
filename Specifies the program to start.
parameters Specifies parameters to pass to the program.


这样,它就不会再提示那行信息了~:)

编译完成:)


生成 .Obj 文件了,还要再链接成 EXE 文件:)



链接完成了,Link的使用也在书上P99页~:)



这个 myasm.exe 文件生成了~:D



要这样用Windows兼容的方式运行它,否则系统就提示关于崩溃的内容……
但是,运行完以后屏幕并没有显示任何字符:(

书上的P12页(这可是入门开始啊),上面说了:

程序的运行结果是:
  12F8:010F 43 02

嘿嘿……不能失望,这是在调试状态下你能看到的运行结果,哈哈……
这不是单独运行你所能看到的,这书的作者就是这样的龌龊(这词终于用上了~:K)

但是,如果你要深究其内容与结果怎么办?
那就要用Debug了,Debug在这本书上有一个命令帮助索引(和Debug自带的?帮助一样)。

也就是说,初学汇编的人看这个例子除了一饱眼福之外就是头晕了~:)
我会认为这作者的水平很高,够机器!

◇ 2006-12-09 14:26:38.21


写这样的汇编代码,用记事本或Edit写吗?

有一个叫做《轻松汇编》的编辑工具,语法加亮,自动对齐语句,自动错误检查,自动编译……

使用它来写代码可以少走一些弯路~:)
而且,即然是汇编语言,所以吸烟的时候也应该用火柴点烟才有味道~:D
◇ 2006-12-09 14:54:22.88

[ Last edited by redtek on 2006-12-9 at 05:59 PM ]
第4楼 redtek 发表于 2006-12-10 04:08
金牌会员 发帖 1,147 积分 2,902
【80x86汇编语言学习笔记】

附件
pic_7.jpg (29.3 KiB)
第5楼 ccwan 发表于 2006-12-10 05:57
金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊
偶来捧场^_^
第6楼 redtek 发表于 2006-12-10 07:00
金牌会员 发帖 1,147 积分 2,902
多谢ccwan鼓励~:)
第7楼 redtek 发表于 2006-12-10 07:50
金牌会员 发帖 1,147 积分 2,902
【80x86汇编语言学习笔记】
(书) P23页 与数据有关的寻址方式:


立即寻址方式




) 书上关于立即寻址的方式只有上面这两句指令,不编译一个小代码根本不能直观的理解那些寄存器……

  如果死记硬背,这需要一直抽象的背到第79页才能知道EXE文件的例子。
  且书上没有完整可供编译的代码例子试验,也就是说很有可能当你看完100页的编程的教程,一个程序还未真正编过,这不是在学习。
  
  如果按照这书的顺序,这简直是在要求你类似于学批处理,从低级看到高级例子,但从来不编写一句代码,想必这种学习是浪费生命。



  所以,只能将上面代码尽可能转成Debug调试器里能“看”到的效果,虽然编不出来,但至少能理解。

  下面是使用 Debug 调试器测试书上(上面)两句代码的过程,彩色数字是观察到的寄存器直观的变化。


-R
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=13BF ES=13BF SS=13BF CS=13BF IP=0100 NV UP EI PL NZ NA PO NC
13BF:0100 0000 ADD ,AL DS:0000=CD
-A
13BF:0100 MOV AL,6
13BF:0102 MOV AX,1234
13BF:0105
-T=100

AX=0006 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=13BF ES=13BF SS=13BF CS=13BF IP=0102 NV UP EI PL NZ NA PO NC
13BF:0102 B83412 MOV AX,1234
-T

AX=1234 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=13BF ES=13BF SS=13BF CS=13BF IP=0105 NV UP EI PL NZ NA PO NC
13BF:0105 0000 ADD ,AL DS:0000=CD


Debug在这种破不得已的状态下真是太有用了~:)

[ Last edited by redtek on 2006-12-9 at 08:27 PM ]
第8楼 vkill 发表于 2006-12-10 07:51
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
呵呵~sina 上的图片挺好的
第9楼 redtek 发表于 2006-12-10 07:54
金牌会员 发帖 1,147 积分 2,902
平时喜欢摄影,没事儿就乱拍~:)
第10楼 lxmxn 发表于 2006-12-10 08:36
版主 发帖 4,938 积分 11,386

  哈哈,偶也来捧场啦~

  想不到 Redtek 兄这么快就开网志了~SINA上面还有几个批处理的实例供偶学习学习的~~

  感觉这汇编挺难的,没信心了…… o_O
第11楼 redtek 发表于 2006-12-10 08:46
金牌会员 发帖 1,147 积分 2,902
哈哈……
Sina的网志写了有一段时间了,多半都是摄影内容~:)
俺觉得这里放代码学习内容为主的网志最合适不过:D

汇编太难学(感觉按书上次序学简直需要极高的耐心),而且全是抽象的一两行的汇编片断(这片断很多都不能在Debug里直接编)。
编译器要求的代码表示和Debug里的直译表示不一样,书上又只讲理论,不讲都是干什么用的,更抽象了……

不过,难就难吧,哈哈……
一天啃一两句,早晚能啃下来~:)
第12楼 redtek 发表于 2006-12-10 09:46
金牌会员 发帖 1,147 积分 2,902
【80x86汇编语言学习笔记】
寄存器寻址方式

(书) P24页



访问普通变量时,默认是DS段寄存器,但也可以显式的指定为ES、SS、CS、GS、FS。
可以使用段超越前缀显式地指定段寄存器。


debug学习过程:

-A
13BF:0100 MOV AX,5678
13BF:0103 MOV BX,AX
13BF:0105
-T=100

AX=5678 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=13BF ES=13BF SS=13BF CS=13BF IP=0103 NV UP EI PL NZ NA PO NC
13BF:0103 89C3 MOV BX,AX
-T

AX=5678 BX=5678 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=13BF ES=13BF SS=13BF CS=13BF IP=0105 NV UP EI PL NZ NA PO NC
第13楼 pengfei 发表于 2006-12-10 11:14
银牌会员 发帖 485 积分 1,218 来自 湖南.娄底
Redtek兄真是性情中人, 网志搞得有声有吗. 呵呵~ 那个烤黄粉虫的好, 有营养...

自学的苦与乐只有自己才能品尝到. 加油~~~!
第14楼 redtek 发表于 2006-12-10 12:10
金牌会员 发帖 1,147 积分 2,902
多谢pengfei兄鼓励~:)
第15楼 electronixtar 发表于 2006-12-11 01:56
铂金会员 发帖 2,672 积分 7,493
看到牛XXXXX的汇编了,不懂。顶一个
1 2 3 49  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023