汇编语言知识大全
- 格式:doc
- 大小:36.00 KB
- 文档页数:17
汇编语言考点总结汇编语言是一种低级的计算机编程语言,它直接操作计算机的底层硬件。
在计算机科学与技术领域,学习和掌握汇编语言是非常重要的一项技能。
本文将对汇编语言的主要考点进行总结,以帮助读者更好地理解和应用这门编程语言。
一、汇编语言的基本概念1. 背景介绍:汇编语言的产生和发展历程。
2. 指令集体系结构:指令的组成、执行过程和影响因素。
二、寄存器与寻址方式1. 通用寄存器:AX、BX、CX、DX等的功能和应用。
2. 段寄存器:CS、DS、ES、SS寄存器的作用和运用。
3. 寻址方式:立即寻址、直接寻址、间接寻址、寄存器寻址等的特点和使用场景。
三、汇编指令的基本操作1. 数据传输指令:MOV、XCHG、PUSH、POP等指令的使用方法和注意事项。
2. 算术运算指令:ADD、SUB、MUL、DIV等指令的功能和运算规则。
3. 逻辑运算指令:AND、OR、NOT、XOR等指令的逻辑操作和应用实例。
四、程序控制指令1. 无条件转移指令:JMP、CALL、RET等指令的作用和使用场景。
2. 条件转移指令:JZ、JC、JG等指令的条件判断和跳转控制。
3. 循环指令:LOOP、LOOPZ、LOOPNZ等循环控制指令的循环次数和条件判断。
五、中断与异常处理1. 中断的概念和分类:硬件中断和软件中断的区别与应用。
2. 中断处理程序:中断向量表、中断服务例程和中断处理过程的执行顺序。
3. 异常处理:异常的触发原因和异常处理的基本流程。
六、汇编语言编程实例1. 简单的计算器程序:实现两个数的加、减、乘、除运算。
2. 字符串处理程序:实现字符串的输入、输出、查找和替换等功能。
3. 汇编子程序的编写:封装通用功能的子程序,提高代码的重用性。
七、常见的汇编语言工具和资源1. 汇编语言开发环境:MASM、TASM、NASM等汇编器的介绍和使用方法。
2. 相关书籍和教程:推荐几本经典的汇编语言教材和在线资源。
结语:汇编语言虽然在现代计算机编程中使用较少,但它仍然在一些特定场景下发挥着重要的作用。
汇编语言知识大全第一章基础知识:一.机器码:1.计算机只认识0,1两种状态。
而机器码只能由0,1组成。
故机器码相当难认,故产生了汇编语言。
2.其中汇编由三类指令形成:汇编指令(有机器码对应),伪指令,其他符号(编译的时候有用)。
每一总CPU都有自己的指令集;注意学习的侧重点。
二.存储器:1.存储单元中数据和指令没任何差别。
2.存储单元:Eg:128个储存单元(0~127)128byte。
线:1.地址总线:寻址用,参数(宽度)为N根,则可以寻到2^N个内存单元。
据总线:传送数据用,参数为N根,一次可以传送N/8个存储单元。
3.控制总线:cpu对元器件的控制能力。
越多控制力越强。
四.内存地址空间:1.由地址总线决定大小。
2.主板:cpu和核心器件(或接口卡)用地址总线,数据总线,控制总线连接起来。
3.接口卡:由于cpu不能直接控制外设,需通过接口卡间接控制。
4.各类存储器芯片:RAM,BIOS(主板,各芯片)的ROM,接卡槽的RAMCPU在操控他们的时候,把他们都当作内存来对待,把他们总的看作一个由若干个存储单元组成的逻辑存储器,即我们所说的内存地址空间。
自己的一点理解:CPU对内存的操作是一样的,但是在cpu,内存,芯片之间的硬件本身所牵扯的线是不同的。
所以一些地址的功能是对应一些芯片的。
第二章寄存器引入:CPU中含有运算器,寄存器,控制器(由内部总线连接)。
而寄存器是可以用来指令读写的部件。
8086有14个寄存器(都是16位,2个存储空间)。
一.通用寄存器(ax,bx,cx,dx),16位,可以分为高低位注意1.范围:16位的2^16-1,8位的2^8-12.进行数据传送或运算时要注意位数对应,否则会报错二.字:1. 1个字==2个字节。
2. 在寄存器中的存储:0x高位字节低位字节;单元认定的是低单元数制,16进制h,2进制b三.20根数据总线的16位cpu--8086给出物理地址的方法:根数据总线(稍外):寻址能力为1M位的cpu(内部):一次能处理的数据位2^16。
汇编语言知识大全汇编语言是计算机科学领域的重要组成部分,它是一种低级语言,用于在计算机硬件上进行编程。
了解和掌握汇编语言对于想要深入了解计算机体系结构和进行底层编程的人来说是非常重要的。
本文将为您提供一份汇编语言知识大全,涵盖汇编语言的基础知识、指令集、程序开发和调试技巧等方面。
一、汇编语言的基础知识1. 什么是汇编语言?汇编语言是一种机器语言的符号表示方法,通过使用助记符(mnemonic)代表特定的二进制指令,使得程序员可以更容易地编写和理解机器代码。
2. 汇编语言和高级语言的区别是什么?汇编语言主要是面向机器的,使用指令来直接控制硬件的操作,而高级语言更加抽象,使用更接近自然语言的语法结构,通过编译器或解释器将其翻译为机器码。
3. 为什么需要学习汇编语言?学习汇编语言可以让我们更好地理解计算机的底层工作原理,能够更加高效地编写程序,优化性能,并且在某些特定的应用中,汇编语言可以实现一些高级语言所不能达到的功能。
二、汇编语言的指令集1. 汇编语言的指令格式汇编语言的指令一般包含操作码(Opcode)、操作数(Operand)和注释三个部分,其中操作码表示要执行的操作,操作数表示要操作的数据,而注释则是对指令的解释说明。
2. 汇编语言的常用指令在汇编语言中,常用指令包括数据传输指令、算术和逻辑指令、控制指令等等。
比如MOV指令用于数据传输,ADD指令用于加法操作,JMP指令用于无条件跳转等。
3. 汇编语言的寻址方式寻址方式是指汇编语言中用于定位操作数的方法,常见的寻址方式有直接寻址、间接寻址、寄存器寻址等。
不同的寻址方式适用于不同的操作场景。
三、汇编语言的程序开发1. 程序结构汇编语言的程序通常由代码段、数据段和堆栈段组成。
代码段用于存放程序的指令,数据段用于存放程序的数据,而堆栈段则用于存放程序的运行时信息。
2. 程序调用在汇编语言中,程序之间的调用可以通过CALL和RET指令来实现。
CALL用于调用子程序,将当前代码的执行流程转移到被调用的子程序中,而RET则用于返回调用点。
Ch1 汇编语言基础知识1.什么是汇编语言?2.汇编语言与机器语言的区别3.学习汇编语言的意义4.码制:不同进制、原码、反码、补码、BCD码表示,压缩BCD码Ch2 微型计算机体系结构1.8086是16位微处理器,它有16根数据线和20根地址线,寻址空间1MB。
2.8086中设置了一个6字节的指令预取队列,它的意义如何?3.8086分为EU和BIU两个部分。
说明它们的功能、作用和相互关系。
4.8086中有4个寄存器可以拆分为两个8位寄存器独立使用。
是那些寄存器?5.说明8086堆栈的特点。
指令指针寄存器IP、堆栈指针SP………6.指令对标志寄存器FLAGS的影响。
7.在8086中,当一个字存入存储器时,占有连续的两个字节空间。
存放时,低位字节存入低地址,高位字节存入高地址。
8.8086是采用存储器分段管理方式来解决寻址问题的。
即将1MB地址空间分为若干个逻辑段,段的大小按实际需要确定,最大为64KB。
9.8086对于1MB的物理存储空间,每一个存储单元都有一个20位的物理地址10.8086是采用存储器分段管理方式来解决寻址问题,指令中采用逻辑地址形式,逻辑地址表示格式为:段地址:偏移地址11.逻辑地址“段地址:偏移地址”转换为对应的物理地址的方法。
Ch3 指令系统1.在一般情况下,机器指令应包含两个部分内容,其一般格式为:操作码操作数。
2.什么是寻址方式?8086有哪些寻址方式?3.重点指令。
Ch4 伪指令与汇编语言程序结构设计1.汇编语言源程序由若干条语句组成,其语句分为两类:指令性语句和指示性语句。
2.合法的名字。
3.数据定义伪指令开始。
DB、DW、DUP等。
4.段定义Ch7 输入输出程序设计1. 接口与外设之间的信息。
2. I/O接口的功能。
3. 接口的基本组成。
4. 输入输出的控制方式的概念:无条件传送、查询式传送、中断传送。
5. 中断的基本概念、优点。
6. 什么是中断向量表、特点。
Ch8 高级汇编技术1. 什么是宏。
汇编基础知识1.汇编语⾔的特点(1)汇编语⾔发展⾄今,有以下3类指令组成。
a.汇编指令:机器码的助记符,有对应的机器码。
b.伪指令:没有对应的机器码,由编译器执⾏,计算机并不执⾏。
c.其他符号:如+、-、*、/、等,由编译器识别,没有对应的机器码。
汇编语⾔的核⼼是汇编指令,它决定了汇编语⾔的特性。
(2)汇编指令和机器指令的差别在于指令的表⽰⽅法上。
汇编指令是机器指令的助记符,便于⼈类记忆和使⽤。
(3)不同的CPU有不同的汇编指令。
2.计算机系统的组成3.指令 vs 数据(1)在内存或磁盘上,指令和数据都以⼆进制形式存在,在形式上没有任何区别。
(2)指令和数据是应⽤上的概念。
4.cpu通过总线对存储器数据的读写过程cpu要想进⾏数据的读写,必须和外部器件(标准的说法是芯⽚)进⾏下⾯3类信息的交互。
存储单元的地址(地址信息);器件的选择,读或写的命令(控制信息);读或写的数据(数据信息)。
5.内存地址空间设⼀个CPU的地址总线宽度为n,那么可以寻址2^n个内存单元,这2^n个可寻到的内存单元就构成这个CPU的内存地址空间。
内存地址空间也称寻址空间。
与cpu地址总线的宽度直接相关。
表⽰CPU所能寻找到的最⼤地址空间范围。
最终运⾏程序的是CPU,我们⽤汇编语⾔编程的时候,必须要从CPU的⾓度考虑问题。
对CPU来讲,系统中的所有存储器中的存储单元都处于⼀个统⼀的逻辑存储器中,它的容量受CPU寻址能⼒的限制。
这个逻辑存储器即时我们所说的内存地址空间。
6.⼩结(1)汇编指令是机器指令的助记符,同机器指令⼀⼀对应。
(2)每⼀种CPU都有⾃⼰的汇编指令集。
(3)CPU可以直接使⽤的信息在存储器中存放。
(4)在存储器中指令和数据没有任何区别,都是⼆进制信息。
(5)存储单元从零开始顺序编号。
(6)⼀个存储单元可以存储8个bit,即8位⼆进制数。
(7)1Byte=8bit 1KB=1024B 1MB=1024KB 1GB=1024MB。
常用汇编指令一、数据传输指令它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.1. 通用数据传送指令.MOV 传送字或字节.MOVSX 先符号扩展,再传送.MOVZX 先零扩展,再传送.PUSH 把字压入堆栈.POP 把字弹出堆栈.PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.BSWAP 交换32位寄存器里字节的顺序XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数) CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX )XADD 先交换再累加.( 结果在第一个操作数里 )XLAT 字节查表转换.── BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即0-FFH); 返回 AL 为查表结果. ( [BX+AL]->AL )2. 输入输出端口传送指令.IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器 )输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时,其范围是 0-65535.3. 目的地址传送指令.LEA 装入有效地址.例: LEA DX,string ;把偏移地址存到DX.LDS 传送目标指针,把指针内容装入DS.例: LDS SI,string ;把段地址:偏移地址存到DS:SI.LES 传送目标指针,把指针内容装入ES.例: LES DI,string ;把段地址:偏移地址存到ES:DI.LFS 传送目标指针,把指针内容装入FS.例: LFS DI,string ;把段地址:偏移地址存到FS:DI.LGS 传送目标指针,把指针内容装入GS.例: LGS DI,string ;把段地址:偏移地址存到GS:DI.LSS 传送目标指针,把指针内容装入SS.例: LSS DI,string ;把段地址:偏移地址存到SS:DI.4. 标志传送指令.LAHF 标志寄存器传送,把标志装入AH.SAHF 标志寄存器传送,把AH内容装入标志寄存器.PUSHF 标志入栈.POPF 标志出栈.PUSHD 32位标志入栈.POPD 32位标志出栈.二、算术运算指令ADD 加法.ADC 带进位加法.INC 加 1.AAA 加法的ASCII码调整.DAA 加法的十进制调整.SUB 减法.SBB 带借位减法.DEC 减 1.NEC 求反(以 0 减之).CMP 比较.(两操作数作减法,仅修改标志位,不回送结果).AAS 减法的ASCII码调整.DAS 减法的十进制调整.MUL 无符号乘法.IMUL 整数乘法.以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算), AAM 乘法的ASCII码调整.DIV 无符号除法.IDIV 整数除法.以上两条,结果回送:商回送AL,余数回送AH, (字节运算);或商回送AX,余数回送DX, (字运算).AAD 除法的ASCII码调整.CBW 字节转换为字. (把AL中字节的符号扩展到AH中去)CWD 字转换为双字. (把AX中的字的符号扩展到DX中去)CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去)CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去) 三、逻辑运算指令AND 与运算.OR 或运算.XOR 异或运算.NOT 取反.TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果).SHL 逻辑左移.SAL 算术左移.(=SHL)SHR 逻辑右移.SAR 算术右移.(=SHR)ROL 循环左移.ROR 循环右移.RCL 通过进位的循环左移.RCR 通过进位的循环右移.以上八种移位指令,其移位次数可达255次.移位一次时, 可直接用操作码. 如 SHL AX,1.移位>1次时, 则由寄存器CL给出移位次数.如MOV CL,04SHL AX,CL四、串指令DS:SI 源串段寄存器:源串变址.ES:DI 目标串段寄存器:目标串变址.CX 重复次数计数器.AL/AX 扫描值.D标志0表示重复操作中SI和DI应自动增量; 1表示应自动减量.Z标志用来控制扫描或比较操作的结束.MOVS 串传送.( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. ) CMPS 串比较.( CMPSB 比较字符. CMPSW 比较字. )SCAS 串扫描.把AL或AX的内容与目标串作比较,比较结果反映在标志位.LODS 装入串.把源串中的元素(字或字节)逐一装入AL或AX中.( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. ) STOS 保存串.是LODS的逆过程.REP 当CX/ECX>0时重复.REPE/REPZ 当ZF=1或比较结果相等,且CX/ECX>0时重复.REPNE/REPNZ 当ZF=0或比较结果不相等,且CX/ECX>0时重复.REPC 当CF=1且CX/ECX>0时重复.REPNC 当CF=0且CX/ECX>0时重复.五、程序转移指令1>无条件转移指令 (长转移)JMP 无条件转移指令CALL 过程调用RET/RETF过程返回.2>条件转移指令 (短转移,-128到+127的距离内)( 当且仅当(SF XOR OF)=1时,OP1<OP2 )JA/JNBE 不小于或不等于时转移.JAE/JNB 大于或等于转移.JB/JNAE 小于转移.JBE/JNA 小于或等于转移.以上四条,测试无符号整数运算的结果(标志C和Z).JG/JNLE 大于转移.JGE/JNL 大于或等于转移.JL/JNGE 小于转移.JLE/JNG 小于或等于转移.以上四条,测试带符号整数运算的结果(标志S,O和Z).JE/JZ 等于转移.JNE/JNZ 不等于时转移.JC 有进位时转移.JNC 无进位时转移.JNO 不溢出时转移.JNP/JPO 奇偶性为奇数时转移.JNS 符号位为 "0" 时转移.JO 溢出转移.JP/JPE 奇偶性为偶数时转移.JS 符号位为 "1" 时转移.3>循环控制指令(短转移)LOOP CX不为零时循环.LOOPE/LOOPZ CX不为零且标志Z=1时循环.LOOPNE/LOOPNZ CX不为零且标志Z=0时循环.JCXZ CX为零时转移.JECXZ ECX为零时转移.4>中断指令INT 中断指令INTO 溢出中断IRET 中断返回5>处理器控制指令HLT 处理器暂停, 直到出现中断或复位信号才继续.WAIT 当芯片引线TEST为高电平时使CPU进入等待状态.ESC 转换到外处理器.LOCK 封锁总线.NOP 空操作.STC 置进位标志位.CLC 清进位标志位.CMC 进位标志取反.STD 置方向标志位.CLD 清方向标志位.STI 置中断允许位.CLI 清中断允许位.六、伪指令DW 定义字(2字节).PROC 定义过程.ENDP 过程结束.SEGMENT 定义段.ASSUME 建立段寄存器寻址.ENDS 段结束.END 程序结束.OD软件使用入门级教程一、基本配置OllyDbg的运行只要解压到一个目录下,运行OllyDBG.exe 就可以了。
第一章基础知识一、机器语言:即机器指令(机器可以正确执行的命令)的集合。
二、汇编语言的产生:汇编指令是机器指令便于记忆的书写格式,即助记符。
(编译)三、汇编语言的组成:汇编指令(机器码的助记符)、伪指令(由编译器执行)、其他符号(由编译器识别)。
四、存储器:存放指令和数据的地方。
磁盘上的数据不读到内存中就无法被CPU使用。
五、指令和数据:都为二进制信息。
1KB=1024B。
六、存储单元:每个存储单元从0开始顺序编号。
七、CPU对存储器的读写:地址信息、控制信息、数据信息。
三者都属于电信号,需要靠导线传输。
总线为物理导线的集合,分为地址总线、数据总线、控制总线。
八、地址总线:CPU通过地址总线来指定存储单元,N根地址总线的宽度为N,最多可寻找2N个内存单元。
地址总线的宽度决定了CPU的寻址能力。
九、数据总线:数据总线的宽度决定了CPU和外界的数据传送速度。
十、控制总线:控制总线的宽度决定了CPU对外部器件的控制能力。
(低电平表示读取)。
十一、内存地址空间:宽度为10,可寻址的地址为1024个,即1024个内存地址空间。
十二、主板:主板上的器件通过总线(地址总线、数据总线、控制总线)相连。
十三、接口卡:CPU对外部设备不能直接控制,控制其工作的为扩展插槽上的接口卡。
十四、各类存储器芯片:随机存储器RAM/只读存储器ROM。
存储器物理上独立,但都和CPU总线连接,CPU由此控制读写。
逻辑存储器由若干物理存储器组成,十五、内存空间地址段:主随机存储器+显存地址空间+各个ROM的地址空间。
第二章寄存器(CPU工作原理)CPU的组成:运算器、控制器、寄存器,彼此之间靠内部总线相连。
8086CPU共有14个寄存器,所有寄存器都是16位的,可以存放2个字节。
一、通用寄存器:AX/BX/CX/DX,可分为2个独立的8位寄存器AH和AL(低8位)。
可存储16位数据,所能存储的最大值为216-1。
二、字在寄存器中的存储:用十六进制表示,存储在16位的寄存器中。
汇编语言总结汇编语言是一种底层的计算机语言,用于编写计算机的指令集。
它直接操作计算机的硬件资源,具有灵活性和高效性。
本文将对汇编语言进行总结,并介绍其基本概念、语法结构以及应用领域。
一、基本概念1. 汇编语言的定义:汇编语言是一种将符号指令翻译成机器码指令的低级语言。
2. 汇编器:汇编器是用于将汇编语言翻译成机器码的工具。
3. 汇编指令:汇编指令是汇编语言中的基本命令,用于操作计算机的寄存器、内存等资源。
4. 寄存器:寄存器是计算机中用来暂存数据的小容量存储器,是汇编语言中的重要概念。
二、语法结构1. 注释:在汇编语言中,使用分号(;)来表示注释,用于解释指令的作用或者提供相关信息。
2. 汇编指令:汇编指令由操作码和操作数构成,用于执行指定的计算和操作。
3. 伪指令:伪指令是指在汇编过程中使用的一些特殊命令,不会被汇编器转换为机器码。
4. 标号:标号用于标记程序中的位置,以供跳转、调用等指令使用。
三、应用领域1. 嵌入式系统:汇编语言在嵌入式系统开发中广泛应用,因为它可以直接操作硬件资源,提高系统的执行效率。
2. 驱动程序开发:操作系统的驱动程序通常是使用汇编语言编写的,因为它可以更直接地控制底层硬件。
3. 优化编程:对于某些对性能要求较高的应用,使用汇编语言可以对关键代码进行优化,提高程序的执行速度。
四、汇编语言的优缺点1. 优点:- 直接操作硬件资源,具有高效性和灵活性;- 可以对关键代码进行优化,提高程序的执行效率;- 学习汇编语言可以增加对计算机底层原理的理解。
2. 缺点:- 汇编语言的语法复杂,编写和调试相对困难;- 可移植性差,不同计算机体系结构可能需要编写不同的汇编代码;- 开发周期相对长,不适合开发大规模的应用程序。
综上所述,汇编语言是一种底层的计算机语言,用于编写计算机的指令集。
它具有灵活性和高效性,适用于嵌入式系统开发、驱动程序开发以及性能要求较高的应用。
然而,汇编语言的语法复杂,不易编写和调试,且可移植性较差。
汇编语言重点知识总结汇编语言是一种低级程序设计语言,它直接操作计算机硬件资源,具有较高的执行效率和灵活性。
本文将重点总结汇编语言的相关知识,涵盖指令集、寻址模式、数据传送和运算、控制流等方面。
一、指令集1. 数据传送指令:包括MOV、LEA等指令,用于在寄存器和内存之间传输数据。
2. 算术运算指令:包括ADD、SUB、MUL、DIV等指令,用于进行加减乘除等数值运算。
3. 逻辑运算指令:包括AND、OR、NOT等指令,用于进行逻辑与、逻辑或、逻辑非等操作。
4. 跳转指令:包括JMP、JZ、JE等指令,用于实现程序的跳转和条件判断。
5. 栈操作指令:包括PUSH、POP等指令,用于实现数据的入栈和出栈操作。
6. 串操作指令:包括MOVSB、CMPSB等指令,用于字符串的复制、比较等操作。
二、寻址模式1. 直接寻址:使用给定的地址访问内存中的数据,如MOV AX, [1234H]。
2. 寄存器间接寻址:使用寄存器中存储的地址访问内存中的数据,如MOV BX, [SI]。
3. 寄存器相对寻址:使用寄存器和偏移量的组合访问内存中的数据,如MOV CX, [BX+DI]。
4. 基址变址寻址:使用基址寄存器和变址寄存器的组合访问内存中的数据,如MOV AX, [BX+SI+10H]。
5. 相对基址变址寻址:使用基址寄存器、变址寄存器和偏移量的组合访问内存中的数据,如MOV AX, [BX+SI+10H+DI]。
三、数据传送和运算1. 数据传送:使用MOV指令将数据从一个位置传送到另一个位置,如MOV AX, BX。
2. 位操作:使用AND、OR、XOR等指令进行位与、位或、位异或等操作。
3. 算术运算:使用ADD、SUB、MUL、DIV等指令进行加减乘除等运算。
4. 位移操作:使用SHL、SHR、ROL、ROR等指令进行位左移、位右移、循环左移、循环右移等操作。
四、控制流1. 无条件跳转:使用JMP指令无条件跳转到指定的地址。
汇编语言重点知识总结(超全的哦~~)汇编速查手册汇编语言总结概要寄存器与存储器1. 寄存器功能. 寄存器的一般用途和专用用途. CS:IP 控制程序执行流程. SS:SP 提供堆栈栈顶单元地址. DS:BX(SI,DI) 提供数据段内单元地址. SS:BP 提供堆栈内单元地址. ES:BX(SI,DI) 提供附加段内单元地址. AX,CX,BX和CX寄存器多用于运算和暂存中间计算结果,但又专用于某些指令(查阅指令表)。
. PSW程序状态字寄存器只能通过专用指令(LAHF, SAHF)和堆栈(PUSHF,POPF)进行存取。
2. 存储器分段管理. 解决了16位寄存器构成20位地址的问题. 便于程序重定位. 20位物理地址=段地址 * 16 + 偏移地址. 程序分段组织: 一般由代码段,堆栈段,数据段和附加段组成,不设置堆栈段时则使用系统内部的堆栈。
3. 堆栈. 堆栈是一种先进后出的数据结构 , 数据的存取在栈顶进行 , 数据入栈使堆栈向地址减小的方向扩展。
. 堆栈常用于保存子程序调用和中断响应时的断点以及暂存数据或中间计算结果。
. 堆栈总是以字为单位存取指令系统与寻址方式1. 指令系统. 计算机提供给用户使用的机器指令集称为指令系统,大多数指令为双操作数指令。
执行指令后,一般源操作数不变,目的操作数被计算结果替代。
. 机器指令由CPU执行,完成某种运算或操作,8086/8088指令系统中的指令分为6类: 数据传送,算术运算,逻辑运算,串操作,控制转移和处理机控制。
2. 寻址方式. 寻址方式确定执行指令时获得操作数地址的方法. 分为与数据有关的寻址方式(7种)和与转移地址有关的寻址方式(4)种。
. 与数据有关的寻址方式的一般用途:(1) 立即数寻址方式--将常量赋给寄存器或存储单元(2) 直接寻址方式--存取单个变量(3) 寄存器寻址方式--访问寄存器的速度快于访问存储单元的速度(4) 寄存器间接寻址方式--访问数组元素(5) 变址寻址方式(6) 基址变址寻址方式(7) 相对基址变址寻址方式(5),(6),(7)都便于处理数组元素. 与数据有关的寻址方式中,提供地址的寄存器只能是BX,SI,DI或BP. 与转移地址有关的寻址方式的一般用途:(1) 段内直接寻址--段内直接转移或子程序调用(2) 段内间接寻址--段内间接转移或子程序调用(3) 段间直接寻址--段间直接转移或子程序调用(4) 段间间接寻址--段间间接转移或子程序调用汇编程序和汇编语言1. 汇编程序. 汇编程序是将汇编语言源程序翻译成二进制代码程序的语言处理程序,翻译的过程称为汇编。
王爽汇编知识点总结一、汇编语言概述1.概念及特点汇编语言是一种低级语言,它直接使用计算机硬件的指令集进行编程。
相对于高级语言,汇编语言更加接近计算机的硬件,编写的程序可以更加高效地执行。
汇编语言的特点包括:直接面向硬件、指令集丰富、程序执行效率高等。
2.编程原理汇编语言的编程原理是通过编写符合计算机指令集的程序代码来实现对计算机硬件的控制。
汇编语言程序需要通过汇编器将其翻译成机器码,然后才能在计算机上执行。
3.应用领域汇编语言在操作系统、驱动程序、嵌入式开发等方面有着广泛的应用。
在一些对程序性能要求很高、对硬件操作要求很精细的场景中,汇编语言仍然是一种非常重要的开发语言。
二、汇编语言基础知识1.寄存器在汇编语言中,寄存器是一种用于临时存储数据的设备。
不同的架构下寄存器的数量和功能都会有所不同,但一般来说,汇编语言中的寄存器包括通用寄存器、段寄存器、标志寄存器等。
2.指令汇编语言的指令是直接面向硬件的控制命令。
不同的指令可以实现对寄存器、内存、I/O设备等的读写操作、逻辑运算、算术运算等。
3.内存管理在汇编语言中,程序需要通过对内存的读写来实现对数据的操作。
因此,对内存的管理和操作是汇编语言编程中的一个重要知识点。
4.程序结构汇编语言程序的结构一般包括数据段、代码段、栈段等部分。
程序的结构对于程序的可读性和执行效率都有着很大的影响。
5.汇编指令集不同的CPU架构有不同的指令集,汇编语言程序需要根据不同的指令集进行编写。
常见的指令集包括x86指令集、ARM指令集等。
三、汇编语言编程技巧1.寄存器的使用在汇编语言编程中,合理地使用寄存器可以减少数据在内存和寄存器之间的频繁传输,提高程序的执行效率。
2.指令的优化对指令的选择和使用可以影响程序的执行效率,因此在编写汇编语言程序时需要选取适当的指令以实现对数据的操作。
3.内存管理合理地管理内存可以避免内存泄露和内存碎片的问题,提高程序的可靠性和执行效率。
4.程序结构的优化合理地设计程序的结构可以提高程序的可读性和维护性,同时也可以提高程序的执行效率。
汇编语言精简版版权归属GuYue.Wang一、入门基础1.汇编基本格式2.内存管理:小端存储。
3.寄存器16位CPU通用寄存器共8个:AX,BX,CX,DX,BP,SP,SI,DI,它们都可以作为普通的数据寄存器来使用,也有一些特殊的功能,如下:①数据寄存器AX:BX:存放偏移地址CX: 循环次数(loop)DX:②指针寄存器SI:存放偏移地址,指向源操作数或作为变址寄存器,参与基址、变址寻址DI:存放偏移地址,指向目的操作数或作为变址寄存器,参与基址、变址寻址SP:堆栈指针,存放偏移地址,与SS结合使用BP:基址寄存器,存放偏移地址,与DS结合使用IP: 指令指针③段寄存器CS:代码段DS:数据段SS:堆栈段ES:4.标志位①ZF(零标志位):结果为0,则ZF=1.②PF(奇偶标志位):结果所有bit位1的个数为偶数,PF=1③SF(符号标志位):有符号数运算,结果为负,SF=1④OF(溢出标志位):有符号数运算,发生溢出,OF=1⑤CF(进位标志位):无符号数运算,记录了最高有效位向更高位的进位或借位5.定义数据二、指令集1.数据传送指令1> MOV <目的操作数> , <源操作数>①两个操作数位数一致②不能在两个存储单元之中进行数据直接传送③不能在两个段寄存器之间进行数据直接传送④imm不能直接送入段寄存器⑤目的操作数不能是CS,IP2> XCHG <目的操作数> , <源操作数> :交换两个操作数的内容xchg reg , regxchg reg , memxchg mem , reg3>LEA <OP2> , <OP1> :将OP1的地址偏移量传送给OP2①源操作数必须是内存操作数②目的操作数必须是16位的通用寄存器4>PUSH <OP> , POP <OP>:堆栈①SS:栈段寄存器SP:栈顶指针(使用时应当先初始化)②一次压入或弹出一个字,栈顶最大变化范围0~FFFFH③执行PUSH、POP时,SP指针默认移动④栈空:SP指向栈空间最高地址单元的下一个单元⑤OP:段寄存器(除CS),16位通用寄存器,内存的16位字2.算数运算指令1> ADD <OP1> , <OP2> | SUB <目的> , <源>①目的=目的+/-源②两操作数不能同时为mem(注:ADD 、SUB影响标志位:CF、ZF、SF、OF、AF、PF)2> INC <reg/mem>:自增1 | DEC <reg/mem>:自减1(注:INC、DEC适用于无符号运算,不影响进位标志CF)3> NEG <reg/mem> :求负(求补),按位取反加1①影响标志位:CF、ZF、SF、OF、AF、PF4> CMP <> , <>:目的操作数—源操作数,不回送结果,只影响标志位①根据相减结果修改OF、SF、ZF、CF、AF、PF②无符号数的比较:③有符号数的比较:5> MUL <乘数>(无符号乘法)| IMUL <乘数>(有符号乘法)①乘数不能位imm②IMUL指令的执行结果的高半部分不是低半部分的符号扩展,则设置CF、OF6> DIV <除数>(无符号除法)| IDIV <除数>(有符号除法)①除数不能位imm②IDIV:余数符号与被除数相同3.逻辑运算与移位指令1>AND <目的> , <源>:按位相与,将结果保存在目的操作数中①总是清除OF 和CF,根据结果修改SF、ZF、PF②对特定位清‘0’同时保留其他位③应用:字符大小写转化2> OR <目的> , <源>:按位相或,将结果保存在目的操作数中①使CF=0、OF=0,根据结果修改SF、ZF、PF②对特定位置‘1’③将数字转化位对应的ASCII码3> NOT <reg/mem>:按位取反,不影响任何标志位4> XOR <目的> , <源>:按位异或,将结果保存在目的操作数中①对某些为取反,且不影响其它位,与‘0’异或保持不变;与‘1’异或取反②对寄存器清0,或判断两个值是否相等③交换两个数,不使用中间变量④CF=0,OF=0,PF、SF、ZF变5> TEST <OP> , <imm>:按位相与,不回送结果①清除OF、CF;修改SF、ZF、PF②测试某些位是‘0’或‘1’6> SHL、SHR①格式:SHL mem/reg , 1SHL mem/reg , CL(移动次数>1放入CL)②③相当于乘除法4.程序控制指令1> JMP :无条件转移指令2>LOOP:循环指令,循环次数存于cx中,执行loop时首先CX=CX-1,然后判断CX=0?,是则跳转3>条件跳转指令①基于特定的标志值②根据操作数之间是否相等,或根据(E)CX的值与CMP <left> , <right>指令结合使用③基于无符号整数比较结果的跳转指令④基于有符号整数比较结果的跳转指令5.输入输出指令(接口与CPU之间的操作)1> IN AL|AX , <接口地址> :从接口到CPU的输入操作2> OUT <接口地址> , AL|AX :从CPU到接口的输出操作①CPU只能用AL或AX接收或发送数据②直接寻址(接口地址用一个字节表示00~FFH)IN AL, 35HOUT 44H , AX③寄存器间接寻址(接口地址由DX内容决定0000~FFFFH)MOV DX,03F8HIN AL ,DX三、补充1.CLC :使CF=02.ADC <op1> , <op2> :op1=op1+op2+CF。
汇编期末知识点总结一、计算机体系结构1. 计算机的组成部分:中央处理器、主存储器、输入输出系统2. 计算机的主要功能:数据处理、数据存储和数据传输3. 计算机体系结构的三个基本要素:数据、指令、控制。
4. 计算机的层次结构:硬件层次、机器语言层次、系统层次、程序设计语言层次和应用软件层次。
二、汇编语言概述1. 汇编语言的定义和特点2. 汇编语言的分类和发展历程3. 汇编语言的应用领域三、汇编语言的指令系统1. 数据传送指令:MOV指令、LEA指令、LDS指令、LES指令2. 算术运算指令:ADD指令、SUB指令、INC指令、DEC指令、NEG指令3. 逻辑运算指令:AND指令、OR指令、XOR指令、NOT指令4. 移位指令:SAL指令、SHR指令、SAR指令、ROL指令、ROR指令5. 控制指令:JMP指令、JC指令、JNC指令、JO指令、JNO指令、JZ指令、JNZ指令、CMP指令、LOOP指令、CALL指令、RET指令四、寄存器和内存1. 通用寄存器:AX、BX、CX、DX、SP、BP、SI、DI2. 段寄存器:CS、DS、SS、ES3. 操作寄存器:IP、FLAGS4. 内存访问指令:MOV指令、XCHG指令5. 标志寄存器:OF、DF、IF、TF、SF、ZF、AF、PF、CF五、地址和位移1. 设计位移的基本原则和方法2. 直接寻址、寄存器间接寻址、直接寻址、相对寻址、基址变址寻址、变址寻址、相对基址变址寻址六、程序设计与调试1. 程序的段定义、区定义、符号定义2. 程序的生成与调试3. 目标程序的连接和装入4. 调试工具的使用七、汇编语言与C语言的结合1. 汇编语言和C语言的特点2. 汇编语言和C语言的调用关系3. 汇编语言和C语言的相互调用方法4. 汇编语言和C语言的优化方法八、嵌入式系统与汇编语言1. 嵌入式系统的定义和特点2. 嵌入式系统的应用领域3. 嵌入式系统中的汇编语言特点4. 嵌入式系统中的汇编语言编程方法九、汇编语言的扩展1. Intel 8086的扩展指令集2. 增强指令集3. 浮点运算指令集4. SIMD指令集以上是汇编期末考试的知识点总结,总字数超过了6000字。
汇编程序设计语言知识点汇编程序设计语言是一种低级别的程序设计语言,用于编写计算机的底层代码。
它与高级语言相比,更加接近机器的指令集架构,可以直接操作计算机的硬件和寄存器。
在本文中,将介绍汇编程序设计语言的一些重要知识点。
一、汇编语言基础知识1. 汇编语言的发展历程:从机器语言到汇编语言;2. 汇编语言的组成部分:指令、操作数和寄存器;3. 汇编语言的语法规则:标号、指令、操作数和注释的格式;4. 汇编程序的编写流程:编辑、汇编、链接和运行。
二、汇编语言的数据类型1. 二进制数和十六进制数的表示方法;2. 常用的数据类型:字节、字和双字;3. 数据的存储方式:大端字节序和小端字节序;4. 数据的表示范围和溢出问题。
三、汇编语言的指令集1. 数据传输指令:MOV、XCHG、PUSH和POP等;2. 算术运算指令:ADD、SUB、INC和DEC等;3. 逻辑运算指令:AND、OR、XOR和NOT等;4. 条件转移指令:JMP、JZ、JE和JG等;5. 循环控制指令:LOOP、LOOPZ和LOOPNZ等;6. 系统调用指令:INT、CALL和RET等。
四、汇编语言的控制结构1. 顺序结构:代码按顺序执行;2. 条件结构:根据条件选择执行路径;3. 循环结构:根据条件循环执行代码块;4. 无限循环:使用JMP指令实现无限循环。
五、汇编语言的调试和优化1. 调试工具:调试器、寄存器监视、内存监视和断点设置;2. 常见的调试问题和解决方法;3. 优化技巧:减少指令数量、减少内存访问和提前计算等。
六、汇编语言的应用领域1. 操作系统开发:汇编语言作为操作系统内核的编程语言;2. 嵌入式系统开发:汇编语言用于编写驱动程序和底层代码;3. 游戏开发和图形编程:汇编语言用于优化性能和实现特殊效果;4. 加密和反汇编:汇编语言用于加密算法和反编译程序。
结语本文介绍了汇编程序设计语言的基础知识、数据类型、指令集、控制结构、调试和优化等重要知识点,以及其在不同领域的应用。
汇编知识点总结一、基本概念1. 汇编语言是什么?汇编语言是一种直接操作计算机硬件的语言,它是计算机程序设计的一种低级语言。
程序员可以使用汇编语言编写程序,然后由汇编器将汇编语言转换成机器语言,最终由计算机的CPU执行。
2. 汇编语言的特点汇编语言的特点包括可读性强、执行速度快、对计算机硬件直接控制等。
由于其语法规则严格,并且与特定架构相关,因此在不同的硬件平台上需要使用不同的汇编语言。
3. 汇编语言的优缺点汇编语言的优点包括执行速度快、对硬件控制能力强、代码维护相对简单等。
而其缺点包括语法复杂、编写难度大、可移植性差等。
二、指令集1. 汇编语言指令的分类汇编语言的指令可以分为数据传送指令、运算指令、逻辑指令、转移指令、比较指令等。
这些指令可以用于实现各种计算、判断、控制等功能。
2. 指令的格式汇编语言指令通常由操作码、寄存器或内存地址和操作数等部分组成。
操作码用来表示具体的操作,寄存器或内存地址用来表示操作的对象,操作数则是操作的参数。
3. 指令的执行过程汇编语言指令在执行时,需要经历取指令、译码、执行和访存等阶段。
在不同的硬件架构上,这些阶段的具体实现方式可能有所不同。
三、寻址方式1. 直接寻址直接寻址是指指令中的地址字段直接给出操作数的地址。
在程序执行时,CPU会直接访问指定地址的数据。
2. 间接寻址间接寻址是指指令中给出的地址字段并不是操作数的真实地址,而是另一个地址的地址。
CPU在执行指令时,需要先访问指定地址获取实际操作数的地址,然后再进行操作。
3. 寄存器寻址寄存器寻址是指指令中给出的地址字段是一个寄存器的标识,CPU在执行指令时,直接从寄存器中获取操作数的地址。
4. 寻址方式的选择不同的寻址方式在不同的情况下有不同的优势。
程序员需要根据具体的应用场景,选择合适的寻址方式来编写程序。
四、程序结构1. 汇编语言程序的基本结构汇编语言程序通常由数据段、代码段和堆栈段组成。
数据段用来存放程序中使用的数据,代码段用来存放程序的指令,堆栈段用来存放函数调用的参数和局部变量等。
第一章基础知识:一.机器码:1.计算机只认识0,1两种状态。
而机器码只能由0,1组成。
故机器码相当难认,故产生了汇编语言。
2.其中汇编由三类指令形成:汇编指令(有机器码对应),伪指令,其他符号(编译的时候有用)。
每一总CPU都有自己的指令集;注意学习的侧重点。
二.存储器:1.存储单元中数据和指令没任何差别。
2.存储单元:Eg:128个储存单元(0~127)128byte。
线: 1.地址总线:寻址用,参数(宽度)为N根,则可以寻到2^N个内存单元。
据总线:传送数据用,参数为N根,一次可以传送N/8个存储单元。
3.控制总线:cpu对元器件的控制能力。
越多控制力越强。
四.内存地址空间:1.由地址总线决定大小。
2.主板:cpu和核心器件(或接口卡)用地址总线,数据总线,控制总线连接起来。
3.接口卡:由于cpu不能直接控制外设,需通过接口卡间接控制。
4.各类存储器芯片:RAM,BIOS(主板,各芯片)的ROM,接卡槽的RAMCPU在操控他们的时候,把他们都当作内存来对待,把他们总的看作一个由若干个存储单元组成的逻辑存储器,即我们所说的内存地址空间。
自己的一点理解:CPU对内存的操作是一样的,但是在cpu,内存,芯片之间的硬件本身所牵扯的线是不同的。
所以一些地址的功能是对应一些芯片的。
第二章寄存器引入:CPU中含有运算器,寄存器,控制器(由内部总线连接)。
而寄存器是可以用来指令读写的部件。
8086有14个寄存器(都是16位,2个存储空间)。
一.通用寄存器(ax,bx,cx,dx),16位,可以分为高低位注意1.范围:16位的2^16-1,8位的2^8-12.进行数据传送或运算时要注意位数对应,否则会报错二.字:1. 1个字==2个字节。
2. 在寄存器中的存储:0x高位字节低位字节;单元认定的是低单元数制,16进制h,2进制b三.20根数据总线的16位cpu--8086给出物理地址的方法:根数据总线(稍外):寻址能力为1M位的cpu(内部):一次能处理的数据位2^16。
3.方法:物理地址=段地址*16+偏移地址 ;*16==左移四位四.段: 1.段地址为16的倍数2.一个段的长度最长为64K;因为偏移地址为16位,寻址能力为64K五.回到寄存器--段寄存器(cs,ds,ss,es)(代码段寄存器),ip(指针指令寄存器);cs为存放指令的段地址中cs,p的运作过程:先将两个16位的数通过地址加法器变成一个20位的地址,通过输入输出控制电路,寻址并返回给cpu指令。
ip 自动增加。
执行指令。
next。
3.修改cs;ip:mov不行,jmp行。
形为:jmp cs:ip 或者jmp ip(通用寄存器);转移指令修改ip六.代码段:1.要小于64K2.存放后用cs,ip指向第一条指令的首地址。
第三章还是寄存器一.内存中字的存储:因为字(2个存储单位)要存在两个字节当中。
运用mov 等指令时,指向的是低字节。
二.DS和[address]1.[]中放的是偏移地址,默认段地址是ds。
2.段地址的移入:要通过通用寄存器。
三.mov add sub(减)指令除了处理[]内存可以位数可以不对应,其他都要。
四.数据段五.栈1.概念:FILO,以字为单位。
2.栈顶的单元为低,栈底的单元较高。
(段寄存器):sp(寄存器):任意时刻指向栈顶。
进栈:sp-2 mov;pop出栈:,mov sp+2 5.栈的最大容量为64K,超出覆盖注意初始化的时候栈顶的指向是栈底+1。
入出栈最易出错第四章第一个程序一.源程序的架构:开头:assume(假设)cs: xxx中间:xxx segment(段)…………程序返回:mov ax,4c00hint 21hxxx ends结束:end二.从码字到.exew下载masm,运行cmd,找到目录,masm 文件名,link 文件名,文件名。
第五章[bx]和loop一.[bx]1.Q:为什么是bx,ax,cx,dx行不行A:不行用debug 的a指令试试看。
(参考实验一)可以理解为bx特有的功能,和后面与loop配套使用的cx 一样。
二.loop指令1.与ax对应使用,当cx不为0时,一直循环。
在loop指令前,一定要把循环次数mov进cx。
在循环里面,执行完会sub cx,1,再判断ax是否为0,执行跳出或者循环。
三.loop和[bx]联合使用1.通过改变bx值可以操作连续的一段空间。
第六章包含多个段的函数引入:使用一:在代码段中使用数据1.先将数据储存到一段连续的内存空间中(由系统分配),用loop 和[]来读写这些数据。
:跳过数据存储的地方,指令开始的地方。
使用二:在代码段中使用1.先dw要用的空间,栈空是sp 为dw的个数*2-2;正文:将数据、代码、栈放入不同的段中assume cs:code,ds:data,ss:stack ;先联系起来data segmentdwdata endstack segmentdwstack endcode segmentmov ax,stackmov ss,stackmov sp,ffh ;栈地址放到栈段mov ax,datamov ds,ax;数据地址放到数据段;核心程序;核心程序code endend第七章更加灵活的定位内存地址的方法引入:和or:操作对象是位(bit)。
2.关于ASCII码:占一个字节(byte)3.以字符给出数据‘xxx' 每一个x占一个字节。
在程序时可直接看成一个或一排连续的ASCII码。
4.综合使用:大小写互换。
正文:1.[bx+idata]:偏移地址为(bx)+idata ;疑问:为什么不是((bx)+idata )自己理解:可能是bx是一个寄存器,其中的值用()表示,;这样已经完成了寄存器到数值的转换了[bx]:偏移地址为(bx)用idata[bx]进行数值的应用和di:si和di是和bx相似的8位寄存器。
;bx被占领使用时应该考虑到这个。
3.[bx+si+idata]各种组合都是行的第八章数据处理的两个基本问题一.处理的数据在什么地方机器指令处理的数据在什么地方内存,CPU,指令缓冲器汇编语言中数据位置的表达。
内存([]),CPU(ax),指令缓冲器(1)寻址:直接寻址;EA=idata寄存器间接寻址 ;EA=(ax)寄存器相对寻址 ;EA=(ax)+idata基址变址寻址;EA=(ax)+(si)相对基址变址寻址;EA=(ax)+(si)+idata;原来di 对应的是ds;si 对应的是ss。
二.指令要处理的数据有多长ax之类的两个字节,al之类的一个字节在没有汇编的情况下,用操作符X ptr 指明内存单元中的长度,X 在汇编中可以为byte或word。
三.div指令dd伪指令dup第九章转移指令的原理一.操作符offset:编译时标号处取偏移地址用二.jmp指令1.根据位移进行转移的jmp指令jmp short 标号;功能是IP=IP+8位位移2.转移的目的地址在指令中的jmp指令jmp far 标号;可以同时修改CS,IP3.转移地址在寄存器的jmp指令:jmp 16位reg 功能:(ip)=(reg)4.转移地址在内存中的jmp指令:jmp word ptr 内存单元地址(段内转移);(ip)=(内存单元地址)jmp dword ptr 内存单元地址(段间转移);(ip)=(内存单元地址)(cs)=(内存单元地址+2)三.jcxz 指令当cx不为0时,跳转到jcxz 标号位置。
if((cx)==0)jmp short 标号第十章CALL和RET指令一.ret(近转移):pop ipretf(远转移):pop ippop cs使用前要先进栈。
retff的先push cs再push ip二.call指令ip进栈保存,改动ip跳转,执行;注意进栈时地ip是call之后的一条标号是相当于进行:push ip ;根据位移(段内转移)jmp near ptr 标号far ptr 标号相当于进行:push cs ;段间转移push ipjmp far ptr 标号16位reg 相当于进行:push ipjmp regword ptr 内存单元地址call dword ptr 内存单元地址三.call和ret配合使用call 是进栈调用后用ret返回四.mul指令mov 8位reg或者内存字节单元中;另一个乘数默认放在al,其中结果放在ax中。
mov 16位reg或者内存字单元中;另一个乘数默认放在ax,其中结果高位在dx,低位在ax五.模块化设计程序1.参数和结果的传递(通过寄存器)2.多个数据的传递(在字符串中在内存中的首地址放到寄存器)3.寄存器冲突问题:在子函数中进去前把寄存器进栈,返回主函数时在出栈(注意顺序)第十一章标志寄存器标志寄存器的作用:1.用来储存相关的某些指令的执行结果;2.用来为CPU执行相关指令提供行为依据3.用来控制CPU的相关工作模式其他寄存器合起来存放数据的,而标志寄存器是按位起作用的。
一.ZF标志Z for 零;结果不为0 他为0二.PF标志 P for 奇偶;1的个数为奇他为0三.SF标志 S for 负;结果为非负他为0四.CF标志 C for 无符号溢出;没溢出他为0五.OF标志 O for out;六.adc指令(带进位加法指令)adc 操作对象1,操作对象2功能:操作对象1=操作对象1+操作对象2+CF;比add多加了个CF作用:七.sbb指令:(带借位减法指令)sbb 操作对象1,操作对象2功能:操作对象1=操作对象1-操作对象2-CF;比sub多加了个CF八.cmp指令(对上述各种标志位的应用):cmp 操作对象1,操作对象2功能:相当于sub指令,只是不保存运算完之后的结果,只是影响标志寄存器的各位()九.检测比较结果的条件转移指令jcxz转移是修改IP条件是满足一定条件才执行转移指令检测是什么呢第十二章内中段一.内中断的产生中断类型码为一个字节,可以表示256种中断信息的来源。
中断处理程序。
;cpu的设计者必须在中断信息和其处理程序的入口地址之间建立某种联系。
中断向量表cpu用8位的中断类型码通过中断向量表找到相应的中断处理函数的入口。
中断向量表是存放着中断处理程序入口地址的列表。
一个表项存放一个中断向量,也就是一个中断处理函数的入口地址,所以一个表项占两个字节。
高字节存放段地址,低字节存放偏移地址。
二.中断过程1.取得中断类型码N=0 IF=0CSIP6.(IP)=(4*N),(CS)=(4*N)+2三.中断处理程序和iret1.保存用到的寄存器2.处理程序3.恢复用到的寄存器4.用iret指令返回四.除法错误中断(o号中断)的处理;当除法溢出的时候,产生中断信息编写中断处理程序d0可以将do0传送到内存0000:0200(之后的256字节为空)将do0的入口地址0000:0200存储在中断向量表0号中五.安装中断被执行的过程:先将中段处理程序加载到内存当中,然后再复制到内存单元为0:200的地址当中,最后最在中断向量表0号中填入do0的入口中地址0:200具体编程:1.设置ds,si指向源地址:mov ax,csmov ds,axmov si,offset do02.设置es,di指向目的地址:mov ax,0mov es,axmov di,200h3.设置cx为传输长度:mov cx,offset do0end-offset do04.设置传输方为正:cld5.确定信息:rep movsb如果中断中有数据要处理的话,可以存放到do0函数中,用jmp跳转到do0start,数据在jmp之后的内存位置中,确保不被用到。