直接定址表
1.以前我们使用的标号只表示了内存单元的地址,现在还有一种标号可以同时表示内存单元的地址(也就是在段中的偏移地址)和内存单元的长度,以前用到的标号只能在code段中使用,而现在的这种标号可以data段中使用,其实就是少了个冒号
以前的标号 a: db 1,2,3,4,5,6,7,8 称为地址标号
现在的标号 a db 1,2,3,4,5,6,7,8 称为数据标号
2.在其他段中的使用数据标号
若想在代码段中直接使用数据标号访问数据,需要用伪指令assume将标号所在的段和一个段寄存器联系起来,同时我们也要在code段用指令对段寄存器进行设置
seg...


- [alabo886] 出现add [bx+si],al 我的也是啊,有时还出现别的莫名其妙的指令,不明怎么回事? 10/18 10:30
- [2007211006sj] 假如code中 a dw 1,2,3,4,5,6,7,65500 b dd 0 呢? 06/11 20:51
- [游客] 呵呵 ,我刚学汇编,一口气读完了第5章,希望以后可以一起讨论. 07/14 17:37
- [deepblue] 加油!革命同志 06/20 10:08
- [ppt] 做笔记很好,记忆深刻. 06/14 12:07
- [duckgaga] 加油! 06/12 23:40
- [tomato] 够认真! 06/12 20:25
- [tomato] 博主学习汇编语言的路程马上要走完了!一路辛苦了!不过改个弯又是另一条更宽阔的路途等待博主去走下去!加 06/12 20:23
- [tomato] 嗯,不错,我比较喜欢优美的文章,呵呵! 06/12 20:09
- [ppt] 分析分析不错. 06/11 22:57
[2008-06-10 16:17] 实验16
阅读全文 |
评论次数(2) |
浏览次数(969) |
所属类型(汇编笔记)
[2008-06-10 08:58] 第15章汇编笔记
外中断
CPU除了有运算能力之外,还要有I/O能力,那要及时处理外设的输入
需要解决两个问题:CPU如何得知外设的输入,从何处得到外设的输入
1.接口芯片和端口
CPU不直接对外设进行操作,外设的输入不直接送入CPU,而是送入相关的接口芯片的端口中;CPU向外设的输出也不是直接送入外设,而是先送入端口,再由相关芯片送到外设
2.外设随时可能发生需要CPU及时处理的事件,CPU提供了中断机制来满足这种需要
在PC系统中,外中断源有两类:
(1).可屏蔽中断:指CPU可以不响应的中断,有IF位控制,IF=1,响应,否则不响应
sti 设置IF=1
cli 设置IF=0...
CPU除了有运算能力之外,还要有I/O能力,那要及时处理外设的输入
需要解决两个问题:CPU如何得知外设的输入,从何处得到外设的输入
1.接口芯片和端口
CPU不直接对外设进行操作,外设的输入不直接送入CPU,而是送入相关的接口芯片的端口中;CPU向外设的输出也不是直接送入外设,而是先送入端口,再由相关芯片送到外设
2.外设随时可能发生需要CPU及时处理的事件,CPU提供了中断机制来满足这种需要
在PC系统中,外中断源有两类:
(1).可屏蔽中断:指CPU可以不响应的中断,有IF位控制,IF=1,响应,否则不响应
sti 设置IF=1
cli 设置IF=0...
阅读全文 |
评论次数(1) |
浏览次数(373) |
所属类型(汇编笔记)
[2008-06-10 08:16] 第十四章汇编笔记
端口
1.CPU将各种存储器都视为内存来对待,对它们总的看做一个由若干存储单元组成的逻辑存储器,这个逻辑存储器我们称为内存地址空间。
2.在PC机系统中,和CPU通过总线相连的芯片除了存储器,还有另外3种芯片:
(1).各种接口卡(显卡、网卡)
(2).主板上的接口芯片
(3).其他芯片,用来存储相关信息
在这些芯片中,都有一组可以由CPU读写的寄存器
它们的共同点:与总线相连,CPU通过端口读写命令来访问芯片
3.从CPU的角度,将这些寄存器都当作端口,对它们进行统一编址,从而建立一个统一的端口地址空间。
CPU能够直接读写3个地方的数据:CPU内的寄存器,...
1.CPU将各种存储器都视为内存来对待,对它们总的看做一个由若干存储单元组成的逻辑存储器,这个逻辑存储器我们称为内存地址空间。
2.在PC机系统中,和CPU通过总线相连的芯片除了存储器,还有另外3种芯片:
(1).各种接口卡(显卡、网卡)
(2).主板上的接口芯片
(3).其他芯片,用来存储相关信息
在这些芯片中,都有一组可以由CPU读写的寄存器
它们的共同点:与总线相连,CPU通过端口读写命令来访问芯片
3.从CPU的角度,将这些寄存器都当作端口,对它们进行统一编址,从而建立一个统一的端口地址空间。
CPU能够直接读写3个地方的数据:CPU内的寄存器,...
阅读全文 |
评论次数(1) |
浏览次数(645) |
所属类型(汇编笔记)
[2008-06-03 21:47] 第十三章汇编笔记
int指令:另一种重要的内中断
1.int指令引发中断:
(1).取中断类型码n
(2).标志寄存器入栈,IF=0,TF=0
(3).CS,IP入栈
(4).IP=n*4, CS=n*4+2
int指令的最终功能和call相似,调用一段程序,系统会提供,我们自己也能编写
以后将中断处理程序称为中断例程
2.中断例程编写
我理解的中断例程编写分为两个步骤
(1).编写安装程序,安装程序包括:指令复制,中断向量表项修改(即指定入口地址),中断例程
(2).编写应用程序,即用户想干什么
在第一步中需要注意的是,将中断例程中要用到的寄存器保护起来,以免和用户使用的寄...
1.int指令引发中断:
(1).取中断类型码n
(2).标志寄存器入栈,IF=0,TF=0
(3).CS,IP入栈
(4).IP=n*4, CS=n*4+2
int指令的最终功能和call相似,调用一段程序,系统会提供,我们自己也能编写
以后将中断处理程序称为中断例程
2.中断例程编写
我理解的中断例程编写分为两个步骤
(1).编写安装程序,安装程序包括:指令复制,中断向量表项修改(即指定入口地址),中断例程
(2).编写应用程序,即用户想干什么
在第一步中需要注意的是,将中断例程中要用到的寄存器保护起来,以免和用户使用的寄...
阅读全文 |
评论次数(2) |
浏览次数(406) |
所属类型(汇编笔记)
[2008-06-03 11:28] 第十二章汇编笔记
内中断
中断信息可以来自CPU的内部和外部
1.首先是内部中断
除法错误,如div溢出
单步执行,在debug调试中使用t命令
执行into命令,还没有用过
执行int命令,如每次程序结尾的int 21h
8086CPU用称为中断类型码的数据来标识中断信息的来源,中断类型码为一个字节型数据,可以表示256种中断信息来源。
将产生中断信息的事件,即中断信息的来源,简称中断源
2.中断处理程序
受到中断信息后,需要对信息进行处理,如何处理,可以由我们编程决定,也可以使用系统提供的中断处理程序。现在首要问题是,如何去执行中断处理程序,即需要程序入口地址。通过中断类...
中断信息可以来自CPU的内部和外部
1.首先是内部中断
除法错误,如div溢出
单步执行,在debug调试中使用t命令
执行into命令,还没有用过
执行int命令,如每次程序结尾的int 21h
8086CPU用称为中断类型码的数据来标识中断信息的来源,中断类型码为一个字节型数据,可以表示256种中断信息来源。
将产生中断信息的事件,即中断信息的来源,简称中断源
2.中断处理程序
受到中断信息后,需要对信息进行处理,如何处理,可以由我们编程决定,也可以使用系统提供的中断处理程序。现在首要问题是,如何去执行中断处理程序,即需要程序入口地址。通过中断类...
阅读全文 |
评论次数(0) |
浏览次数(339) |
所属类型(汇编笔记)
[2008-06-02 21:07] 第十一章汇编笔记
标志寄存器:这一章要记的东西还是很多的
CPU内部的寄存器中,有一种特殊的寄存器被称为标志寄存器,有16位,其中存储的信息通常被称为程序状态字(PSW)。
这一章讲讲了六个标志位CF,PF,ZF,SF,OF,DF,一共有9个
1.ZF(zero flag)
记录相关指令执行后,其结果是否为0,如果结果为0,则zf=1,否则为0
注意:在8086指令集中,有的指令的执行是影响标志位的,如add,sub,mul,div,inc,or,and等,它们大都是运算指令;有的指令不影响标志位,如mov,push,pop等,它们大都是传送指令
2.PF(parity flag) ...
CPU内部的寄存器中,有一种特殊的寄存器被称为标志寄存器,有16位,其中存储的信息通常被称为程序状态字(PSW)。
这一章讲讲了六个标志位CF,PF,ZF,SF,OF,DF,一共有9个
1.ZF(zero flag)
记录相关指令执行后,其结果是否为0,如果结果为0,则zf=1,否则为0
注意:在8086指令集中,有的指令的执行是影响标志位的,如add,sub,mul,div,inc,or,and等,它们大都是运算指令;有的指令不影响标志位,如mov,push,pop等,它们大都是传送指令
2.PF(parity flag) ...
阅读全文 |
评论次数(2) |
浏览次数(409) |
所属类型(汇编笔记)
[2008-06-01 22:30] 第十章汇编笔记
call和ret指令
call和ret指令都为转移指令,都能修改IP或同时修改CS,IP,他们经常成对出现实现子程序的设计
1.ret和retf
相对call的用法,ret就少多了
ret指令:用栈中的数据修改IP,实现近转移,可以看到ret和retf都是以字为单位进行操作,很显然就是近转移
retf:实现远转移,应该就是段间转移吧,需要CS,IP,它们都是从栈中得到的,相当于进行了pop IP和pop CS命令,注意先后顺序
2.call指令
两步操作:将当前的IP或IP和CS压入栈中;转移
1..根据位移进行转移 call 标号
将当前IP入栈,然后...
call和ret指令都为转移指令,都能修改IP或同时修改CS,IP,他们经常成对出现实现子程序的设计
1.ret和retf
相对call的用法,ret就少多了
ret指令:用栈中的数据修改IP,实现近转移,可以看到ret和retf都是以字为单位进行操作,很显然就是近转移
retf:实现远转移,应该就是段间转移吧,需要CS,IP,它们都是从栈中得到的,相当于进行了pop IP和pop CS命令,注意先后顺序
2.call指令
两步操作:将当前的IP或IP和CS压入栈中;转移
1..根据位移进行转移 call 标号
将当前IP入栈,然后...
阅读全文 |
评论次数(0) |
浏览次数(345) |
所属类型(汇编笔记)
[2008-06-01 21:26] 第九章汇编笔记
转移指令的原理
能修改IP,或者能同时修改CS,IP的指令称为转移指令
8086的转移行为分为以下几类
1.只修改IP,为段内转移,如jmp ax
段内转移由于转移指令对于IP的修改范围的不同分为:短转移和近转移
短转移的IP范围:-128---127(8位寄存器的有符号存储范围)
近转移的IP范围:-32768--32767(16位reg的有符号存储范围)
8086CPU的转移指令又分为以下几类
1.无条件转移jmp,跟C语言的goto很像
2.条件转移指令
3.循环指令(loop)
4.过程
5.中断
这是第九章开篇的一段话,学到13章后才觉得这段...
能修改IP,或者能同时修改CS,IP的指令称为转移指令
8086的转移行为分为以下几类
1.只修改IP,为段内转移,如jmp ax
段内转移由于转移指令对于IP的修改范围的不同分为:短转移和近转移
短转移的IP范围:-128---127(8位寄存器的有符号存储范围)
近转移的IP范围:-32768--32767(16位reg的有符号存储范围)
8086CPU的转移指令又分为以下几类
1.无条件转移jmp,跟C语言的goto很像
2.条件转移指令
3.循环指令(loop)
4.过程
5.中断
这是第九章开篇的一段话,学到13章后才觉得这段...
阅读全文 |
评论次数(0) |
浏览次数(575) |
所属类型(汇编笔记)
[2008-06-01 19:08] 第八章汇编笔记
数据处理的两个基本问题:
1.处理的数据在什么地方?
2.要处理的数据有多长?(CPU完全不关心数据是多少)
对于这两个问题我的理解是怎么寻址,怎么寻址有效率,寄存器匹配数据
1.bx,si,di,bp的用法,我觉得书上8.1总结的很好了,在此只有一点补充就是如指令mov [bx],[si]我没记错的话,应该是不能通过编译的,非要用ax中转下
2.绝大部分的机器指令都是进行数据处理的指令,大致分三类:读,写,算。指令不关心数据是多少,关心存放数据的地址
3.寻之方式总结,贴张图上来,方便些
4.数据长度:8086只能处理byte,word。在没有寄存器名存在的...
1.处理的数据在什么地方?
2.要处理的数据有多长?(CPU完全不关心数据是多少)
对于这两个问题我的理解是怎么寻址,怎么寻址有效率,寄存器匹配数据
1.bx,si,di,bp的用法,我觉得书上8.1总结的很好了,在此只有一点补充就是如指令mov [bx],[si]我没记错的话,应该是不能通过编译的,非要用ax中转下
2.绝大部分的机器指令都是进行数据处理的指令,大致分三类:读,写,算。指令不关心数据是多少,关心存放数据的地址
3.寻之方式总结,贴张图上来,方便些
4.数据长度:8086只能处理byte,word。在没有寄存器名存在的...
阅读全文 |
评论次数(0) |
浏览次数(312) |
所属类型(汇编笔记)
[2008-06-01 17:46] 第七章汇编笔记
更灵活的定位内存地址的方法
1.and和or命令
and 通过该指令可将操作对象的相应位设为0,其他位不变
or 通过该命令可将操作对象的相应位设为1,其他位不变
2.计算机只知道二进制,但是人能理解的信息是已经具有约定意义的字符。只要编码和解码采用相同的规则,我们就可以将人能理解的信息存入到计算机,再从计算机中取出。计算机系统通常采用ASCII码
3.用'......'形式指明数据是以字符的形式给出的编译器会将他们转化为ASCII码。
4.大小写字母转换,ASCII中小写字母-20H=大写字母,那么我们首先需要判断一个字母是大写还是小写,这样就要用到条件语句之类...
1.and和or命令
and 通过该指令可将操作对象的相应位设为0,其他位不变
or 通过该命令可将操作对象的相应位设为1,其他位不变
2.计算机只知道二进制,但是人能理解的信息是已经具有约定意义的字符。只要编码和解码采用相同的规则,我们就可以将人能理解的信息存入到计算机,再从计算机中取出。计算机系统通常采用ASCII码
3.用'......'形式指明数据是以字符的形式给出的编译器会将他们转化为ASCII码。
4.大小写字母转换,ASCII中小写字母-20H=大写字母,那么我们首先需要判断一个字母是大写还是小写,这样就要用到条件语句之类...
阅读全文 |
评论次数(1) |
浏览次数(367) |
所属类型(汇编笔记)