汇编语言知识大全
汇编语言考点总结

汇编语言考点总结汇编语言是一种低级的计算机编程语言,它直接操作计算机的底层硬件。
在计算机科学与技术领域,学习和掌握汇编语言是非常重要的一项技能。
本文将对汇编语言的主要考点进行总结,以帮助读者更好地理解和应用这门编程语言。
一、汇编语言的基本概念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、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间: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的设计者必须在中断信息与其处理程序的入口地址之间建立某种联系。