
汇编
dzweather
https://jfchatai.cn/auth?type=register&invite=NjI4Ng
展开
-
寄存器与缓存的区别
这里的缓存是指的CPU的缓存。按与CPU远近来分,离得最近的是寄存器,然后缓存,最后内存。所以,寄存器是最贴近CPU的,而且CPU只与寄存器中进行存取。(寄存的意思是,暂时存放数据,不中每次从内存中取,它就是一个临时放数据的空间,火车站寄存处就是这个意思)而寄存器的数据又来源于内存。于是 CPU寄存器内存 这就是它们之间的信息交换。原创 2012-11-07 22:08:29 · 31336 阅读 · 9 评论 -
(13)int指令
1、int 21h 形如这样的中断为int中断,后跟中断码,它属于内中断2、过程:取中断码(如上21H) pushf , IF=0, TF=0 CS:IP入栈 ip=4*n, CS=4*n+23、开机过程 开机,CPU加电,CS=0f转载 2012-12-12 20:07:21 · 1030 阅读 · 0 评论 -
(12)内中断
1、中断:就是打断,打扰,在正常做事中被人打断,事后又恢复进行原来做的事的过程。2、内部中断:就是CPU本身内部产生的中断。比如你做事,忽然尿来了,自身打断,去上厕所,然后回来后继续做事。 内部中断有四种: 除法中断,如溢出。 中断码0 单步执行,如单步跟踪时,会每步中断,以便查看。TF设置.。中断码1 执行into指令。中断码4转载 2012-12-11 10:00:36 · 1299 阅读 · 0 评论 -
(11)标志寄存器
1、标志寄存器,16位,PSW 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OF DF IF TF SF转载 2012-12-08 23:33:23 · 766 阅读 · 0 评论 -
(8)数据处理的两个基本问题
1、要处理的数据有多长? 可以根据寄存器来确定, 可以根据word ptr,byte ptr等来确定,2、寻址方式 直接寻址 [idata] 寄存器间接寻址 [reg] 寄存器相对寻址 [reg+idata] 基址变址寻址 [b +si/di] 相对基址变转载 2012-12-08 18:06:32 · 554 阅读 · 0 评论 -
(10)call与Ret 去电与回电
1、模块化程序设计中,完成一个小功能就用Call,去电问一声:美女,在洗澡么? Call 标号 Call reg(16位) Call word ptr [内存单元] 本质:本处16位偏移量入栈(sp-2),IP移到16位偏移量处。即push IP jmp near 标号 Call转载 2012-12-08 21:03:31 · 713 阅读 · 0 评论 -
(9)转移指令的原理
1、跳转就是修改IP,或同时修改CS,这样达到指令到另一位置执行的目的。2、offset偏移量 就是段开始到标号处处的相对距离,,这个段不一定非得是CS mov ax,offset s mov cx, offset s - offset send ;可见可以运算3、三级跳远 段内: 短跳(jump short转载 2012-12-08 19:31:41 · 716 阅读 · 0 评论 -
(7)更灵活的定位内存地址的方法
1、and 逻辑与,按位与 or 逻辑或,按位或2、字母大小写,大写的ASC小,小写的ASC码大 两者相差20H,即索引第5位为1或0的情况: and ah, 1101 1111B ;大写 or ah,0010 0000B ;小写3、汇编的相对 这个“相对"始终在转载 2012-12-08 17:49:20 · 488 阅读 · 0 评论 -
(6)包含多个段的程序
1、定义 db define byte dw define word dd define dword(double word)2、start 标明程序指令从这里开始 code虽然定义为代码段,但这个是活动的,也可是存储数据,如果标明真正的代码开始的地方呢?start的后面就是。转载 2012-12-08 17:18:30 · 918 阅读 · 0 评论 -
汇编指令的英文全称
其实这个英文全称有助于记住指令,这就是为啥国外进步快的原因,因为是他们的本语。查询时,对浏览器用Ctrl+F,弹出查询框时,输入指令就就可以快速知道(傲游3)8086CPU提供以下几大类指令。 一、数据传送指令 比如,mov(move)、push、pop、pushf(push flags)、popf(pop flags)、xchg(exchange)等都转载 2012-12-07 21:15:51 · 1423 阅读 · 0 评论 -
(2)寄存器
1、CPU由运算器、控制器、寄存器组成,它们通过内部总线相连。平时所说总线是外部总线(CPU与外设相连)。2、程序员常使用寄存器进行汇编编程。3、寄存器有16个。通用四个AX、BX、CX、DX,每个16位,为与上代CPU兼容,又分AH,AL,其余类同。 故一个字(16位)按位存储就是高字节在AH,低字节在AL。 AX(accumulator)累加寄存器,常用转载 2012-11-20 18:05:32 · 877 阅读 · 0 评论 -
程序中的字节是怎么算的
8086中用Debug或Masm编译后,可以用R命令进行查看程序所点的字节。其中的Cx就记载着程序的字节。那么这个字节是怎么算出来的呢?经过反复的试验得出下面一个结论:程序连续所占的字节,但最后一段,按实际所占的字节计算。DS,CS,SS三段中,必定是连续的(或者其它标号的,是连接的)前面某段未占满最未一段按16满的计算(段的特征),程序最后一段的按实际的计原创 2012-11-29 22:11:56 · 2974 阅读 · 0 评论 -
(4)第一个程序
assume cs:codesgcodesg segment mov ax,0123H mov cx,5 s: add ax,ax loop s mov ax,4c00h int 21Hcodesg转载 2012-11-27 16:27:40 · 591 阅读 · 0 评论 -
(3)寄存器(内存)
1、立即数不能与段寄存器相遇。(CS,DS,SS,ES) 段寄存器不能作运算 mov ds,1000 ;错误,不直接传送 mov ax,3 mov ds,ax add ds,ax ;错误,不能运算 mov bx,1000 mov ds,bx ;通过bx来传送 mov al,[0]转载 2012-11-22 22:27:20 · 814 阅读 · 0 评论 -
(5)[Bx]及loop
1、[Bx]的来历 因为不同的编译器解释mov ax,[3]时会有所不同,有时会解释成mov ax,3 结论:这种情况写成下面可以避免不同编译器的混淆 一是带上段地址:mov ax,ds:[3] 二是用bx来写(bx=3): mov ax,[bx] 注意:bx就是base register,只转载 2012-11-27 16:37:54 · 632 阅读 · 0 评论 -
检测1.1
第一题错误:原因:地址总线是寻址能力的表现,而每个内存单元是Byte,其中内存单位的个数就是寻址能力。 故上面是8K的能力,即10的13次方,故为13. 而不是再次把Byte转为bit,即还有10的3次方转载 2012-11-08 18:55:56 · 670 阅读 · 0 评论 -
(1)基础
1、汇编3类指令 汇编指令:机器码的助记符,有对应的机器码; 伪指令: 没有对应的机器码,由编译器执行,计算机并不执行; 其它符号:如+-/*等,由编译器识别,没有对应 的机器码。2、存储器(内存)的容量是以字节为最小单位来计算, 一个存储单元就是一字节,一字节有8bit.。3、move ax,[3]]转载 2012-11-07 21:05:37 · 975 阅读 · 0 评论 -
(14)端口
1、端口:是一个二传手。CPU控制外设,不能直接操纵,须通过一个接口(二传手)来控制。这个接口就由多个端口组成。 比如网卡,不能直接操作,须通过网卡上的接口电路来操作,这个接口电路也分一些寄存器等,我们只须看它为端口。 因此,端口象视存储一样,被映射到地址空间中,这样CPU才可能操作端口,端口再操作外设的动作。这样有一个好处 就是CPU不需要了解每个厂商的设计,转载 2012-12-13 13:20:37 · 841 阅读 · 0 评论