汇编语言知识大全
汇编语言考点总结
汇编语言考点总结汇编语言是一种低级的计算机编程语言,它直接操作计算机的底层硬件。
在计算机科学与技术领域,学习和掌握汇编语言是非常重要的一项技能。
本文将对汇编语言的主要考点进行总结,以帮助读者更好地理解和应用这门编程语言。
一、汇编语言的基本概念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位的寄存器中。
汇编语言基础知识 课件
➢十字节 由10个字节组成一个十字节类型,它总共有80个二进制位。在汇
编语言中很少使用该数据类型。
➢字符串 字符串是由若干个字节组成的,字节数不定,通常每个字节存储一
个字符。该数据形式是汇编语言程序中经常使用的一种数据形式。 汇编语言中没有C语言中的规定:以ASCII码0为字符串的结束符。
②已知带符号数在计算机内表示,求出其真值 (注意字长多少位)
3 .BCD码
把十进制数的每个数位用4位二进制数表示,又称 BCD码(并非数值相等)
10#
2# , 2#
10# 要求数值相等!
4.非数值数据表示
(2)常用字(符1的)A字SCII表符示 数据表示——字符用ASCII码表示
只用只用2进制0和1来表示指令,计算机能直接接收并执行的语言。 [x]反码 数符数字化,当是正数时,[x]反与[x]原相同
字符数据表示:每个字符用一个字节,用ASCII码 表示
(3)汉字编码——基本形式: 每一个汉字2个字节
5. 基本数据类型
➢字节 一个字节有8位二进制组成,其最高位是第7位,
最低位是第0位。 通常情况下,存储器按字节编址,读写存储器的
最小信息单位就是字节。
➢字 由2个字节组成一个字,其最高位是第15位,最
(1)字符数据表示——字符用ASCII码表示 用2个字(4个字节)来组成一个双字,其高16位称为高字,低16位称为低字。
(3)编写程序的复杂性: 若是正数, [x]补码[x]原码表示形式相同
(2) 所生成的机器语言程序执行效率高。
基面础向知 机识器,必面须了向解硬机件特器性,,执行汇细节编; 指令与机器指令基本保持1 :1关系, 编程时要了解计算机硬件工作原理与特性,资源限制, 把十进制数的每个数位用4位二进制数表示,又称BCD码(并非数值相等)
集合知识点总结[汇编]
集合知识点总结[汇编]一、汇编语言基础1、汇编语言是一种低级的机器语言,它是由机器指令和操作数构成的。
汇编语言帮助计算机硬件完成如输入/输出操作和内存管理等操作;2、汇编语言与高级语言的最大区别是,汇编语言的执行效率更高,但是在程序的开发上需要更多的努力,需要使用许多汇编指令来实现;3、汇编语言是由一系列指令构成的,指令可以被分为四种:控制指令、储存器操作指令、数据传输指令、计算指令等;4、汇编语言有许多共同的特点,如易于学习,编写简单,可以轻松实现多种操作等;5、汇编语言中有许多指令,如:MOV指令用于对寄存器的操作,ADD指令用于实现二进制数的加法,CMP指令用于实现二进制数的比较等;二、汇编语言的数据类型1、汇编语言的数据类型有无符号数据、有符号数据、比特(bit)、字节(byte)、字(word)、双字(double word)、四字(quad word)等;2、无符号数据是指没有正负号,即汇编语言中只用二进制;3、有符号数据是指含有正负号;4、比特是指由0或1组成的一个二进制数据,也就是最小的数据单位;5、字节是汇编中的一个基本数据单位,由8个比特组成;6、字是汇编中的一个基本数据单位,由16个比特组成;7、双字是汇编中的一个基本数据单位,由32个比特组成;4、四字是汇编中的一个基本数据单位,由64个比特组成。
三、汇编语言指令1、单操作数指令:单操作数指令是指汇编语言中只有一个操作数的指令,如INC、DEC、PUSH、POP等;2、双操作数指令:双操作数指令是指汇编语言中有两个操作数的指令,如MOV、ADD、SUB等;3、控制指令:控制指令是指能实现程序的控制、跳转和循环的指令,如JMP、LOOP、JB、JZ等;4、汇编关键字:汇编关键字是与汇编中的指令和数据有关的一些字,如DB、DW、DD 等;5、立即数指令:立即数指令是指指令的操作数是一个数值而不是地址的指令,如MOV AL,78H等。
汇编语言重点知识总结
汇编语言重点知识总结汇编语言是一种低级程序设计语言,它直接操作计算机硬件资源,具有较高的执行效率和灵活性。
本文将重点总结汇编语言的相关知识,涵盖指令集、寻址模式、数据传送和运算、控制流等方面。
一、指令集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指令无条件跳转到指定的地址。
汇编语言基础知识.
4.汇编语言程序设计的意义
学习汇编语言的意义: 1)与硬件密切相关,是学习硬件类课程的先行课 和基础课。 2)有利于理解计算机的工作原理。 3)可直接而有效地控制硬件。 4)执行效率高,占用空间小。 5)特殊应用只能使用汇编语言,如加密解密等。 应该指出的是:在计算机速度大大提高和存储器容 量大大增加的今天,高级语言的使用更为广泛和普遍 (特别是编写大型程序)。
×16-1+11 ×16-2 引入十六进制数的目的是为了描述二进制数。
数的书写方法:
1)二进制数尾部加B(b)。 2)十六进制数尾部加H(h);如记数符号a,b,c, d,e,f打头,头部应加0,如0A8F5H;记数符号 a,b,c,d,e,f 不区别大小写,与ABCDEF等效。 3)十进制数尾部加D(d),但通常可以省略。
二进制的数符集中有两个符号:0和1;
八进制的数符集中有8个符号:0,1,2,3,4,5,6,7;
十 进 制 的 数 符 集 中 有 10 个 符 号 : 0,1,2,3,4,5,6, 7,8,9;
十 六 进 制 的 数 符 集 中 有 16 个 符 号 : 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F。
★集成开发环境:开发工具包括文本编辑、翻译程序、 调试程序、连接程序等,在DOS时代,其各自是独立 的;现在将其集成为一个软件,即为“集成开发环 境”。
返回1.1
1.1.3计算机的程序设计语言
低级语言 程序设计语言
1.机器语言 2.汇编语言
3.高级语言 C/C++、JAVA、 DELPHI……
1.机器语言
负数原码:符号位为1,数值位照抄。 例:X=+25=+00011001B [X]原=00011001B
汇编语言重点知识总结(超全的哦~~)
汇编语言重点知识总结(超全的哦~~)汇编速查手册汇编语言总结概要寄存器与存储器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.程序结构的优化合理地设计程序的结构可以提高程序的可读性和维护性,同时也可以提高程序的执行效率。
(完整word版)汇编语言知识点总结(word文档良心出品)
汇编语言精简版版权归属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。
汇编语言知识总结
第一章绪论一、计算机的定义A computer is a device that accepts input processes data,stores data and produces output all according to a series of stored instructions.①Computer input is whatever is typed,submitted or transmitted to a computer system.②In the context computing data refers to symbols that represent facts,objects and puters manipulate data in many ways and this manipulation is called processing.③ Memory is a area of computer that temporarily holds data waiting to be processed,stored or output.二、计算机五大部件运算器、控制器、存储器、输入设备、输出设备。
三、8086寄存器8086中程序可访问的寄存器共有14个,按功能可分为通用寄存器组,段寄存器组和专用寄存器组。
①通用寄存器组:AX,BX,CX,DX,SP,BP,SI,DI②段寄存器:CS,DS,SS,ES③专用寄存器组:其包括指令指针IP和标志寄存器FR。
FR有:OF,DF,IF,SF,ZF,AF,PF,CF (注:①②③详见P12-13,P15)四、微处理器如何获取指令?Where does the microprocessor get it’s instructions ? The simple answer is that a microprocessor executes(执行) instructions provided by a computer program . However,a microprocessor can’t follow just any instructions . A program that contains an instruction to “self destruct(自毁)” won’t have much effect because a microprocessor can perform only a limited list of instructions “self destruct”isn’t one of them .The list of instructions that a microprocessor can perform is called it’s instruction set. These instructions are hard-wired(硬线连接) into the processor’s circuitry(电路、电路系统) and include basic arithmetic(算法) and logic operations. Fetching data and clearing registers.A computer can perform very complex tasks,but it does so by performing a combination of simple tasks from it’s instruction set .How does a microprocessor work? Inside the chip/carrier , a microprocessor is a very complex integrated circuit , containing as many as 300 million miniaturized electronic components . The miniaturized circuitry in a microprocessor is grouped into important functional areas ,such as the ALU and the control unit.The ALU(arithmetic logic unit) performs arithmetic operations , such as addition and subtraction . It also performs logic operations,such as comparing two numbers to see if they are the same . The ALU uses registers to hold data that is being processed , just as you use a mixing bowl to hold the ingredients for a batch of brownies . The microprocessor’s control unit fetches each instruction , just as you get each ingredient out of a cupboard or the refrigerator .偶地址开始存放数据(即:首地址一般为偶数)在计算机内一个字节给一个地址,高地址存放高字节数据,低地址存放低字节数据五、存储器地址的分段(必考题且有可能要求画存储图)实模式下允许的最大寻址空间为1MB.物理地址=段地址*16D+偏移地址(详见P16)六、计算机的性能指标评价计算机性能的几个指标:运算速度,机器字长,内存储器的容量,外存储器的容量(注:详见P24-25)第四章指令系统和寻址方式一、共性:Mov AX,BXMov AX BX (错误的,缺少“,”)Mov AH,ALMov BX(16位),AL(8位)(错误的,不满足数据的一致性)二、汇编语言的特点:1. 面向机器的低级语言,通常是为特定的计算机或计算机系列专门设计的2. 保持了机器语言的优点,具有直接和简捷的特点。
汇编语言知识点
第一章十进制与二进制之间的转换(P2)降幂法除法十进制与六进制之间的转换(P5)降幂法除法补码表示:正数:采用符号—绝对值法负数:先写出对应的正数的补码表示,然后再将其按位数求反,最后末尾加1,就可以得到负数的补码表示补吗运算:二进制数按位求反后在末尾加1第二章一、存储容量1K = 1024 =210 (Kilo)1M =1024K = 220 (Mega)1G = 1024M = 230 (Giga)1个二进制位:bit (比特)8个二进制位:Byte(字节)1Byte = 8bit2个字节:1 Word (字) 1Word = 2Byte = 16bit二、存储单元地址和内容1.存储器以字节(8 bit)为编程单位2.每个字节单元都有唯一的地址编码3.地址用无符号整数来表示(编程用十六进制表示)4.一个字要占用相继的两个字节5.低位字节存入低地址,高位字节存入高地址6.字单元地址用它的低地址来表示7.机器以偶地址访问(读/ 写)存储器三、物理地址= 16 段地址+ 偏移地址四、存储器的分段:20 根地址线:地址范围00000H ~FFFFFH (1MB)机器字长16位:仅能表示地址范围0000H ~ FFFFH (64KB)小段:每16个字节为一小段,共有64K个小段段起始地址:小段首地址段的大小:64K 范围内的任意字节五、存储器的逻辑分段优点:允许程序在存储器内重定位;允许实模式程序在保护模式下运行;有利于程序和数据的分离.六、中央处理器8086/8088寄存器组:通用寄存器数据寄存器:AX,BX,CX,DX变址寄存器:SI、DI指针寄存器:SP、BP控制寄存器:IP、FLAGS段寄存器:CS、DS、SS、ES七、标志寄存器( FLAGS / PSW )条件标志位:OF 溢出标志SF符号标志ZF 零标志CF 进位标志AF 辅助进位标志PF奇偶标志控制标志位:DF 方向标志IF中断标志TF 陷阱标志八、寄存器与存储器的比较:寄存器:在CPU内部;访问速度快;容量小,成本高;用名字表示;没用地址存储器:在CPU外部;访问速度慢;容量大,成本低;用地址表示;地址可用各种方式形成第三章九、数据传送指令传送指令MOV CPU内部寄存器之间的数据传送指令格式:MOV DST,SRC 执行操作:(DST) ←(SRC)注意: *DST、SRC 不能同时为段寄存器MOV DS,ES ⨯* DST、SRC 不能同时为存储单元*立即数不能直接送段寄存器MOV DS, 2000H ⨯* DST 不能是立即数和CS*不影响标志位交换指令XCHG指令格式:XCHG OPR1, OPR2 执行操作:(OPR1) ↔(OPR2)例:XCHG BX, [ BP+SI ]XCHG AL, BH注意:* 两个操作数字长一致*两个操作数都不能是段寄存器* 两个操作数都不能是立即数* 两个操作数不能同时是存储单元*可以采用除立即寻址方式外的任何一种寻址方式.* 不影响标志位地址传送指令LEA、LDS、LES1.有效地址送寄存器指令:LEA REG,SRC 执行操作:(REG)← SRC2。
汇编程序设计语言知识点
汇编程序设计语言知识点汇编程序设计语言是一种低级别的程序设计语言,用于编写计算机的底层代码。
它与高级语言相比,更加接近机器的指令集架构,可以直接操作计算机的硬件和寄存器。
在本文中,将介绍汇编程序设计语言的一些重要知识点。
一、汇编语言基础知识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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章基础知识:一、机器码:1、计算机只认识0,1两种状态。
而机器码只能由0,1组成。
故机器码相当难认,故产生了汇编语言。
2、其中汇编由三类指令形成:汇编指令(有机器码对应),伪指令,其她符号(编译的时候有用)。
每一总CPU都有自己的指令集;注意学习的侧重点。
二、存储器:1、存储单元中数据与指令没任何差别。
2、存储单元:Eg:128个储存单元(0~127)128byte。
//1字节=1B=1byte=8bit条件反射:1存储单元=1B=8个2进制;以后的ax,cs 之类的占两个存储单元,ah之类的占一个3、CPU对存储器的读写:地址信息+控制信息+数据信息三、总线: 1、地址总线:寻址用,参数(宽度)为N根,则可以寻到2^N个内存单元。
//因为一根总线只能表示0,1,N根的话可以表示2^N2、数据总线:传送数据用,参数为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给出物理地址的方法:1、20根数据总线(稍外):寻址能力为1M2、16位的cpu(内部):一次能处理的数据位2^16。
3、方法:物理地址=段地址*16+偏移地址 ;*16==左移四位四、段: 1、段地址为16的倍数2、一个段的长度最长为64K;因为偏移地址为16位,寻址能力为64K五、回到寄存器--段寄存器(cs,ds,ss,es)1、cs(代码段寄存器),ip(指针指令寄存器);cs为存放指令的段地址2、cpu中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、栈顶的单元为低,栈底的单元较高。
3、ss(段寄存器):sp(寄存器):任意时刻指向栈顶。
4、push进栈:sp-2 mov;pop出栈:,mov sp+25、栈的最大容量为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与[]来读写这些数据。
2、start:跳过数据存储的地方,指令开始的地方。
使用二:在代码段中使用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第七章更加灵活的定位内存地址的方法引入:1、add 与or:操作对象就是位(bit)。
2、关于ASCII码:占一个字节(byte)3、以字符给出数据‘xxx' 每一个x占一个字节。
在程序时可直接瞧成一个或一排连续的ASCII码。
4、综合使用:大小写互换。
正文:1、[bx+idata]:偏移地址为(bx)+idata ;疑问:为什么不就是((bx)+idata )自己理解:可能就是bx就是一个寄存器,其中的值用()表示,;这样已经完成了寄存器到数值的转换了[bx]:偏移地址为(bx)用idata[bx]进行数值的应用2、si与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之后的一条1、call 标号就是相当于进行:push ip ;根据位移(段内转移)jmp near ptr 标号2、call far ptr 标号相当于进行:push cs ;段间转移push ipjmp far ptr 标号3、call 16位reg 相当于进行:push ipjmp reg4、call word 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的设计者必须在中断信息与其处理程序的入口地址之间建立某种联系。