汇编语言期末复习总结(完整版)
汇编语言期末总结
![汇编语言期末总结](https://img.taocdn.com/s3/m/02a9425a312b3169a451a480.png)
汇编语言期末总结整理了些关于汇编语言的基础知识,希望能帮到你们的期末复习!计算机内部寄存器阵列●数据寄存器●指针及变址寄存器●段寄存器●控制寄存器数据寄存器包括4个16位的寄存器(AX, BX, CX, DX)或者8个8位寄存器( AH, AL,BH, BL, CH, CL, DH, DL)这些寄存器都可以用来暂时存放操作数, 运算结果以及其他信息, 但同时又具有某些专用用途● AX 数据累加器算术运算中的主要寄存器, 在乘除运算中用来指定被除数和被除数, 也是乘, 除,运算后积和商的默认存储单元. 另外I/O指令均使用该寄存器与I/O设备传送信息● BX 基址寄存器指令寻址时常用做基址寄存器. 存入偏移量或偏移量的构成成分● CX 计算寄存器在循环指令操作或串处理指令中隐含计数● DX 数据寄存器在双字节长运算是, 与AX构成32位操作数, DX为高16位. 在某些I/O指令中, DX被用来存放端口地址指针及变址寄存器这些寄存器都是16位的寄存器, 用来存放16位的操作数或中间结果, 但更经常的用途是存放偏移量, 或位移量● SP 堆栈指针寄存器始终只是栈顶的位置, 与SS寄存器一起组成栈顶数据的物理地址● BP 基址指针寄存器系统默认其指向堆栈中某一单元, 即提供栈中该单元的偏移量. 加段前缀后, BP可作非堆栈段的地址指针● SI 源变址寄存器与DS联用, 指示数据段中某操作的偏移量. 在做串处理时, SI指示源操作数地址, 并有自动增量或自动减量的功能. 变址寻址时, SI与某一位移量共同构成操作数的偏移量● DI 目的变址寄存器与DS联用, 指示数据段中某操作数的偏移量, 或与某一位移量共同构成操作数的偏移量. 串处理操作时, DI指示附加段中目的地址,并有自动增量或减量的功能段寄存器● CS 代码段存放当前程序的指令代码● DS 数据段存放程序所涉及的源数据或结果● SS 堆栈段以”先入后出”为原则的数据区● ES 附加段辅助数据区, 存放串或其他数据控制寄存器● IP 指令指针寄存器它始终指向当前将要执行指令在代码段中存放的偏移量● FR 控制标志位1. CF 进位标识位进行加减运算时, 如果最高二进制位产生进位或错位, CF则为1, 否则为0. 程序设计中, 常用条件转移指令JC, JNC指令据此标志位实现转移2. PF 奇偶标志位操作结果中二进制位1的个数为偶数是, PF为1, 某则为03. AF 辅助进位标志位运算时半字节产生进位或借位时,AF为1, 某则为0. 主要用于BCD码的调整4. ZF 零标志位运算结果为0时, ZF为1, 否则为05. SF 符号标志位当运算结果的最高位为1时, SF为1, 否则为0. 最高位表示符号数的正和负6. TF 跟踪标志位用于调试程序时进入单步方式工作. TF=1时, 每条指令执行完后产生一个内部中断, 让用户检查指令运行后寄存器, 存储器和各标志位的内容. TF=0时, CPU工作正常, 不产生内部中断7. IF 中断允许标志位IF=1同时中断屏蔽寄存器的相应位为0, 允许系统响应可屏蔽中断, 反之, 不接收外部发出的中断请求8. DF 方向位标志位用于控制串操作时地址指针位移方向. 当DF=1时, 指针向高地址方向移动9. OF 溢出标志位算术运算时结果超出系统所能表示的数的范围. 溢出时, OF=1关于汇编代码中的指令汇编指令语句的格式: [标号:] 指令助记符 [[目的操作数][, 源操作数]] [; 注释]●指令助记符如MOV, SUB这些词分别表示传送, 减法. 汇编源程序时, 系统使用内部对照表将每条指令的助记符翻译成对应的机器码●目的操作数目的操作数一共有两个作用1. 参与指令操作2. 暂时储存操作结果●源操作数源操作数主要提供原始数据或操作对象, 面向所有寻址方式. 例如, 在指令SUB AX, BX 中的值作为减数提供给指令SUB●注释这是对源程序的说明, 在汇编中用 ; 号, 后面的内容将被注释介绍指令前, 先熟悉下这些在指令中的符号(必须要记得)● imme: 立即数● DST: 目的操作数● SRC: 源操作数● mem: 存储器操作数● OPR: 操作数● reg: 通用寄存器● EA: 偏移地址(偏移量)● Sreg: 段寄存器● Port: 端口地址● Label: 标号汇编指令一共可以分为6组:1. 数据传送指令2. 算术运算指令3. 逻辑运算与移位指令4. 串操作指令5. 程序控制指令6. 处理器控制指令数据传送指令通用数据传送指令:● MOV DST,SRC ;传送指令: 把源操作数的内容送入目的操作数注意:1. 立即数做源操作数时, 立即数的长度必须小于等于目的操作数的长度2. 操作数DST, SRC分别为reg, reg或reg, Sreg或Sreg, reg时, 两者的长度必须保持一致3. CS和IP寄存器不能做DST操作数, 不允许用立即数直接为段寄存器赋值4. 立即数不能作为目的操作数5. 不能将一个段寄存器的内容直接送到另一个段寄存器中, 可借助通用寄存器或PUSH, POP指令实现这一要求● PUSH SRC ;压栈指令: 将一个字数据压入当前栈顶, 位移量disp=-2的地址单元. 数据进栈时, 栈指针SP首先向低地址方向移动两个字节位置, 接着数据进栈, 形成新的栈顶● POP DST ;出栈指令: 弹出栈顶元素, 后将栈顶指针向栈底方向移动一个字● XCHG OPR1,OPR2 ;交换指令: 将这两个操作数交换地址传送指令:● LEA DST,SRC ;装载有效地址指令: 该指令将源操作数的偏移量OA装载到目的操作数中● LDS DST,SRC ;装载数据段指针指令: 将当前数据段中的一个双字数据装入到一个通用寄存器SI(双字数据的低字)和数据段寄存器DS(双字数据的高字)中● LES DST,SRC ;装载附加段指针指令: 将附加数据段中的一个32位地址数据指针(附加段指针)送到DI(低字)和ES(高字)寄存器中标志传送指令: (专用于标志寄存器保护和更新的指令, 共四条)● LAHF ;标志寄存器送AH指令, 将标志寄存器的低字节送入AH中● SAHF ;AH送标志寄存器指令, 将AH寄存器内容送标志寄存器FR的低字节● PUSHF ;标志进栈指令, 标志寄存器进栈● POPF ;标志出栈指令, 标志寄存器出栈累加器专用传送指令:● IN AL,Port ;从端口读入数据, 存放在AL中● OUT Port,A● ;传送AL中的数据到端口● XLAT OPR或XLAT ;用于将AL中当前的内容转换为一种代码算术运算指令加法指令:● ADD DST,SRC ;DST+SRC的和存放到DST中去● ADC DST,SRC ;带进位加法指令, DST+SRC+CF● INC DST ;增1指令减法指令:● SUB DST,RSC ;DST-SRC, 存放到DST中● SBB DST,SRC ;带借位减法指令, DST-SRC-CF● DEC DST ;减1指令● NEG DST ;求补指令, 求补码● CMP OPR1,OPR2 ;比较指令乘法指令:● MU● SRC ;无符号数乘指令, AL*SRC, 结果放入AX中● IMU● SRC ;有符号数乘指令, AL*SRC, 结果放入AX中除法指令:● DIV SRC ;无符号数除指令, AX/SRC, 商放入AL中, 余数放在AH中● IDIV SRC ;符号数除指令, AX/SRC, 上放入AL中, 余数放在AH中● CBW,CWD ;都是符号扩展指令. 将AL的符号扩到AX中; 将AX的符号扩到DX中逻辑运算与移位指令逻辑运算指令:● NOT OPR ;逻辑非指令● AND OPR ;逻辑与指令● OR OPR ;逻辑或指令● XOR OPR ;逻辑异或指令移位指令:● SH● DST,CNT ;逻辑左移● SHR DST,CNT ;逻辑右移● SA● DST,CNT ;算术左移● SAR DST,CNT ;算术右移循环移位指令:● RO● DST,CNT ;循环左移● ROR DST,CNT ;循环右移● RC● DST,CNT ;带进位循环左移● RCR DST,CNT ;带进位循环右移串操作指令● MOVS ;串传送指令● CMPS ;串比较指令● SCAS ;串扫描指令● LODS ;装入串指令● STOS ;存储串指令控制转移指令转移指令:● JMP ;无条件转移指令● JX ;条件转移指令(JC/JNC, JZ/JNZ, JE/JNE,JS/JNS, JO/JNO, JP/JNP…)循环指令:● LOOP 标号 ;该指令执行时, 技术寄存器CXX首先减1, 然后判断CX, 若为0, 跳出循环条件循环指令:● LOOPZ/LOOPE,LOOPNZ/LOOPNE ;前者用于找到第一个不为0的事件, 后者用于找到第一个为0的事件子程序调用指令:● CAL●子程序名 ;段内直接调用● RET中断指令:● INT N(中断类型号) ;软中断指令● IRET ;中断返回指令处理器控制指令标志处理指令:● CLC ;进位标志CF置0● CMC ;进位标志CF求反● STC ;进位标志值1● CLD ;方向标志置0● STD ;方向标志置1● CLI ;中断允许标志置0● STI ;中断允许标志置1其他处理器控制指令:● NOP ;空操作● HLT ;停机● WAIT ;等待● ESC ;换码● LOCK ;封锁祝大家期末最后一门考试顺利!元旦快乐,亲们!。
汇编期末总结
![汇编期末总结](https://img.taocdn.com/s3/m/648c1360a4e9856a561252d380eb6294dd8822ab.png)
汇编期末总结一、引言汇编语言是一种基于计算机硬件的低级语言,它直接使用计算机指令来操作硬件资源。
汇编语言的学习不仅可以深入了解计算机的工作原理,还可以提高编程效率。
在本学期的汇编语言课程中,我通过理论学习和编程实践,对汇编语言的基本概念和操作方法有了更深入的了解。
以下是我在本学期的学习中所做的总结和反思。
二、理论学习总结1.基本概念掌握的不够扎实在学习汇编语言的过程中,我发现理论学习的时间分配不够合理,导致我在掌握一些基本概念上存在一定的困难。
例如,对寄存器和内存的了解不够深入,对汇编指令和指令集的理解不够全面。
在下学期的学习中,我会加强对基本概念的学习,通过阅读教材、查找资料和进行课后习题的练习,来提高自己的理论学习水平。
2.对汇编语言的历史和发展趋势的了解不够汇编语言作为一门历史悠久的编程语言,它的发展历程和应用领域也非常广泛。
在本学期的学习中,我对汇编语言的历史和发展趋势了解不多。
在下学期的学习中,我会了解更多关于汇编语言的历史和发展动态,以便更好地理解汇编语言的应用场景和优势。
3.代码调试能力待提高在编写汇编代码时,我发现自己的代码调试能力相对较弱。
尤其是在出现错误时,我往往难以快速定位问题并进行修复。
在下学期的学习中,我会多加练习,提高自己的代码调试能力。
同时,我也会学习一些常用的调试工具和技巧,以便更好地进行代码调试和错误排查。
三、编程实践总结1.编写了多个汇编程序在本学期的学习中,我不仅学习了各种汇编指令和指令集,还编写了多个汇编程序。
这些程序包括简单的算术运算、条件判断和循环控制等,也包括一些较为复杂的程序,如字符串处理和文件操作等。
通过编写这些程序,我对汇编语言的应用有了更深入的了解,并且提高了自己的编程能力。
2.加强了团队合作和沟通能力在编写汇编程序的过程中,我积极与同学合作,相互学习和交流。
通过团队合作,我们可以共同解决问题,找到更好的解决方案。
同时,我也学会了更好地与同学和教师进行沟通,及时反馈自己在学习中遇到的问题和困难。
汇编期末复习(已整理)
![汇编期末复习(已整理)](https://img.taocdn.com/s3/m/332cb7e8700abb68a982fb46.png)
一.选择题1.CPU发出的访问存储器的地址是()。
A.物理地址B.偏移地址C.逻辑地址D.段地址2.将高级语言的程序翻译成机器码程序的实用程序是()。
A.编译程序B.汇编程序C.解释程序D.目标程序3.DEC BYTE PTR[BX]中的操作数的数据类型是()。
A.字B.双字C.字节D.四字4.在下列语句中,BUFFER称为()。
BUFFER DB 01H,0AHA.符号B.变量C.助记符D.标号5.串操作指令中,源串操作数的段地址一定在()寄存器中。
A. CSB. SSC. DSD. ES6.使计算机执行某种操作的命令是()。
A.伪指令B.指令C.标号D.助记符7.将数据5618H存放在存储单元中的伪指令是()。
A. DA TA1 DW 1856HB. DATA1 DB 18H,56HC. DATA1 EQU 5618HD. DATA1 DB 18H,00H,56H,00H8.若AX=3500H,CX=56B8H,当AND AX,CX指令执行后,AX=()。
A. 1400HB. 77F8HC. 0000HD. 0FFFFH9.计算机处理问题中会碰到大量的字符、符号,对此必须采用统一的二进制编码。
目前,微机中普遍采用的是()码。
A. BCD码B.二进制码C.ASCII码D.十六进制码10.用指令的助记符、符号地址、标号和伪指令、宏指令以及规定的格式书写程序的语言称为()。
A.汇编语言B.高级语言C.机器语言D.低级语言11.指令JMP FAR PTR DONE属于()。
A.段内转移直接寻址B.段内转移间接寻址C.段间转移直接寻址D.段间转移间接寻址12.执行下面指令序列后,结果是()。
MOV AL,82HCBWA.AX=0FF82HB. AX=8082HC. AX=0082HD. AX=0F82H13. 物理地址(10FF0H )=10H,(10FF1H )=20H,(10FF2H )=30H,从地址10FF1H 中取一个字的内容是()。
汇编语言期末复习要点
![汇编语言期末复习要点](https://img.taocdn.com/s3/m/ff75911b0b4e767f5acfce43.png)
主要复习知识点
1 机器语言、汇编语言、高级语言,汇编与连接程序的基本原理,标识符,debug中数据的进制数据类型循环的三大要素 dos
2 寄存器以及寄存器的位数,数据寄存器,地址寄存器,IP指针寄存器,标志寄存器,地址总线,段或者缓冲区中指定单元的物理地址与偏移地址,以及寻址空间,内存分段的原理,各段的最大值,各段如何与相应的段寄存器建立对应关系
3 堆栈的栈底栈顶以及入栈时数据的大小、栈顶的移动方向
5 变量标号的三种属性以及它们的运算符,变量的类型转换要用到的运算符,符号扩展的具体操作。
6系统的常用功能调用,2 9 10 号功能调用
7 子程序的类型宏定义中局部标号的展开
8 中断向量以及中断向量表在内存中占有的空间的大小
9 双字变量的加减运算,移位运算,乘法与除法指令中乘数与被乘数各自用到的寄存器
10 输入输出指令,输入输出端口地址空间的大小
11 七种寻址方式,物理地址的计算以及目的操作数的计算,指令的对错
12 变量在内存中占用的字节单元数,以及单元中的值(根据数据类型确定),存储变量在内存中占用存储空间的示意图
13 宏程序的展开
14 流程图以及完整的源程序,四则混合运算,尤其要注意双精度数的加减运算以及大小的判断
15 循环程序与子程序的设计
16 比较指令与跳转指令在程序设计中的运用。
汇编语言复习重点总结版
![汇编语言复习重点总结版](https://img.taocdn.com/s3/m/6e154b210b4c2e3f57276327.png)
1.通用数据传送指令MOV——传送指令指令格式:MOV DST,SRC;(DST)←(SRC)。
DST表示目的操作数, SRC表示源操作数说明:①.DST为除CS外的各寄存器寻址方式或任意存储器寻址方式。
SRC为任意数据寻址方式。
②.DST、SRC不能同时为存储器寻址方式,也不能同时为段寄存器寻址方式,而且在DST为段寄存器时,SRC不能为立即数。
③.MOV指令不影响标志位。
2.地址传送指令(1).LEA——有效地址(EA)送寄存器指令指令格式:LEA REG,SRC;(REG)←SRC说明:①.指令把源操作数(只能是存储器寻址方式)指定的有效地址送到指令指定的16位或32位寄存器(REG)中(但不能是段寄存器)。
②.LEA指令不影响标志位。
3.加法指令(1).ADD——加法指令指令格式:ADD DST,SRC;(DST)←(DST)+( SRC)4.减法指令(1).SUB——减法指令指令格式:SUB DST,SRC;(DST)←(DST) - (SRC)(2).SBB——带借位减法指令指令格式:SBB DST,SRC ;(DST)←(DST) - (SRC) - CF5.除法指令(1).DIV——无符号数除法指令指令格式:DIV SRC;字节操作:(AL)←(AX)/(SRC),(AH)←(AX)%(SRC)字操作:(AX)←(DX,AX)/(SRC),(DX)←(DX,AX)%(SRC)双字操作:(EAX)←(EDX,EAX)/(SRC),(EDX)←(EDX,EAX)%(SRC)6.逻辑运算指令:可以对双字、字或字节执行按位的逻辑运算。
(1).AND——逻辑与指令指令格式:AND DST,SRC;(DST)←(DST)∧(SRC)(2).OR——逻辑或指令指令格式:OR DST,SRC;(DST)←(DST)∨(SRC)(3).XOR——逻辑异或指令指令格式:XOR DST,SRC;(DST)←(DST)⊕(SRC)(4).PUSH——进栈指令指令格式:PUSH SRC;16位指令:(SP)←(SP) –2 ((SP)+1,(SP))←(SRC)32位指令:(ESP)←(ESP) –4 ((ESP)+3, (ESP)+2, (ESP)+1,(ESP))←(SRC)说明:①.堆栈:计算机开辟的以“后进先出”方式工作的存储区。
汇编语言期末复习要点
![汇编语言期末复习要点](https://img.taocdn.com/s3/m/068704c98bd63186bcebbc4b.png)
编译程序根据各变量的排列顺序和所占用的字节数,
计算出各变量的偏移量,以直接寻址方式或作中所有其他位置的该
变量符号。
8086汇编语言程序设计
18
3. 其他伪指令 ORG 、$:从哪里开始编译和编译到哪里了(偏移量) SEG、OFFSET 、TYPE: ——返回段基值、偏移量和变量类型
存器带有各种“附加”功能,这些“附加”功能是通
过机器指令的执行来实现的。
8086汇编语言程序设计
4
3. 8086/8088 CPU 的寄存器
8086/8088 CPU 的内部结构
8086汇编语言程序设计 5
三、存储器寻址方式及堆栈
1. 字节单元定位和物理地址
内存
地址 译码 逻辑 CPU 地址总线 数据总线
⑥ 基址变址寻址:xchg ax,[bx+si]
⑦ 相对基址变址寻址:push var[bx+si]
8086汇编语言程序设计 9
6. 堆栈
① 堆栈的“生成”和空栈的状态:
—— SP 的初值和堆栈容量、栈顶、栈底的关系; ② PUSH 和 POP 的行为方式: —— 栈指针 SP 的变化和数据入、出栈; ③ PUSHF 和 POPF 的默认操作数:标志寄存器;
④ 移位及循环移位类 ⑥ 标志位操作指令
② 8086 instructions
3. 掌握用 debug 学习、研究指令的方法
8086汇编语言程序设计
11
4. 特别提示:
① 目标操作数不能为立即数;
② 除了串操作指令外,双操作数不能同为存储器操作数; ③ 段寄存器只能: mov ax,ds mov ds,ax push ds pop ds
① 寄存器寻址:xor al,al
汇编语言与接口技术期末总结
![汇编语言与接口技术期末总结](https://img.taocdn.com/s3/m/2b74d356ddccda38376baf8b.png)
汇编语言与接口技术期末总结篇一:汇编语言与接口技术复习要点总结及一些习题要点总结第二章微型计算机结构1.8086的段式存储结构段地址+偏移量地址=存储单元的物理地址或者,段寄存器的值*16+偏移地址=存储单元的物理地址2.段寄存器,通用寄存器,指针与变址寄存器,标志寄存器3.寻址方式(1)寻址方式的概念(2)寻址方式的分类(3)各寻址方式中对于寄存器的限制(4)各类寻址方式的格式第三章汇编语言(参照课件)1.汇编语句格式:[标号]操作符操作数[;注释]2.标号的概念以及其三个属性3.伪指令:(1)符号定义伪指令:EQU(2)数据定义伪指令:dB,dw(3)段定义伪指令:SEGmEnT、EndS、aSSUmE4、运算符(1)分析算符:SEG,,oFFSET,SizE,LEnGTH(2)组合算符:PTR5.指令语句与伪指令语句的区别6.数据段、堆栈段、代码段的用途第四章指令及汇编程序设计1.数据传送指令:moV、PUSH、PoP、XcHG、XLaT2.算数运算指令:add、adc、inc、SUB、SBB、dEc、nEG、3.逻辑运算指令:cmP、TEST、oR、and、noT、XoR4.移位指令:逻辑左移/右移,算数左移/右移,循环左移/右移,带进位的循环左移/右移;以及移位指令对于cF、oF标志位的影响分支结构程序设计1.无条件转移指令2.有条件的转移指令(教材P102)3.分支程序编写循环结构程序设计1.循环控制指令LooP、LooPE/z、LooPnE/nz以及他们的控制条件(对cF、zF的判断)2.循环程序编写子程序设计1.子程序定义伪指令、调用指令、返回指令2.子程序设计中对于堆栈操作的要求第五章输入与输出中断1.中断向量表、中断向量的概念2.中断向量的修改3.中断的类型:软件中断、可屏蔽硬件中断、非屏蔽硬件中断;以及cPU队可屏蔽硬件中断和非屏蔽硬件中断的不同的响应条件4.8259的基本结构和工作原理5.8259的操作命令字:包括各个命令字的作用、格式、具体的操作6.软件中断与硬件中断的异同点第六章8254程序设计1.8254的基本结构和工作原理2.8254的命令字格式,以及对于8254各个计数器工作方式的设定8255程序设计1.8255的基本结构和工作原理2.8255的命令字格式,以及对于8255各端口的操作16550异步串行通信中,波特率的概念,数据帧的概念第七章简单外设LEd的显示原理键盘的结构及扫描原理一些复习题习题一一、选择题1、8086cPU中程序计数器iP中存放的是。
汇编语言期末总结
![汇编语言期末总结](https://img.taocdn.com/s3/m/bc09cbf7c0c708a1284ac850ad02de80d4d806de.png)
汇编语言期末总结第一章汇编语言基础知识1、程序设计语言分哪三类?答:(1)机器语言(2)汇编语言(3)高级语言2、十进制数用D(Decimal)、二进制数用B(Binary)、八进制数用O(Octal)、十六进制数用H(Hexadecimal)来表示。
由于英文字母O 容易和零误会,所以也可以用Q 来表示八进制数。
★任意进制数的通式:+±=±=∑∑∑--==-=m i i i n i i i nm i i i r x r x r x N 10 其中∑=ni irx i为整数部分,∑--=mi irx i1为小数部分,r 为基数。
每一项的数字可用0~r -1数字中的一个数字来表示。
、3、进制转化:(1)十进制数与二进制数之间的转换:1) 十进制整数转换成二进制整数:除2取余法【例1-1】将十进制数97转换成二进制数。
其过程如下:最后结果为:(97)10 =(A6 A5 A4 A3 A2 A1 A0)2=(1100001)2 2) 十进制小数转换成二进制小数:乘2取整法。
【例1-2】将十进制小数0.6875转换成二进制小数。
其过程如下:最后结果为:(0.6875)10=(0.A-1A-2A-3A-4) 2 =(0.1011)2 3)带小数的转化:(97)10=(1100001)2 (0.6875)10=(0.1011)2由此可得: (97.6875)10=(1100001.1011)24)二进制数转换成十进制数:按位权展开后相加。
【例1-3】将二进制数111.11转换成十进制数。
其过程如下:(111.11)2=1×22+1×21+1×20+1×2-1+1×2-2=4+2+1+0.5+0.25=(7.75)10(2)十进制与八进制之间的转换:1) 十进制整数转换成八进制整数:除8取余法。
【例1-4】将十进制数97转换成八进制数。
其过程如下:最后结果为:(97)10 =(A2 A1 A0)8 =(141)82)十进制小数转换成八进制小数:乘8取整法。
汇编语言考试复习资料
![汇编语言考试复习资料](https://img.taocdn.com/s3/m/7ad492fcf9c75fbfc77da26925c52cc58bd6908a.png)
汇编语⾔考试复习资料汇编语⾔期末复习资料整理第⼆章1、寄存器组(1)通⽤寄存器数据寄存器EAX(32位) AX(16位) AH(8位)(⾼位) AL(8位)(低位)累加器EBX(32位) BX(16位) BH(8位)(⾼位) BL(8位)(低位)基址变址ECX(32位) CX(16位) CH(8位)(⾼位)CL(8位)(低位)计数器EDX(32位) DX(16位) DH(8位)(⾼位) DL(8位)(低位)数据指针或变址寄存器ESP(32位) SP(16位)堆栈指针寄存器EBP(32位) BP(16位)基址指针寄存器EDI(32位) DI(16位)⽬的变址寄存器ESI(32位) SI(16位)源变址寄存器(2)专⽤寄存器EIP(32位) IP(16位)指令指针寄存器EFLAGS(32位) FLAGS(16位)标志寄存器ESP (32位) SP(16位)堆栈指针寄存器2、标志位的符号表⽰、3、段寄存器CS(16位)代码段 DS(16位)数据段SS(16位)堆栈段 ES(16位)附加段4、段寄存器和相应存放偏移地址的寄存器之间的默认组合第三章1、七种寻址⽅式(举例)⽴即寻 MOV AX,3069H寄存器寻 MOV AL,BH在内存中的五种寻址直接寻 MOV AX,[2000H]寄存器间接寻 MOV AX,[BX]寄存器相对寻 MOV AX,COUNT[SI] 或者 MOV AX,[SI+COUNT](不推荐) 基址变址寻址 MOV AX,[BP][DI]相对基址变址寻址 MOV AX,MASK[BX][SI]2、指令系统I.数据传送指令(1)通⽤数据传送指令MOV 传送MOVSX 带符号扩展传送⽤源操作数的符号位来填充⽬的操作数的⾼位数据位。
例:MOVSX EAX,CL把CL寄存器中的8位数,符号扩展为32位数,送到EAX寄存器中。
MOVZX 带零扩展传送恒⽤0来填充⽬的操作数的⾼位数据位例:MOVZX DX,AL把AL寄存器中的8位数,零扩展成16位数,送到DX寄存器中。
汇编语言程序设计期末总结
![汇编语言程序设计期末总结](https://img.taocdn.com/s3/m/c1919ac7d5d8d15abe23482fb4daa58da0111c8b.png)
汇编语言程序设计期末总结一、引言汇编语言是一种底层语言,用于编写计算机程序。
它与高级语言相比,能够更直接地访问计算机硬件,并且能够实现更底层的操作。
在汇编语言程序设计的学习过程中,我通过学习各种指令、寄存器、存储器等概念,并实践了各种实例程序,掌握了如何使用汇编语言进行程序设计。
本文将对期末汇编语言程序设计的学习进行总结,并反思自己在学习过程中的不足和提出改进的建议。
二、学习内容在本学期的汇编语言程序设计课程中,我主要学习了以下内容:1. 汇编语言基础知识:学习了汇编语言的基本语法、汇编指令的格式和操作数寻址方式等基础知识。
了解了寄存器的种类和作用,并能够使用不同寻址方式进行数据的读取和存储。
2. 汇编指令集:学习了x86汇编指令集的基本知识,并熟悉了常用指令的使用方法。
了解了汇编指令的作用和执行过程,并能够进行简单的指令编写和调试。
3. 程序设计技巧:学习了一些汇编语言程序设计的技巧和方法,如循环、条件语句、子程序等。
通过实践编写了一些简单的程序,加深了对这些技巧的理解和掌握。
4. 汇编语言应用案例:通过学习一些实际的应用案例,如字符串处理、图像处理等,了解了汇编语言在实际编程中的应用。
掌握了如何利用汇编语言解决实际问题的方法和思路。
三、学习感悟在学习汇编语言程序设计的过程中,我遇到了一些困难和挑战,但也收获了很多。
首先,汇编语言的语法和指令集相比高级语言更加底层和复杂,需要花费更多的时间和精力去学习和理解。
在最开始学习的阶段,我遇到了很多语法错误和调试困难,但通过不断的实践和练习,逐渐掌握了基本的汇编语言编程技巧。
其次,汇编语言的程序设计思维与高级语言有所不同。
在高级语言中,我们可以使用各种高级数据结构和函数库来解决问题,而在汇编语言中,我们需要手动构建这些数据结构和函数,需要更加关注底层的细节。
这要求我们具备一定的抽象能力和逻辑思维,能够清晰地分析问题并设计相应的算法。
此外,汇编语言编程还需要对计算机硬件有一定的了解。
汇编语言重点知识总结
![汇编语言重点知识总结](https://img.taocdn.com/s3/m/7ef2157030126edb6f1aff00bed5b9f3f80f726d.png)
汇编语言重点知识总结汇编语言是一种低级程序设计语言,它直接操作计算机硬件资源,具有较高的执行效率和灵活性。
本文将重点总结汇编语言的相关知识,涵盖指令集、寻址模式、数据传送和运算、控制流等方面。
一、指令集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指令无条件跳转到指定的地址。
汇编语言重点知识总结(超全的哦~~)
![汇编语言重点知识总结(超全的哦~~)](https://img.taocdn.com/s3/m/7a19f433cdbff121dd36a32d7375a417866fc187.png)
汇编语言重点知识总结(超全的哦~~)汇编速查手册汇编语言总结概要寄存器与存储器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. 汇编程序. 汇编程序是将汇编语言源程序翻译成二进制代码程序的语言处理程序,翻译的过程称为汇编。
汇编语言期末总结(小抄必备)
![汇编语言期末总结(小抄必备)](https://img.taocdn.com/s3/m/9503e6919b89680202d82515.png)
汇编语言期末总结(小抄必备)执行部件(EU)主要由算术逻辑运算单元(ALU)、标志寄存器FR、通用寄存器组和EU控制器等4个部件组成,其主要功能是执行指令。
总线接口部件(BIU)主要由地址加法器、专用寄存器组、指令队列和总线控制电路等4个部件组成,其主要功能是形成访问存储器的物理地址、访问存储器并取指令暂存到指令队列中等待执行,访问存储器或I/O端口读取操作数参加EU 运算或存放运算结果等CF(Carry Flag):进位标志位CF=l,表示本次运算中最高位(D15或D7)有进位(加法运算时)或有借位(减法运算时)。
CF 标志可通过STC指令置位,通过CLC指令复位(清除进位标志),还可通过CMC指令将当前CF标志取反。
PF(Parity Flag):奇偶校验标志位PF=1,表示本次运算结果中有偶数个“l”,PF=0,表示本次运算结果中有奇数个“1”。
AF(Auxiliary Carry Flag):辅助进位标志位。
AF=l,表示运算结果的8位数据中,低4位向高4位有进位(加法运算时)或有借位(减法运算时),这个标志位只在十进制运算中有用。
ZF(Zero Flag):零标志位ZF=1,表示本次运算结果为零,否则即运算结果非零时,ZF=0。
SF(Sign Flag):符号标志SF=1,表示本次运算结果的最高位(第7位或第15位)为“l”,否则SF=0。
OF(Overflow F1ag):溢出标志IF(Interrupt Flag):中断标志位IF=1,表示允许CPU响应可屏蔽中断。
IF 标志可通过STI指令置位,也可通过CLI指令复位。
DF(Direction Flag):方向标志位在串操作指令中,若DF=0,表示串操作指令地址指针自动增量;DF=1,表示地址指针自动减量。
DF标志位可通过STD指令置位,也可通过CLD指令复位。
TF(Trap Flag):单步标志位寻址方式1.立即寻址2寄存器寻址3直接寻址4寄存器间接寻址5、基址/变址寻址当使用BX或BP寄存器时,称基址寻址;使用SI或DI寄存器时,称变址寻址6、基址加变址寻址7、其他A、隐含寻址B、串寻址源操作数的逻辑地址为DS:SI;目的操作数的逻辑地址为ES:DIc、I/O(输入/输出)端口寻址(1) 直接端口寻址方式。
汇编语言期末复习
![汇编语言期末复习](https://img.taocdn.com/s3/m/40e5c93a2bf90242a8956bec0975f46526d3a752.png)
汇编语言期末复习第一章汇编语言及其重要性一、什么是汇编语言二、汇编语言的重要性三、汇编语言的种类和本课程学习的汇编语言第二章8088微处理器及其寻址方式一、寄存器的概念二、8088的寄存器结构三、8088的存储器组织四、8088的寻址方式第三章源程序的书写格式和数据组织一、源程序书写格式二、段寄存器的装填三、程序中数据的组织第五章数据传送程序一、数据块的传送二、字符的输入/ 输出三、堆栈操作程序四、数据交换五、端口输入/ 输出六、换码程序七、其它传送指令重点例题:P.114 例6.1; P.118 例6.2;P.120 例6.3; P.125 例6.6;第六章算术运算程序一、二进制数算术运算二、十进制数算术运算重点例题:P.137 例7.1第七章逻辑运算程序一、逻辑运算指令二、逻辑运算指令应用举例重点例题:P.169 例8.1; P.175 例8.5;P.176 例8.6; P.177 例8.7第八章分支程序一、标号二、比较和转移指令三、分支程序实例重点例题:P.192 例9.2第九章字符串操作程序一、字节串、字串的概念二、字符串操作指令前可加的重复前缀三、字符串操作指令的一些共同特性四、字符串操作指令及其应用第九章循环程序设计一、迭代控制指令二、循环程序设计应用实例重点例题:P.210 例11.1; P.210 例11.2;P.218 例11.7; P.221 例11.8;第十二章过程一、过程定义及其调用二、模块间的调用和转移三、调用程序与被调用的过程之间的数据传送及程序实例重点例题:P.266 例13.4第十三章中断及中断处理一、中断的概念二、中断的分类三、中断服务程序四、中断向量表五、BIOS中断服务六、DOS中断服务七、BIOS功能调用与DOS功能调用的关系考试题型•一、选择题•二、阅读程序并回答问题•三、根据题意完善程序•四、编程题一、选择题:1、在计算机的许多应用场合,人们总是用汇编语言来编制应用程序,原因是汇编语言(1)。
(完整word版)汇编语言知识点总结(word文档良心出品)
![(完整word版)汇编语言知识点总结(word文档良心出品)](https://img.taocdn.com/s3/m/6aaacf67f18583d048645916.png)
汇编语言精简版版权归属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。
汇编期末知识点总结
![汇编期末知识点总结](https://img.taocdn.com/s3/m/043eddc8cd22bcd126fff705cc17552706225e4a.png)
汇编期末知识点总结一、计算机体系结构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字。
汇编语言期末复习总结(完整版)
![汇编语言期末复习总结(完整版)](https://img.taocdn.com/s3/m/832dc440ad02de80d4d84072.png)
〔习题1.24〕说明下列指令中源操作数的寻址方式?如果BX=2000H,DI=40H,给出DX 的值或有效地址EA的值。
(1)mov dx,[1234h] 直接寻址,EA=1234H(3)mov dx,bx 寄存器寻址,DX=2000H(6)mov dx,[bx+di] 基址变址寻址,EA=2040H第2章8086的指令系统〔习题2.1〕已知DS=2000H、BX=0100H、SI=0002H,存储单元[20100H]~[20103H]依次存放12 34 56 78H,[21200H]~[21203H]依次存放2A 4C B7 65H,说明下列每条指令执行完后AX寄存器的内容。
(1)mov ax,1200h AX=1200H(2)mov ax,bx AX=0100H(3)mov ax,[1200h] AX=4C2AH ;偏移地址=1200h(4)mov ax,[bx] AX=3412H ;偏移地址=bx=0100h(5)mov ax,[bx+1100h] AX=4C2AH ;偏移地址=bx+1100h=1200h(6)mov ax,[bx+si] AX=7856H ;偏移地址=bx+si=0100h+0002h=0102h(7)mov ax,[bx][si+1100h] AX=65B7H ;偏移地址bx+si+1100h=0100h+0002h+1100h=1202h〔习题2.2〕指出下列指令的错误(1)mov cx,dl 两操作数类型不匹配(2)mov ip,ax IP指令指针禁止用户访问(3)mov es,1234h 立即数不允许传给段寄存器(DS、CS、SS、ES)(4)mov es,ds 段寄存器之间不允许传送(5)mov al,300 两操作数类型不匹配(6)mov [sp],ax 目的操作数应为[ SI ](7)mov ax,bx+di 源操作数应为[BX+DI](8)mov 20h,ah 立即数不能作目的操作数〔习题2.8〕请分别用一条汇编语言指令完成如下功能:(1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器。
(完整word版)汇编语言考点总结(word文档良心出品)
![(完整word版)汇编语言考点总结(word文档良心出品)](https://img.taocdn.com/s3/m/2906030687c24028915fc3c5.png)
第一章基础知识一、机器语言:即机器指令(机器可以正确执行的命令)的集合。
二、汇编语言的产生:汇编指令是机器指令便于记忆的书写格式,即助记符。
(编译)三、汇编语言的组成:汇编指令(机器码的助记符)、伪指令(由编译器执行)、其他符号(由编译器识别)。
四、存储器:存放指令和数据的地方。
磁盘上的数据不读到内存中就无法被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、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
〔习题1.24〕说明下列指令中源操作数的寻址方式?如果BX=2000H,DI=40H,给出DX 的值或有效地址EA的值。
(1)mov dx,[1234h] 直接寻址,EA=1234H
(3)mov dx,bx 寄存器寻址,DX=2000H
(6)mov dx,[bx+di] 基址变址寻址,EA=2040H
第2章8086的指令系统
〔习题2.1〕已知DS=2000H、BX=0100H、SI=0002H,存储单元[20100H]~[20103H]依次存放12 34 56 78H,[21200H]~[21203H]依次存放2A 4C B7 65H,说明下列每条指令执行完后AX寄存器的内容。
(1)mov ax,1200h AX=1200H
(2)mov ax,bx AX=0100H
(3)mov ax,[1200h] AX=4C2AH ;偏移地址=1200h
(4)mov ax,[bx] AX=3412H ;偏移地址=bx=0100h
(5)mov ax,[bx+1100h] AX=4C2AH ;偏移地址=bx+1100h=1200h
(6)mov ax,[bx+si] AX=7856H ;偏移地址=bx+si=0100h+0002h=0102h
(7)mov ax,[bx][si+1100h] AX=65B7H ;偏移地址
bx+si+1100h=0100h+0002h+1100h=1202h
〔习题2.2〕指出下列指令的错误
(1)mov cx,dl 两操作数类型不匹配
(2)mov ip,ax IP指令指针禁止用户访问
(3)mov es,1234h 立即数不允许传给段寄存器(DS、CS、SS、ES)
(4)mov es,ds 段寄存器之间不允许传送
(5)mov al,300 两操作数类型不匹配
(6)mov [sp],ax 目的操作数应为[ SI ]
(7)mov ax,bx+di 源操作数应为[BX+DI]
(8)mov 20h,ah 立即数不能作目的操作数
〔习题2.8〕请分别用一条汇编语言指令完成如下功能:
(1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器。
(2)用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中。
(3)用BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和CX寄存器的内容相加,并把结果送回存储器中。
(4)用位移量为0520H的直接寻址方式把存储器中的一个字与数3412H相加,并把结果送回该存储单元中。
(5)把数0A0H与AL寄存器的内容相加,并把结果送回AL中。
(1)ADD DX,BX
(2)ADD AL,byte ptr [BX+SI]
(3)ADD [BX+0B2H],CX
(4)ADD WORD PTR [0520H],3412H
(5)ADD AL,0A0H
〔习题2.10〕指出下列指令的错误:
(1)xchg [si],30h xchg的操作数不能是立即数
(2)pop cs 不应对CS直接赋值
(3)sub [si],[di] 两个操作数不能都是存储单元
(4)push ah 堆栈的操作数不能是字节变量
(5)adc ax,ds adc的操作数不能是段寄存器
(6)add [si],80h 没有确定是字节还是字操作
(7)shl [si] ,1 没有指定指向数据的大小
(8)ror dx, al al应该换成cl
〔习题2.22〕假设AX和SI存放的是有符号数,DX和DI存放的是无符号数,请用比较指令和条件转移指令实现以下判断:
(1)若DX > DI,转到above执行
cmp dx,di
ja above ;=jnbe above
(2)若AX > SI,转到greater执行
cmp ax,si
jg greater ;=jnle greater
(3)若CX = 0,转到zero执行
cmp cx,0
jz zero ;=jcxz zero
〔习题2.25〕对下面要求,分别给出3种方法,每种方法只用一条指令。
(1)使CF=0 (2)使AX=0
(1)解答:
clc(清零)
and ax,ax(逻辑操作不会进位)
or ax,ax
(2)解答:
xor ax,ax
and ax,0
mov ax,0
〔习题3.7〕假设myword是一个字变量,mybyte1和mybyte2是两个字节变量,指出下列语句中的错误原因。
(1)mov byte ptr [bx],1000 1000超出了一个字节范围
(2)mov bx,offset myword[si] 寄存器的值只有程序执行时才能确定,而offset是汇编过程计算的偏移地址,故无法确定,改为lea bx,myword[si]
(3)cmp mybyte1,mybyte2 两个都是存储单元,指令不允许
(4)mov al,mybyte1+mybyte2 变量值只有执行时才确定,汇编过程不能计算
(5)sub al,myword 字节量AL与字变量myword,类型不匹配
(6)jnz myword Jnz指令只有相对寻址方式,不支持间接寻址方式
〔〔习题3.10〕画图说明下列语句分配的存储空间及初始化的数据值:
(1)byte_var DB ’ABC’,10,10h,’EF’,3 DUP(-1,?,3 DUP(4))
(2)word_var DW 10h,-5,’EF’,3 DUP(?)
(1)从低地址开始,依次是(十六进制表达):
41 42 43 0a 10 45 46 ff -04 04 04ff -04 04 04 ff -04 04 04
(2)从低地址开始,依次是(十六进制表达):
10 00 FB FF 46 45 ------
〔习题3.11〕请设置一个数据段mydataseg,按照如下要求定义变量:
(1)my1b为字符串变量:Personal Computer
(2)my2b为用十进制数表示的字节变量:20
(4)my4b为用二进制数表示的字节变量:20
(5)my5w为20个未赋值的字变量
(6)my6c为100的常量
(7)my7c表示字符串:Personal Computer
mydataseg segment
my1b db ‘Personal Computer’
my2b db 20
my3b db 14h ;20h
my4b db 00010100b
my5w dw 20 dup(?)
my6c equ 100 ;my6c = 100
my7c equ <Personal Computer>
mydataseg ends
第4章基本汇编语言程序设计
〔习题4.6〕编制一个程序,把变量bufX和bufY中较大者存入bufZ;若两者相等,则把其中之一存入bufZ中。
假设变量存放的是8位无符号数。
.model small
.stack 256
.data
bufx db ?
bufY db ?
bufz db ?
.code
.startup
mov al, bufX
mov bl, bufY
cmp al,bl
ja next
mov bufZ, bl
jmp done
next: mov bufZ, al
done: .exit 0
End
大题
6.编制一个程序,把变量bufX和bufY中较大者存入bufZ;若两者相等。
则将其中之一存。