汇编语言第四版(自学计算机编程应该看些什么书)

:暂无数据 2026-03-31 16:40:02 0
就像学骑车需要掌握平衡一样,理解汇编语言第四版的窍门,恰恰在于把握好自学计算机编程应该看些什么书这个“平衡点”。

本文目录

自学计算机编程应该看些什么书

一:第一阶段\r\nC语言-------《C语言设计》 作者:谭浩强\r\n大多数人都推荐谭浩强这本书,谭浩强的C语言程序设计,我觉得更适合当教科书,主要是篇幅没有那么大,书本的内容不是很全,由老师带入门是最好的。\r\n\r\n《C Primer Plus》第五版 作者:Stephen Prata\r\n这本书比较厚,内容也比较基础,扩展的也比较广,自学容易上手,唯一的**在于它是外国人编写,而国内的翻译往往让人难以满意,如果你有较好的英语水平,最好阅读英文版的。\r\n\r\n《C语言入门经典》第四版 作者:Ivor Horton\r\n\r\n二:第二阶段\r\n这一阶段看个人主攻的方向了,安卓一般就J**A,PC游戏、软件C++,也有推荐C#,这些都是主流语言,其他语言要看个人爱好与发展。\r\n面向对象的语言,一般懂一门,之后要转其他语言也很容易的,其实思想都差不多,主要的不同在于语法。C#容易上手,一个月入门,一年精通,而C++却有点难,一年入门,二十年也未必敢说自己精通。如果有时间,可以了解一下汇编语言。\r\n\r\nC++ Primer, 4rd Edition\r\n\r\n(入门类:\r\nC++ Primer, 4rd Edition\r\nThinking in C++, 2nd Edition\r\nThe C++ Standard Library: A Tutorial and Reference\r\n\r\n进阶类:\r\nThe C++ Programming Language, Special Edition\r\nThe Design and Evolution of C++\r\nInside C++ Object Model\r\nC++ Templates: The Complete Guide\r\nSTL 源码剖析\r\nGeneric Programming and the STL\r\nModern C++ Design: Generic Programming and Design Patterns Applied\r\n\r\n应用技巧类:\r\nEffective C++, 2nd Editon\r\nMore Effective C++\r\nExceptional C++\r\nMore Exceptional C++\r\nEffective STL\r\nRuminati*** on C++)\r\n\r\n三:第三阶段\r\nAPI/SDK------------- 《windows程序设计》(Jeff Prosise)\r\n这书主要是开发Windows软件要深入研读的,毕竟是WindowsAPI。如果是主攻C++,那么这本书你可以大概略读一遍,不用过多的深入追究,QT才是C++主要深入思虑的关键。\r\n\r\n四:第四阶段\r\nMFC----《VC++技术内幕》、《深入浅出MFC》及视频教程孙鑫 VC++6.0\r\n如果是C++,QT是要重点学习的对象。\r\n\r\n五:第五阶段\r\nCOM/DCOM/ATL/COM+---------《COM技术内幕》\r\n\r\n未知阶段:\r\n《数据结构》,《算法导论》这些基本是编程的核心了,编程的很大情况都依赖于算法的实现,这个两门基本要深入研究,这是决定编程能力的核心标准。\r\n\r\n如果不弄底层的话,《操作系统原理》可以简单地了解。

推荐本WINDOWS保护模式下汇编语言好书

可以看看:
《Windows环境下32位汇编语言程序设计(罗云彬)》

但我的感觉:
护模式下汇编语言
同VC++的VC++下用API写程序已经非常接近,且不能对全部资源进行操作,不像以前的汇编语言。
因此,还是建议:
了解一下,仅此而已,别花费大量时间。

如何学习汇编语言

学习汇编语言过程:
一,要有一定的微机硬件基础知识,因为汇编很底层,更加接近机器语言,往往很多的东西要从机器层面来支持理解。
二,最好先学习一门高级语言,因为高级语言更接近人的语言,相对比较容易理解。掌握了一门高级语言后再学汇编,一来不易产生畏惧感,二来遇到问题,只能局限于已学的汇编知识来来思考遇到的问题,此时跳出汇编,旁援掌握的语言有助拓新思路,而不只局限与汇编一个思路。
三,细致,踏实的学习态度是少不了的,更为重要的是实践。比喻为:犹如一个战士进入敌营中心地带,要冷静,小心,还要勇敢,智慧,要在敌中心步步为胜,留意敌人的一举一动,将敌一扫而光,不可大意一步,因为接近核心了,稍一大意有可能留下极大隐患。
四,一个狂热的学习劲头,是学习的动力。勤奋,刻苦,等品质也将帮你一路顺进。

汇编语言 第四版 王爽 参***

本人也是第一次学习,如有错误,还请各位大佬指正!

(1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为 13位 。

(2)1KB的存储器有 1024 个存储单元,存储单元的编号从 0 到 1023 。

(3)1KB的存储器可以存储 8192 个bit, 1024 个Byte。

(4)1GB是 1073741824 (2^30)个Byte、1MB是 1048576(2^20)个Byte、1KB是 1024(2^10)个Byte。

(5)8080、8088、80296、80386的地址总线宽度分别为16根、20根、24根、32根,则它们的寻址能力分别为: 64 (KB)、 1 (MB)、 16 (MB)、 4 (GB)。

(6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。则它们一次可以传送的数据为: 1 (B)、 1 (B)、 2 (B)、 2 (B)、 4 (B)。

(7)从内存中读取1024字节的数据,8086至少要读 512 次,80386至少要读 256 次。

(8)在存储器中,数据和程序以 二进制 形式存放。

解题过程:

(1)1KB=1024B,8KB=1024B*8=2^N,N=13。

(2)存储器的容量是以字节为最小单位来计算的,1KB=1024B。

(3)8Bit=1Byte,1024Byte=1KB(1KB=1024B=1024B*8Bit)。

(4)1GB=1073741824B(即2^30)1MB=1048576B(即2^20)1KB=1024B(即2^10)。

(5)一个CPU有N根地址线,则可以说这个CPU的地址总线的宽度为N。这样的CPU最多可以寻找2的N次方个内存单元。(一个内存单元=1Byte)。

(6)8根数据总线一次可以传送8位二进制数据(即一个字节)。

(7)8086的数据总线宽度为16根(即一次传送的数据为2B)1024B/2B=512,同理1024B/4B=256。

(8)在存储器中指令和数据没有任何区别,都是二进制信息。

【2020.7.20】

(1) 写出每条汇编指令执行后相关寄存器中的值。

mov ax,62627   AX=F4A3H 

mov ah,31H     AX=31A3H 

mov al,23H     AX=3123H 

add ax,ax      AX=6246H 

mov bx,826CH   BX=826CH 

mov cx,ax      CX=6246H 

mov ax,bx      AX=826CH 

add ax,bx      AX=04D8H 

mov al,bh      AX=0482H 

mov ah,bl      AX=6C82H 

add ah,ah      AX=D882H 

add al,6       AX=D888H 

add al,al      AX=D810H 

mov ax,cx      AX=6246H

(2) 计算2的四次方

mov ax,2 AX=2

add ax,ax AX=4

add ax,ax AX=8

add ax,ax AX=16

【2020.7.20】

(1) 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为 0010H 到 1000FH 。

解题过程:

物理地址=SA*16+EA   

EA的变化范围为0h~ffffh   

物理地址范围为(SA*16+0h)~(SA*16+ffffh)   

现在SA=0001h,那么寻址范围为   

(0001h*16+0h)~(0001h*16+ffffh)   

=0010h~1000fh    
(2) 有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元。则SA应满足的条件是:最小为 1001H ,最大为 2000H 。

当段地址给定为 1001H 以下和 2000H 以上,CPU无论怎么变化偏移地址都无法寻到20000H单元。

解题过程:

物理地址=SA*16+EA   

20000h=SA*16+EA   

SA=(20000h-EA)/16=2000h-EA/16   

EA取最大值时,SA=2000h-ffffh/16=1001h,SA为最小值   

EA取最小值时,SA=2000h-0h/16=2000h,SA为最大值 

这里的ffffH/16=fffh是通过WIN自带计算器算的

按位移来算确实应该为fff.fh,这里小数点后的f应该是省略了

单就除法来说,应有商和余数,但此题要求的是地址最大和最小,所以余数忽略了

如果根据位移的算法(段地址*16=16进制左移一位),小数点后应该是不能省略的

我们可以反过来再思考下,如果SA为1000h的话,小数点后省略

SA=1000h,EA取最大ffffh,物理地址为1ffffh,将无法寻到20000H单元

这道题不应看成是单纯的计算题

【2020.7.20】

下面的3条指令执行后,cpu几次修改IP?都是在什么时候?最后IP中的值是多少? 

movax,bx 

subax,ax 

jmpax 

答:一共修改四次

第一次:读取movax,bx之后 

第二次:读取subax,ax之后 

第三次:读取jmp

ax之后 

第四次:执行jmp

ax修改IP 

最后IP的值为0000H,因为最后ax中的值为0000H,所以IP中的值也为0000H 

【2020.7.20】

求解释一个汇编程序

CODE SEGMENT
ASSUME CS:CODE
START: MOV AL,3EH ;将十六进制3E送到AL中
MOV BL,AL ;再送到BL中,BL中也是3E,主要是后面要用,先保存一下
MOV DL,AL ;再送到DL中,DL中也是3E
MOV CL,4 ;设置CL为4,为下面的SHR做准备,表示右移4位
SHR DL,CL ;SHR(shift right)右移,CL中存有右移的次数,4次
CMP DL,9 ;右移之后和9比较,cmp(compare)
JBE NEXT1 ;JBE(jump below and equal)小于等于9就跳到NEXT1处
ADD DL,7 ;如果DL中的数大于九,就将DL加7
NEXT1: ADD DL,30H ;将DL加30H转换成字符的ASCII码,0的ascii码是30H,9是39H
MOV AH,2 ;调用dos的2号中断,显示DL中的字符
INT 21H ;显示高位ASCII码
MOV DL,BL ;将BL中的数再重新给DL,这里就体现了上面要复制给BL的意义
AND DL,0FH ;AND(逻辑与),取DL的低四位,上面SHR取得是高四位
CMP DL,9 ;下面就和上面一样了,解释也都一样
JBE NEXT2
ADD DL,7
NEXT2: ADD DL,30H
MOV AH,2
INT 21H ;显示低位ASCII码 ;到这里就全部显示出来了
MOV AH,4CH ;从这里开始就是一般固定的结束格式了,调用dos的4号中断返回
INT 21H
CODE ENDS ;返回DOS
END STAR

王爽的《汇编语言》看完后应该看什么,想精通汇编

《首先声明,绝不是复制粘贴的,句句出自本人经验中提炼而出》
汇编是计算机编程中最为基础部分。
你先学了C/C++,正处于空中楼阁的尴尬处境。因为你在开发C/C++的时候,总觉得有一层雾纱隔着。无法真正看到问题的本质。人类对于无法控制的事总有一种反抗及寻根问底的情绪。
而你把汇编学通了,才能真正地从汇编连通到操作系统,连通到C/C++。你才能真正看清计算机。这才能有机会步入大师级计算机学问境界。
用一句话:站在巨人的肩膀上……
比如只学现在流行的面向对象语言C#、Java等,虽然在短期内你可能会成为这方面的能手,但是想突破是有限的。因为本身的起步就低了。
再言,现在网络发展极快,C#、Jave这种浮于水面的技术很快会被新的东西所取代。但是C#、Java和更加新的未知技术都是从底层的汇编等变化而来。只要学好基础,一句话:以不变应万变。
我不知道学了汇编达到什么水平。但是学了汇编绝对能达到难以想象的水平。
如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
vaela

汇编语言王爽第三版和第四版的区别

适合人群不同、内容涵盖量不同。
1、适合人群不同。汇编语言王爽第三版结构设计合理,适合自学者使用,而第四版适合学生使用。
2、内容涵盖量不同。汇编语言王爽第三版内容全面涵盖知识点丰富,而第四版内容全面涵盖知识点短缺。

希望本文帮你理清了汇编语言第四版自学计算机编程应该看些什么书的困惑。实践是检验真理的唯一标准,快去试试吧!有任何心得或问题,评论区等你。
本文编辑:admin

更多文章:


codeblocks编译框不见了(codeblocks里面的编辑界面怎么就不见了怎么弄出来啊)

codeblocks编译框不见了(codeblocks里面的编辑界面怎么就不见了怎么弄出来啊)

大家好,关于codeblocks编译框不见了很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于codeblocks里面的编辑界面怎么就不见了怎么弄出来啊的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,

2026年3月31日 18:00

unescape(请问delphi2010的 unescape函数怎么写)

unescape(请问delphi2010的 unescape函数怎么写)

关注本号的朋友都知道,我们一直在持续输出关于unescape的干货。今天,我们就聚焦到大家反复问到的请问delphi2010的 unescape函数怎么写上。

2026年3月31日 17:40

设置背景颜色的代码(dw文本框的背景颜色代码)

设置背景颜色的代码(dw文本框的背景颜色代码)

从我第一次听说设置背景颜色的代码到真正弄懂dw文本框的背景颜色代码,也走过一些弯路。下面就把我的学习心得分享给大家,希望能让您的入门之路更顺畅。

2026年3月31日 17:20

oracle对比两个表字段(oracle中怎样比较俩张表的所有字段的数据,导出不相同的数据或存入一张新表)

oracle对比两个表字段(oracle中怎样比较俩张表的所有字段的数据,导出不相同的数据或存入一张新表)

您是否正在为搞不清oracle对比两个表字段和oracle中怎样比较俩张表的所有字段的数据,导出不相同的数据或存入一张新表的关系而烦恼?恭喜,这篇干货就是您的“及时雨”。

2026年3月31日 17:00

汇编语言第四版(自学计算机编程应该看些什么书)

汇编语言第四版(自学计算机编程应该看些什么书)

就像学骑车需要掌握平衡一样,理解汇编语言第四版的窍门,恰恰在于把握好自学计算机编程应该看些什么书这个“平衡点”。

2026年3月31日 16:40

计算机中true是什么意思(vb程序中flag=true/false的意思和作用是什么)

计算机中true是什么意思(vb程序中flag=true/false的意思和作用是什么)

想快速搞懂计算机中true是什么意思吗?本文将围绕vb程序中flag=true/false的意思和作用是什么等核心问题,用最直白的语言为您提供一份实用指南,帮您节省大量摸索的时间。

2026年3月31日 16:20

宝妈网站源码(宝妈有没有好的地址2021)

宝妈网站源码(宝妈有没有好的地址2021)

本文将围绕宝妈网站源码展开,重点探讨三个方面:宝妈有没有好的地址2021的基本概念、常见误区以及实践应用。让我们开始吧。

2026年3月31日 16:00

一个完整的计算机系统包括(一个完整的计算机系统包括(  ))

一个完整的计算机系统包括(一个完整的计算机系统包括(  ))

最新数据显示,关注一个完整的计算机系统包括的人中,超过70%都对一个完整的计算机系统包括(  )抱有浓厚兴趣。本文将满足这一核心需求。

2026年3月31日 15:40

饿了么是阿里巴巴的吗(饿了么算是阿里巴巴什么部门)

饿了么是阿里巴巴的吗(饿了么算是阿里巴巴什么部门)

有没有这种经历:明明想搞懂饿了么是阿里巴巴的吗,却被饿了么算是阿里巴巴什么部门卡住了脖子?今天这篇文章,就是专治这种“卡脖子”问题的。

2026年3月31日 15:20

parsec错误800(parsec另一个人无法用手柄)

parsec错误800(parsec另一个人无法用手柄)

从我第一次听说parsec错误800到真正弄懂parsec另一个人无法用手柄,也走过一些弯路。下面就把我的学习心得分享给大家,希望能让您的入门之路更顺畅。

2026年3月31日 15:00

最近更新

unescape(请问delphi2010的 unescape函数怎么写)
2026-03-31 17:40:02 浏览:0
热门文章

oracle virtualbox(oracle VM VirtualBox菜单栏没有了!)
2026-03-31 13:20:01 浏览:0
Linux重定向?C语言输入输出重定向
2026-03-31 05:20:01 浏览:0
标签列表