汇编语言学习:精华问题解答

【问题】
不理解wait指令是干什么用的,还有就是可不可以给栈段社标号,然后用offset获取栈段的偏移地址呢?jmp指令只能在代码段中跳转吗,能不能跳到数据段?
【解答】
wait指令?我给你的手册呢?
offset是求偏移地址,并不针对具体哪个段,哪个段中的都可以。
jmp是流程的跳转,应用只在代码段中跳。但从原理上,你可以跳到任意地方,那就要将数据当指令用了,或许你有特殊意图,但一般不这样干。

【问题】
远转移不是段间转移吗,好像也可以实现段内转移,还是我对段间的理解不对。
【解答】
段内是段间的特例,效果上还在同一段,但CS会改变,只是改一次还是原值。这里,要从对应的机器指令上看出端倪。

【问题】
要知道某条指令的机器码长度,都要用u命令查看吗?
【解答】
还可以查手册。再者,如果长期用汇编,这些指令长度自然是明白的了。U命令是我们的工作方式,也是学习手段。

【问题】
div实现的除法限制的非常多,在c语言中只要用一个简单的/符号,编译器是如何转换的,是我们学的太浅吗?
【解答】
汇编语言还有其他途径实现除法。作为32学时的课程,我们的学习内容有限,可以在课程基础上自行拓展。

【问题】
1、所有的c语言算法都能表示成汇编吗?2、用汇编语言写的排序也会有冒泡,快排,基数排序等多种类区别吗?
【解答】
1、算法与语言无关。理论上,所有算法,可以用任何语言描述。工程中,选择合适的语言做合适的事。2、算法就在那里,用任何语言都可以去实现,当然,包括汇编。

【问题】
如果实践失败了还有没有挽救的地步??
【解答】
学习中,失败的实践,甚至可以是你最大的收获。积累了学习中的无数失败,才不会在事业中,酿成不可挽回的损失。

【问题】
汇编已经可以排序,交换了,那么会有指针吗,还是说指针的功能已经用别的方式实现了?
【解答】
我们不是一直在“寻址”吗?不是汇编没指针,而是我们一直用的就是指针。

【问题】
虽然一串数据可以分为多维数组,但实际结构存储都是一样的。那又分成多维数组理解方式有个好处?
【解答】
“分成多维数组理解”不是要什么好处,而是在解决实际问题时,需要用多维数组建模,进而用语言实现这种模型。

【问题】
我是不是可以理解所有的二维数组都可以把它们当作一维数组来处理?这和把它当作一维数组来比,在执行上有什么区别吗?
【解答】
多维数组,我们强调的是逻辑结构,是面向人为问题建模而言的。如果从存储的角度,都是线性存储的。

【问题】
对于同一个题运用不同的方法,在汇编语言上也会有效率之分吗?还是只有恰不恰当之分呢?
【解答】
一题多解,效率有别,这个根源,用算法复杂度解释,与语言无关。到底选用哪种算法,综合多种因素做决定。

【问题】
有什么可以,主动弄坏u盘的方法吗??????这样实验数据恢复也方便
【解答】
U盘放嘴里,使劲咬一口,然后……

时间: 2024-12-31 20:21:47

汇编语言学习:精华问题解答的相关文章

模式-80386内存寻址问题,汇编语言学习疑惑

问题描述 80386内存寻址问题,汇编语言学习疑惑 8086内存寻址是通过段地址加偏移的方式,因为地址总线长度是20位,而寄存器是16位的, 但是80386的地址总线长度是32位,而寄存器也是32位,通过一个寄存器不就可以寻址吗? 为什么要搞得这么麻烦?为了兼容吗,但保护模式下有不需要考虑兼容问题,为什么不用一个32位寄存器寻址呢? 解决方案 方便实现段或页式内存管理. 解决方案二: 你学习的是过时的dos下的汇编,无论你的处理器是32位的还是64位的,dos都是16位的,你实际上都是在给一个8

学习精华素:Jsp应用技巧小结

js|技巧|精华 1.Jsp页面输入内容显示时tag文字和换行处理 从输入页面的文本输入框输入两行文字: lt;br>huuhh<br>lt;b></b><BR> 确认后转入下一确认页面时,发现换行信息已被自动去除,另外,tag文字被以处理html的方式处理,没有正确显示输入信息. 解决方案 在确认页面对所要显示的信息做如下处理上面的问题就迎刃而解了:假设要显示的信息保存在一个字符串变量comment中,在显示之前对它做如下处理: lt;td bgcolor

汇编语言学习指南(三)

"汇编语言"作为一门语言,对应于高级语言的编译器,我们需要一个"汇编器"来把汇编语言原文件汇编成机器可执行的代码.高级的汇编器如MASM, TASM等等为我们写汇编程序提供了很多类似于高级语言的特征,比如结构化.抽象等.在这样的环境中编写的汇编程序,有很大一部分是面向汇编器的伪指令,已经类同于高级语言.现在的汇编环境已经如此高级,即使全部用汇编语言来编写windows的应用程序也是可行的,但这不是汇编语言的长处.汇编语言的长处在于编写高效且需要对机器硬件精确控制的程

汇编语言学习指南(二)

汇编指令的操作数可以是内存中的数据, 如何让程序从内存中正确取得所需要的数据就是对内存的寻址. INTEL 的CPU 可以工作在两种寻址模式:实模式和保护模式. 前者已经过时,就不讲了, WINDOWS 现在是32位保护模式的系统, PE 文件就基本是运行在一个32位线性地址空间, 所以这里就只介绍32位线性空间的寻址方式. 其实线性地址的概念是很直观的, 就想象一系列字节排成一长队,第一个字节编号为0, 第二个编号位1, .... 一直到4294967295(十六进制FFFFFFFF,这是32

汇编语言学习指南(一)

汇编语言和CPU以及内存,端口等硬件知识是连在一起的. 这也是为什么汇编语言没有通用性的原因. 下面简单讲讲基本知识(针对INTEL x86及其兼容机)============================x86汇编语言的指令,其操作对象是CPU上的寄存器,系统内存,或者立即数. 有些指令表面上没有操作数, 或者看上去缺少操作数, 其实该指令有内定的操作对象, 比如push指令, 一定是对SS:ESP指定的内存操作, 而cdq的操作对象一定是eax / edx. 在汇编语言中,寄存器用名字来访

汇编语言学习笔记-创建最基本的windows窗体

1如果你不熟悉开发环境的搭建请看此文:http://www.cnblogs.com/liulun/archive/2009/12/26/1632985.html2如果你看了此文的所有注释仍看不懂,请暂且不要再看本系列的其他文章了,先学学WINDOWS API的相关知识吧3以上代码摘自一个汇编语言全接触的CHM 是一个名叫Lxx的前辈翻译的4希望得到大家的支持 .386 .model flat,stdcall;内存平坦,参数传递约定 option casemap:none;大小写敏感 ;;;;;;

汇编语言学习指南(四)

高级语言程序的汇编解析 在高级语言中,如C和PASCAL等等,我们不再直接对硬件资源进行操作,而是面向于问题的解决,这主要体现在数据抽象化和程序的结构化.例如我们用变量名来存取数据,而不再关心这个数据究竟在内存的什么地方.这样,对硬件资源的使用方式完全交给了编译器去处理.不过,一些基本的规则还是存在的,而且大多数编译器都遵循一些规范,这使得我们在阅读反汇编代码的时候日子好过一点.这里主要讲讲汇编代码中一些和高级语言对应的地方. 1. 普通变量.通常声明的变量是存放在内存中的.编译器把变量名和一个

汇编语言学习笔记-使用窗体控件

代码 .386.model flat,stdcall;内存平坦,参数传递约定option casemap:none;大小写敏感 ;;;;;;引用一些必要的数据include D:\masm32\include\windows.incinclude D:\masm32\include\user32.incinclude \masm32\include\gdi32.inc includelib D:\masm32\lib\user32.libinclude D:\masm32\include\ker

汇编语言学习笔记-使用对话框

rsrc.rc文件 代码 #include <resource.h>#define IDC_EDIT 3000 #define IDC_BUTTON 3001 #define IDC_EXIT 3002 MyDialog DIALOG 10, 10, 205, 60 STYLE 0x0004 | DS_CENTER | WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU | WS_VISIBLE | WS_OVERLAPPED | DS_MODALFRAME |