
汇编语言
文章平均质量分 63
zmrlinux
密码学 欢迎私聊一起学习
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
汇编学习(一)8086汇编拾遗(2)
寻址方式立即寻址 mov ax,3069H 寄存器寻址 mov al,BH 直接寻址 mov ax,[2000H] 寄存器间接寻址 mov ax,[bx] 寄存器相对寻址 mov ax,cont[si] 基址变址寻址 mov ax,[bp][di] 相对基址变址寻址 mov ax,mask[bx...原创 2016-05-18 12:12:36 · 366 阅读 · 0 评论 -
汇编学习(三) X86汇编基础(一)
X86汇编杂记1x86 基础知识1.%eax %ebx %ecx %edi %esi 通用寄存器2.%ebp %esp %eip %eflags 几个专有寄存器$:使用立即寻址方式我们对比8086寄存器可以发现,其X86 还是有很多8086的影子的。int $0x80 中断,请求终止程序。注释风格:x86 : 以“#”开头808...原创 2016-05-18 16:54:10 · 929 阅读 · 0 评论 -
汇编学习(四)8086汇编拾遗 (3)
jcxz 指令:条件指令,所有的转移都是短转移,IP 的修改范围是-128~127 之间。eg. 查找内存2000H段中的一个值为0的字节,然后将它的偏移地址存储在dx 中。assume cs:code code segment start: mov ax,2000H mov ds,ax mov bx,0 S:mov ch,0 mov cl,ds:[bx] jcxz OK inc ...原创 2016-05-24 23:01:17 · 432 阅读 · 0 评论 -
汇编学习(五)8086汇编拾遗 (4)
汇编模块化成程序语言设计使用寄存器来存储参数和结果是最常用使用的方法。对于存放参数的寄存器和存放结果的寄存器,调用者和子程序的读写操作恰恰相反,调用者将参数送入寄存器,从结果寄存器中取到返回值;子程序从参数寄存器中取到参数,将返回值送入结果寄存器中。上边这段话,看起来像是很冗余,但是却贯穿汇编语言始终8086,X86都是如此。一个转换大小写的程序assume cs:code ...原创 2016-05-25 21:01:54 · 315 阅读 · 0 评论 -
汇编学习(六)8086汇编拾遗 (5)
8086 标志寄存器8086 的最后一个比较重要的寄存器 标志寄存器状态寄存器的三种作用:@用来存储相关指令的某些执行结果@用来为CPU执行相关指令提供行为依据@用来控制CPU的相关工作方式ZF标志:记录相关指令执行后,其结果是否为0,结果为0,zf = 1,不为0 ,zf = 0.PF标志:奇偶效验寄存器,记录相关指令执行后,其中所有位中1 的个数是否为偶数...原创 2016-05-29 14:44:47 · 491 阅读 · 0 评论 -
汇编学习(七)8086汇编拾遗 (6)
前边我们已经基本学完了8086的语法,接下来进入系统学习阶段。中断这个概念蕴含的意思想当的多,但是这里我们只考虑8086的中断模式,等后边学到x86的时候在讨论现代计算机系统的中断,一样会以Linux操作系统为例。这里简要的就跟随王爽的《汇编语言》走了。内中断的产生:@除法错误 0@单步执行 1@执行into指令 4@执行int指令 ...原创 2016-05-29 22:55:01 · 426 阅读 · 0 评论 -
汇编解决的第一个小问题
一朝掌握汇编语言,终生理解计算机系统。--题记现在计算机发展及其迅速,我们能学可学的东西很多,汇编语言已经不再像以前那样必要,但是底层的东西变化却很慢,学习以下我觉得是不吃亏的,尤其是以后立志走C/C++ 路线的程序员。一句话:我学的就是情怀!昨天学妹问我一个问题,很简单。是这样的。#include<stdio.h> int main(){ char a; s...原创 2016-05-30 16:54:27 · 630 阅读 · 0 评论 -
汇编学习(八)8086汇编拾遗 (7)
int 中断指令使用方式:int n. n 为中断类型码,它的功能是引发中断,n 为引发的中断号。先写一个中断程序的例子吧,安装中断7ch 中断例程,计算一个字型数的平方。assume cs:code code segment start: mov ax,cs mov ds,ax mov si,offset sets mov di,200h mov ax,0 mov es,...原创 2016-05-31 20:50:59 · 397 阅读 · 0 评论 -
汇编学习(九)8086汇编拾遗 (8)
端口:从CPU的角度,简单来看,CPU将这些硬件设备进行了统一的编址。一些硬件被编进的地址就变成了对CPU 读取地址的接口。端口的读写指令只有2条:in: 从端口读入数据out:从端口读出数据注意这里只能使用AX 或 AL 来存放从端口读入的或从端口读出的数据。assume cs:code code segment start: mov al,2 out 70h,al...原创 2016-05-31 21:26:35 · 399 阅读 · 0 评论 -
汇编学习(十)8086汇编拾遗 (9)
8086 外中断可屏蔽中断:可屏蔽中断是CPU可以不响应的中断。CPU是否响应屏蔽中断,需要看标志寄存器IF的位置。当CPU检测到可屏蔽中断信息的时候如果IF = 1.则CPU在执行完成当前指令后响应中断,引发中断过程;如果IF = 0,则不响应。如果在中断处理程序中需要处理可屏蔽中断,可以用指令将IF置1,8086CPU提供的设置IF指令如下:sti : 设置IF = 1c...原创 2016-06-01 22:40:07 · 616 阅读 · 0 评论 -
汇编学习(十二)8086汇编拾遗 (11)
《汇编语言》最后一章,键盘和磁盘的读取一个键盘读写程序:assume cs:code code segment charstack: jmp short charstart ;字符串及栈处理 table dw charpush,charpop,charshow top dw 0 charstart: push bx push dx push di push es cmp ah,2 ;...原创 2016-06-02 22:41:02 · 376 阅读 · 0 评论 -
汇编学习(十三)8086汇编拾遗 (12)
王爽的《汇编语言》虽然结束了,但是我们的思考还要继续,结下来就要进入X86汇编语言的学习了,但是思考还要继续。指令拾遗,其实指令还有太多,这里只能写一些有限的:xchg: 交换指令,寄存器和内存变量之间的内容的交换指令,两个交换的数据类型要相同。需要注意的4个地方:1.不能同时为内存操作数2.任何一个操作数不能为段寄存器3.任何一个操作数不能为立即数4.两个操作数...原创 2016-06-03 18:04:53 · 444 阅读 · 0 评论 -
汇编学习(十四)X86汇编学习 (1)
我们首先来学习下几个我们接下来学习的几个重要的工具gdb:UNIX及UNIX-like下的调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。一个小例子:/**********************...原创 2016-06-04 22:36:35 · 526 阅读 · 0 评论 -
汇编学习(十五)X86汇编学习 (2)MBR为例
我们从《汇编语言》的坑爬出来,又进入到了《实模式到保护模式》的坑中。MBR : 计算机开机加电自检之后,BIOS 就就尝试读取0面0道1扇区的内容,传统上就是主引导扇区MBR共512B 以0x55 和 0xAA结尾。然后将启动代码加载到逻辑地址:0x0000:0x7c00 处就是0x07c00处。代码如下:mov ax,0xb800 ;指向文本模式的显示缓冲区 mov es...原创 2016-06-05 22:14:20 · 690 阅读 · 0 评论 -
汇编学习(十六)X86汇编学习 (3) 32位保护模式杂谈
杂谈,就是什么都有!!---瑞子NetburstNetburst微处理器架构为英特尔的X86微处理器架构,P6微处理器制程的后继者。第一个使用这架构的是Willamette核心,于2000年推出。Willamette是第一代Pentium 4所用的核心,而全部的Pentium 4都是使用Netburst。2001年推出的Foster〔Xeon核心〕亦是使用本架构,同时基于Penti...原创 2016-06-11 10:39:53 · 397 阅读 · 0 评论 -
汇编学习(十七)X86汇编学习 (4) GDT
从今天起我们就进入保护模式的学习了,不过考试,课设也随之而来。所以基本规划下,接下来的学习计划吧。距离放暑假还有4周,首先是《X86实模式,保护模式这本书》,还有8章,基本上4~5天一章吧,期间还有《并行程序设计导论》《并行编程模式》着两本,都很薄。基本最多看这么多了。但是我们还有数电,算法,这些东西要复习。最后4周就这么办吧。保护模式概念:保护模式,是一种80286系列和之后的x86...原创 2016-06-12 17:37:54 · 760 阅读 · 0 评论 -
ParalleX OS 设计与实现 一致性理念设计
基于微内核的多核操作系统设计V0.1概要这是一个基于微内核的能体现多核调度的试验性质操作系统。以“一切为消息”为一致性理念。希望将消息传递模块抽象出来成为一个单独的进程。将调度和消息传递分来。整个操作系统由进程管理模块,消息传递模块,内存管理模块,信息调度模块,文件系统模块组成。每一个模块相当于是自己功能的封装。模块之间相互独立。...原创 2016-07-21 09:36:07 · 502 阅读 · 0 评论 -
X86与X64 汇编学习——调用汇编函数
本节说明函数调用相关:函数调用必须被保留的内容:EAX 用于保存输出值,可能在返回前被修改 EBX 指出全局偏移表,必须保留 ECX 保证在函数中可用 EDX 保证在函数中可用 ESP 指向心得堆栈地址,必须保留 EBP 堆栈基址指针,必须保留 EDI ...原创 2016-07-21 11:38:07 · 1425 阅读 · 0 评论 -
汇编语言基础3
汇编语言基础3[BX] 和 loop 指令: ds:段寄存器首先例如:mov ax,[0] 这句的意思是把cx:[0000]的内容移动到寄存器ax中。 [bx]同样也表示一个内存单元,它的偏移地址在bx处 mov ax,[bx] 将一个内存单元的内原创 2015-06-11 21:55:57 · 682 阅读 · 0 评论 -
汇编语言基础2
汇编语言基础(寄存器)首先一个CPU 的结构一般包含运算器,控制器,寄存器,高速缓存,总线等等他们的功能简要来说就是:1.运算器进行信息处理2.寄存器进行信息处理3.控制器控制个种器件进行工作4.内部总线连接各种器件不同的CPU ,寄存器的个数,结构是不相同的。8086有14个寄存器每一个都有一个名字:AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS原创 2015-06-09 17:39:32 · 799 阅读 · 0 评论 -
汇编语言基础1
汇编语言基础1 因为以后应该是要看内核相关的东西,内核百分之二十是用汇编语言写的,不会汇编显然不行,要学的东西还是真多,汇编只是正是走向内核之路的开始,万事开头难,还真是难,下午下载了2.6 和 4.04 的代码显然还是看不懂,那就从基础看把,我至少先搞明白内核是个什么东西,就选择了《linux内核设计与实践》这本书偏向理论,不过现阶段我就是看看内核是什么东西,然后在去看原创 2015-06-05 20:36:16 · 712 阅读 · 0 评论 -
汇编语言基础4
汇编语言基础3一个包含多个段的程序:ds寄存器一般存放数据段的段地址,cs:ip这两个寄存器一般存放的是代段的具体地址,es 段一个可以使用的临时存放变量的寄存器,SS:SP一般存放的就是栈的具体地址,前者位栈的段地址后者为栈的偏移地址。一般程序都有代码段,数据段,文本段,我们希望CPU 从代码段读取指令,通过使用栈来对数据段的数据进行修改,那么程序的本质就能够体现了。这个程序原创 2015-06-15 21:59:47 · 875 阅读 · 0 评论