汇编入门学习笔记
以王爽老师的《汇编语言》为入门学习教程学习汇编。记录学习过程中的点点滴滴。
billvsme
好好学习,天天向上嘿嘿
展开
-
汇编入门学习笔记 (十四)—— 直接定址表
疯狂的暑假学习之 汇编入门学习笔记 (十四)—— 直接定址表参考: 《汇编语言》 王爽 第16章1. 描述单元长度的标号普通的标号:a,bassume cs:codecode segment a:db 1,2,3,4,5,6,7,8 b:dw 0start: mov si,offset a mov di,offset b mov ah,0 mov cx,8s: mov al,cs:[si] add cs:[di],ax inc si loop s mov原创 2014-07-23 23:28:26 · 1382 阅读 · 0 评论 -
汇编入门学习笔记 (十三)—— 外中断
疯狂的暑假学习之 汇编入门学习笔记 (十三)—— 外中断参考: 《汇编语言》 王爽 第15章1.外中断信息外中断分为可屏蔽中断和不可屏蔽中断可屏蔽中断先看看内中断所引发的中断过程:(1)取中断类型吗n。(2)标志寄存器入栈,设置IF=0,TF=0.(3)CS、IP入栈(4)(IP)=(n*4),(CS)=(n*4+2)可屏蔽中断的中断过程于内中断所引发的中断过程不同的地方只是,第一步不同。可屏蔽中断的中断过程,CPU要先看IF的值,如果IF=0就不执行中断,如果IF=1执行原创 2014-07-23 01:15:18 · 1267 阅读 · 0 评论 -
汇编入门学习笔记 (十二)—— int指令、端口
疯狂的暑假学习之 汇编入门学习笔记 (十二)—— int指令、端口参考: 《汇编语言》 王爽 第13、14章一、int指令1. int指令引发的中断int n指令,相当于引发一个n号中断。执行过程相当于:(1)取中断类型吗n。(2)标志寄存器入栈;设置IF=0,TF=0。(3)CS,IP入栈(4)(IP)=(n*4),(CS)=(n*4+2)例子1:编写、安装中断7ch,实现求一个word型数据的平方,用ax存放这个数据。原创 2014-07-21 23:08:52 · 2205 阅读 · 0 评论 -
汇编入门学习笔记 (十一)—— 内中段
疯狂的暑假学习之 汇编入门学习笔记 (十一)—— 内中段参考: 《汇编语言》 王爽 第12章 中断是指CPU在执行完当前指令后收到某种信息(中断信息),就不在接向下执行,而去对接收到的信息进行处理。中断信息又可以来自CPU内部和外部,分内中断,外中断。1. 内中断的产生下面4中情况会产生内中断:(1)除法错误。如:div除法溢出(2)单步执行。如debug中的单步调试(3)执行into指令。(4)执行int指令原创 2014-07-19 01:23:36 · 1447 阅读 · 0 评论 -
汇编入门学习笔记 (十)—— 标志寄存器、串传送指令
疯狂的暑假学习之 汇编入门学习笔记 (十)—— 标志寄存器参考: 《汇编语言》 王爽 第11章CPU内部有一种特殊的寄存器叫标志寄存器(flag),它与ax,bx,cx等其他寄存器不同,它不是用来存放数据的,而是用来存放状态的。flag寄存器是按位器作用的,即只有0和1。原创 2014-07-18 17:01:39 · 1913 阅读 · 0 评论 -
汇编入门学习笔记 (九)—— call和ret
疯狂的暑假学习之 汇编入门学习笔记 (九)—— call和ret参考: 《汇编语言》 王爽 第10章call和ret都是转移指令。1. ret和retfret指令:用栈中的数据,修改IP内容,从而实现近转移相当于:pop ipretf指令:用栈中的数据,修改CS和IP,从而实现远转移相当于:pop ippop cs例子:retassume cs:code,ss:stackstack segment db 16 dup(1)stack endscode seg原创 2014-07-15 14:31:48 · 6830 阅读 · 0 评论 -
汇编入门学习笔记 (八)—— 转移指令
疯狂的暑假学习之 汇编入门学习笔记 (八)—— 转移指令参考: 《汇编语言》 王爽 第9章可以修改ip或者同时修改cs和ip的指令统称为转移指令。8086CPU转移行为分为:段内转移:只修改ip段间转移:同时修改cs和ip段内转移按ip修改的范围可分为:短转移:ip修改范围 -128~127近转移:ip修改范围 -32768~32767转移指令分为:无条件转移指令。如 jmp条件转移指令循环指令。如 loop过程。中断。原创 2014-07-13 23:58:19 · 1390 阅读 · 0 评论 -
汇编入门学习笔记 (七)—— dp,div,dup
疯狂的暑假学习之 汇编入门学习笔记 (七)—— dp,div,dup参考: 《汇编语言》 王爽 第8章1. bx、si、di、和 bp8086CPU只有4个寄存器可以用 “[...]” 中进行单元寻址。bp:除了默认的段地址是ss,其他与bx一样。它们所有正确的组合mov ax,[bx]mov ax,[si]mov ax,[di]mov ax,[dp]mov ax,[bx+si]mov ax,[bx+di]mov ax,[bp+si]mov ax,[bp+di]mo原创 2014-07-10 00:15:31 · 7478 阅读 · 1 评论 -
汇编入门学习笔记 (六)—— si、di,双重循环
疯狂的暑假学习之 汇编入门学习笔记 (六)—— si、di,双重循环参考: 《汇编语言》 王爽 第7章1. and和or指令,与[bx+idata]and和or,就不多说了。[bx+idata] 这样写是可以的,某些情况下,比较方便。[bx+idata] 也可以写成 idata[bx]直接见例子:原创 2014-07-09 01:24:05 · 4802 阅读 · 0 评论 -
汇编入门学习笔记 (五)—— 包含多个段的程序
疯狂的暑假学习之 汇编入门学习笔记 (五)—— 包含多个段的程序参考: 《汇编语言》 王爽 第6章1.在代码中使用数据。assume cs:codecode segment dw 0123h,0456h,0789h,0defh mov ax,0 mov bx,0 mov ax,4c00H int 21hcode endsend原创 2014-07-06 18:00:09 · 1389 阅读 · 0 评论 -
汇编入门学习笔记 (四)—— [BX] 和 loop指令
疯狂的暑假学习之 汇编入门学习笔记 (四)—— [BX] 和 loop指令参考:《汇编语言》 王爽 第5章1.[BX]mov al,[1]在debug中,会把bs:1 中数据赋给al,但在在masm中不会把bs:1 中数据赋给al,而是把 [1] 认为是 1 赋给al。如果要实现在debug中的mov al,[1],在masm中就需要[bx]如:mov bx,1mov al,[bx]还可以用 bs:[1] 的方式如:mov al,bs:[1]2.loop循环 要原创 2014-07-05 14:05:10 · 1635 阅读 · 0 评论 -
汇编入门学习笔记 (三) —— 第一个程序
疯狂的暑假学习之 汇编入门学习笔记 (三)—— 第一个程序参考:《汇编语言》 王爽 第四章1.一个源程序从写到执行的过程第一步:编写汇编源程序第二步:对源程序进行编译连接第三步:在操作系统中执行2.源程序代码:assume cs:firstfirst segmen原创 2014-07-02 22:48:02 · 1537 阅读 · 0 评论 -
汇编入门学习笔记 (二)—— 寄存器(内存访问)、栈
疯狂的暑假学习之 汇编入门学习笔记 (二)参考:《汇编语言》 王爽 第三章一、寄存器(内存访问)1.DS和[address]DS 数据段寄存器,用来存放数据段地址[address] 用来表示数据段的偏移地址同样跟CS一样,不可以通过 mov ds, 1000 给ds赋值要通过通用寄存原创 2014-07-01 19:21:48 · 1832 阅读 · 0 评论 -
汇编入门学习笔记 (一)—— 基础知识、寄存器
疯狂的暑假学习之 汇编入门学习笔记 (一)参考:《汇编语言》 王爽 第一,二章一、基础知识 1. 用汇编语言编写程序的工作过程汇编本质就是为了方便程序员,把二进制代码用汇编指令来表示汇编指令----------------> 编译器 ---------------->机器码----------------> 计算机执行mov ax, bx原创 2014-07-01 00:05:50 · 6010 阅读 · 3 评论