
汇编
墨痕诉清风
始于情,行于心。
展开
-
OD-标志寄存器判断语句对照表(汇编标志位寄存器对照表)
原创 2019-02-25 20:08:12 · 1531 阅读 · 0 评论 -
32位、64汇编区别
我在VS使用反汇编看到的依然是32位汇编。 1. 寄存器64位有16个寄存器,32位只有8个。但是32位前8个都有不同的命名,分别是e _ ,而64位前8个使用了r代替e,也就是r _。e开头的寄存器命名依然可以直接运用于相应寄存器的低32位。而剩下的寄存器名则是从r8 - r15,其低位分别用d,w,b指定长度。 32位使用栈帧来作为传递的参数的保存位置,而64位使用寄存器,分别用...原创 2019-02-04 18:43:48 · 5612 阅读 · 0 评论 -
DOS中断大全
DOS中断:1、字符功能调用类(Character-Oriented Function)01H、07H和08H —从标准输入设备输入字符02H —字符输出03H —辅助设备的输入04H —辅助设备的输出05H —打印输出06H —控制台输入/输出09H —显示字符串0AH — 键盘缓冲输入0BH —检测输入状态0CH —清输入缓冲区的输入功能(1)、功能01H、07H和...原创 2019-01-31 18:55:08 · 6727 阅读 · 2 评论 -
BIOS中断大全
BIOS中断:1、显示服务(Video Service——INT 10H) 00H —设置显示器模式0CH —写图形象素 01H —设置光标形状0DH —读图形象素 02H —设置光标位置0EH —在Teletype模式下显示字符 03H —读取光标信息0FH —读取显示器模式 04H —读取光笔位置10H —颜色 05H —设置显示页11H —字体 ...原创 2019-01-31 18:19:43 · 1884 阅读 · 1 评论 -
二十三、中断(控制计算机硬件,避免使用0000:0000-0000:03FF内存地址)
1、中断(运行过程中出现的各种特殊信息的处理程序) 中断信息:CPU在执行指令的同时,检测到CPU外部或内部发送过来的一种特殊信息。2、内中断(比如除法溢出,用1000除以1,8位寄存器放不下1000,于是溢出自动中断,由其内部中断) CPU在执行指令的时候,其内部由于某种原因所发出的中断信息。 计算机用中断类型码(字节型数据00-FF)来标识中断信息的来源(解释中...原创 2019-01-31 13:39:07 · 1140 阅读 · 0 评论 -
二十二、标志寄存器与栈(代码设计安全,与子程序寄存器安全类似)
1、子程序安全调用 子程序的设计要以保持寄存器值的平衡,栈空间的平衡为原则。 子程序的设计在必要时候,需要保持标志寄存器的平衡。2、标志寄存器 在计算机中,有一个专用16位的寄存器FLAGS(又称:标志寄存器)。 标志寄存器是按位起作用的,每一位都有专门的含义,记录特定的信息。 FLAGS寄存器结构: 0 CF进位(是/否) ...原创 2019-01-30 21:47:56 · 461 阅读 · 0 评论 -
二十一、补码 (计算机最小的单位为位)
正数的补码为原数负数的补码为取反后加1注:-25补码为 11100111,负号前全部补1 1. 补码计算机最小的单位是位计算机中的数是用二进制来表示的,数的符号也是用二进制表示的。多数计算机的整数采用补码表示法。 补码表示法: 正数 数的最高有效位为0表示符号为正,数的其余部分则表示数的绝对值。 负数 绝对值按位取反,然后末位加1。 ...原创 2019-01-29 11:17:29 · 3146 阅读 · 0 评论 -
二十、子程序设计(函数)
1. 模块化程序设计把具有一定功能的程序段封装成子程序,以供它人调用。参数:告诉子程序将要处理哪些数值。结果:子程序运算后的结果值。;加法运算assume cs:code,ds:data,ss:stackdata segmentdata endsstack segment dw 256 dup (0H)stack endscode segmentstart...原创 2019-01-27 21:56:53 · 537 阅读 · 0 评论 -
十九、位移超界
1、位移指令(跳转指令、转移指令) 段内短转移(移动范围:-128~127) JMP SHORT 标号 段内近转移(移动范围:-32768~32767) JMP NEAR PTR 标号 段内短转移(移动范围:-128~127) JCXZ 标号 段内短转移(移动范围:-128~127) LOOP 标号2、位移超界 位移指令使用...原创 2019-01-23 20:19:30 · 332 阅读 · 0 评论 -
十八、数据容器、数据访问宽度、端口(计算机对数据处理方式:读取、写入、运算;数据可存放三个地方:CPU内部、内存、端口)
1. 数据容器计算机的基本功能是对数据进行处理,处理的方式有:读取、写入、运算。所处理的数据可以存在于三个地方:CPU内部、内存、端口。 汇编代码中表达数据的位置方式:a 立即数 直接包含在机器指令中的数据。 (内存)mov ax,1122Hmov bx,3344Hb 寄存器 指令要处理的数据在寄存器中。 (CPU内部,否则不固定)...原创 2019-01-21 19:32:06 · 529 阅读 · 0 评论 -
十七、多个段的程序
段定义伪指令功能:定义一个段,segment指明段的开始,ends指明段的结束。语法:段名字 segment...段名字代码(code)段数据(data)段栈(stack)段注意:a 段名字不能重复,在代码中,段名字代表此段的段地址b 数据段,栈段的寄存器需要我们自己通过汇编指令的执行完成设置值。实例:assume cs:code,ds:data,s...原创 2019-01-20 23:06:18 · 318 阅读 · 0 评论 -
十六、定义数据、定义栈
1. 定义数据db 数据,数据......数据 //伪操作用来定义字节数据,其后的每个操作数都占有一个字节(8位)。dw 数据,数据......数据 //伪操作用来定义字,其后的每个操作数都占有已个字(16位,遵循高存高地址,低存低地址的原则)。db、dw为伪指令用来将其后的数据存入指定的存储单元中。db实例:assume cs:daimadaima segmen...原创 2019-01-20 18:50:19 · 512 阅读 · 0 评论 -
十五、段前缀
assume cs:daimadaima segment mov ax,2000H mov ds,ax mov bx,0000H mov ah,01H mov [bx],ax mov cx,5 A: inc bx inc ah mov [bx],ah loop A ...原创 2019-01-20 18:21:03 · 367 阅读 · 0 评论 -
十四、汇编指令(存储、加法、减法、乘法、除法、跳转、子程序、if判断、中断)
0. 存储指令语法:mov 寄存器,寄存器mov 寄存器,[偏移地址]mov [偏移地址],寄存器mov ds:[偏移地址],寄存器1. 加法指令add 加法语法:add 目的操作数,源操作数执行的操作:目的操作数 <- 目的操作数 + 源操作数实例:assume cs:daimadaima segment mov ax,100...原创 2019-01-19 18:49:14 · 2846 阅读 · 0 评论 -
十三、直接、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址
计算机只容许使用bx、si、di、bp寄存器做间接和相对寻址其中bx为基址存储器,si、di为变址存储器 内存寻址方式:确定访问内存存储单元偏移地址的方式称为寻址方式。直接寻址:[偏移地址]寄存器间接寻址:[基址寄存器/变址寄存器]寄存器相对寻址:[基址寄存器/变址寄存器+偏移量值]基址变址寻址:[基址寄存器+变址寄存器]相对基址变址寻址:[基址寄存器+变址寄存器+...原创 2019-01-19 17:58:44 · 23301 阅读 · 0 评论 -
十二、程序返回、数据类型表示、代码注释
1. 程序返回功能:程序返回,结果执行语法:mov ax,4c00Hint 21H 2. 数据类型表示十进制数(D)二进制数(B)十六进制数(H)字符:'a' //对应16进制61字符串: 'abcdef' //对应16进制数据内存存放为 61 62 63 64 65 66 3. 汇编代码中的注释功能:对源代码起到说明作用,方便代码阅...原创 2019-01-19 17:31:11 · 420 阅读 · 0 评论 -
十一、伪指令、数据类型、操作符
伪指令:指给编译器用,告诉编译器如何执行汇编代码。 1 段定义伪指令功能:定义一个段,segment指明段的开始,ends指明段的结束。语法:段名字 segment。。。段名字 ends实例daima segment mov ax,1234H mov ax,4c00Hdaima endsshuju segment 放一些数据...原创 2019-01-19 17:14:36 · 1708 阅读 · 0 评论 -
十、汇编语言的编译
Masm 编译器,将汇编语言源代码文件生成为含有机器指令的目标程序文件。 汇编程序:assume cs:daimadaima segment mov ax,1234H mov ax,4c00H int 21Hdaima endsend1. WIN+R->CMD->进入DEBUG文件夹2. ml 23.txt3. 调试要...原创 2019-01-19 01:40:39 · 594 阅读 · 0 评论 -
汇编编译器以及 DOSBox0.74的安装使用(虚拟)64位
包地址:见本博客资源文件下载 64位安装和使用方法:首先在D盘或其他盘(最好不要在C盘)新建一个名为 masm 的文件夹(名字可以任意,建议用masm).从https://pan.baidu.com/s/1xaMIR-QBJx0jUcotEsT6oA下载实验软件-微机原理,并解压,打开文件如下图所示:打开64bit,再打开64bit目录下的masm(注意:不是我们新建的ma...原创 2019-01-19 01:19:48 · 855 阅读 · 0 评论 -
九、段总结
段分类数据段:此段中存放数据代码段:此段中存放代码栈段:此段中存放栈内容我们可以内存中某段内存空间安排成某段 CPU的段识别数据段:设置DS寄存器存放此段段地址,偏移地址由[偏移地址]给出。代码段:设置CS寄存器存放此段段地址,偏移地址由IP寄存器存放。栈段:设置SS寄存器存放此段段地址,偏移地址由SP寄存器存放。 段混用同一段内存空间,我们可以同时...原创 2019-01-14 17:05:08 · 269 阅读 · 0 评论 -
八、栈的操作、栈空间
注:栈是进行字操作的,非字节。1个字等于两个字节,比如ax一个字分ah和al两个字节。 先进后出,后进先出 栈指令 栈规则先进后出的图像未过程简易图入栈push:寄存器例如:push ax //将ax数据放入栈中push:段寄存器例如:push es //将es数据放入栈中push:[偏移地址]例如:push [0002] //将偏移地址0002数...原创 2019-01-13 23:25:58 · 1031 阅读 · 0 评论 -
七、内存、寄存器数据的传送
1. 从内存中取数据存放到寄存器中2. 从寄存器中取数据存放到内存中 寄存器是CPU里的东西,内存是挂在CPU外面的数据总线上的,访问内存时要在CPU的寄存器填上地址,再执行相应的汇编指令,这时CPU会在数据总线上生成读取或写入内存数据的时钟信号,最终内存的内容会被CPU寄存器的内容更新(写入)或被读入CPU的寄存器(读取)不只是PC上的CPU,所有的嵌入式CPU,单片机都一个样...原创 2018-12-24 17:34:00 · 3154 阅读 · 0 评论 -
六、汇编指令
一、MOV作用:往某个寄存器中存入数值格式:mov 寄存器名称,数值格式:mov 寄存器名称,寄存器名称格式:mov 段寄存器,寄存器名称 mov ds:ax格式:mov 寄存器名称。段寄存器格式:mov 偏移地址,寄存器名称 mov [0000],ax格式:mov 寄存器名称,偏移地址 mov ax,[0000]d 0b33:0100 ***a 0b33:01...原创 2018-12-24 16:14:55 · 307 阅读 · 0 评论 -
五、CPU详解、寄存器详解、标志寄存器详解
控制器、运算器、寄存器组成CPU 控制器:领导运算器:员工,计算数据寄存器:寄存数据信息,在内存与运算器之间硬盘运算速度<内存运算速度<寄存器运算速度寄存器:(寄存器16位[寄存器高8与低8],内存8位) 1. 通用寄存器(16位):AX、BX(基址寄存器)、CX、DX例如:往寄存器BX放入16进制数AF1E(16位二进制)入:r bx出:b...原创 2018-12-24 11:27:01 · 3196 阅读 · 0 评论 -
汇编学习的安装DOSBOX及debug.exe教程
相信有很多小伙伴跟我一样,在学习汇编时却发现win7 64位系统下是无法使用debug.exe的,因为win7 x64没有debug.exe这个文件,因此需要安装DOSBOX。需要下载地址的可到我的资源中查找。下面开始安装教程:1.下载后解压并安装DOSBOX,最好安装在c盘以外的盘,下面以安装在d盘为例2.将MASM文件夹移到d盘根目录下3.打开DOSBOX,这时会出现两个窗...原创 2018-12-20 19:25:11 · 1935 阅读 · 0 评论 -
四、内存空间的编辑和ASSIC码
debug cmd.exe 代码段:在内存中存放代码的联系内存单元 比如:03ff:0100 到 03ff:0200 这段空间均存放了汇编代码,这个空间就叫段代码 数据段:在内存中存放数据的连续内存单元 比如:e 073f:0000 01 02 03 04 05 06 07 08 09 0A .. 一个字节的数据:一个内...原创 2018-12-20 17:52:31 · 471 阅读 · 0 评论 -
三、段地址与偏移地址
偏移地址内存地址 = 起始地址 + 偏移地址1000H + 0004H = 1004H 段地址例如2000末尾为0,2000+FFFF得到的结果就是该段取值范围原创 2018-12-20 17:03:15 · 9121 阅读 · 0 评论 -
二、内存空间
一、内存空间1byte = 8bit //1个二进制1MB = 1024 KB1GB = 1024 MB1TB = 1024GB内存编号:从0开始编号二、内存数据数据既指令、指令既数据原创 2018-12-10 19:45:42 · 275 阅读 · 0 评论 -
一、计算机原理
CPU 执行 内存 放入 硬盘硬盘 读取 内存 到CPU执行否则CPU到硬盘非常慢原创 2018-12-10 19:26:14 · 596 阅读 · 0 评论