随笔分类 - 汇编语言
摘要:进制转换 基础知识 寄存器(CPU的工作原理 ax,bx,cx,dx通用寄存器 cs代码段寄存器) 寄存器(内存访问 ds数据段寄存器) 寄存器(内存访问 ss栈段寄存器) 编译器 汇编程序从写出到最终执行的过程 [bx]和loop指令 包含多个段的程序 更灵活的定位内存地址的方法 数据处理的两个基
阅读全文
摘要:一、单项选择题(每小题1 分,共20 分) 1. 设段地址和偏移地址是3F4BH : 00C7H,那么它所对应存储单元中的物理地址是(C)。 A. 3F4B7H B. 3F598H C. 3F577H D. 3EB76H 2. 在下列段寄存器中,堆栈段寄存器是(D)。 A. ES B. CS C.
阅读全文
摘要:一、单项选择题(每小题1 分,共20 分) 1. 在下述指令的表示中,不正确的是(C)。 A. PUSH 54[DI] B. MOV AX,[BX] NUM[SI] C. MOV AX,[BX+BP+NUM] D. AND DH,DL 2. 已知(AX)=875BH,执行下述三条指令后,(AX)=(
阅读全文
摘要:一、单项选择题(每小题1 分,共20 分) 1. 指令ADD AX,[3500H]中,源操作数使用的寻址方式是(A)。 A. 直接寻址 B. 寄存器寻址 C. 寄存器相当寻址 D. 立即寻址 2. 条件转移指令JZ 产生转移的测试条件是( )。 A. ZF=0 B. ZF=1 C. ZF=1 或CF
阅读全文
摘要:端口的读写 对端口的读写不能用mov、push、pop等内存读写指令。 端口的读写指令只有两条:in和out,分别用于从端口读取数据和往端口写入数据。 访问内存:mov ax,ds:[8];假设执行前(ds)=0 执行时,与总线相关的操作: ① CPU通过地址线将地址信息8发出; ② CPU通过控制
阅读全文
摘要:标志寄存器 flag 和其他寄存器不一样,其他寄存器是用来存放数据的,都是整个寄存器具有一个含义。 而flag寄存器是按位起作用的,也就是说,它的每一位都有专门的含义,记录特定的信息。 8086CPU的flag寄存器的结构: ZF标志 flag的第6位是ZF,零标志位(zero flag)。 它记录
阅读全文
摘要:一、ret 和 retf 我们用汇编语法来解释ret和retf指令,则: CPU执行ret指令时,相当于进行: pop IP CPU执行retf指令时,相当于进行: pop IP(一般IP都是在低位地址的) pop CS(CS在高位地址) 二、call指令 CPU执行call指令,进行两步操作: (
阅读全文
摘要:操作符offset 操作符offset在汇编语言中是由编译器处理的符号,它的功能是取得标号的偏移地址([bx,bp,si,di])。示例:使该程序在运行中将s处的一条指令复制到s0处。 jmp指令 jmp为无条件转移,可以只修改IP,也可以同时修改CS和IP;jmp指令要给出两种信息: 转移的目的地
阅读全文
摘要:1. 指令MOV AX,COUNT[SI],它源操作数的寻址方式是(B)。 A. 直接寻址 B. 寄存器相对寻址 C. 寄存器间接寻址 D. 基址变址寻址 2. 下列4 条指令中,错误的指令是( )。 A. SHR AX,1 B. MOV AX,ES: [DX] C. SUB CX,AX D. AD
阅读全文
摘要:一、选择题 1. 指令指针寄存器是(C)。 A. BP B. SP C. IP D. PSW 1 BP寄存器是用来直接对栈进行寻址的,一般配合SS(栈段寄存器)一起用 2 SP寄存器是栈指针,SP始终指向栈顶(push操作时先将sp+2然后在放入数据,push操作时先将数据取出然后将sp-2) 3
阅读全文
摘要:bx、si、di、bp 1、在8086CPU 中,只有这4个寄存器(bx、bp、si、di)可以用在“[…]” 中来进行内存单元的寻址。 2、在“[…]” 中,这4个寄存器(bx、bp、si、di)可以单个出现,或只能以四种组合出现: bx和si、bx和di、bp和si、bp和di 3、只要在[…]
阅读全文
摘要:and和or指令 1、and指令 将2进制中的1当做真,2进制中的0当做假 则:只有2个事件都为真的时候才为真,即1&&1==>1,1&&0==>0,0&&0==>0; 用处:假如想把一个数的第7位变成0,让它和01111111B执行与操作就好了 2、or指令 只要2个事件中有1个是真即为真,即1|
阅读全文
摘要:多个段在一起 问题:利用栈,将程序中定义的数据段数据逆序存放。 由于是在代码段定义的数据和栈所以他们都在一起会显得很乱。不信你看下面的题就知道了 将数据、代码、栈放入不同的段 将各个段全部放在一起主要有两个问题:(1)把它们放到一个段中使程序显得混乱;(2)前面程序中处理的数据很少,用到的栈空间也小
阅读全文
摘要:[bx] 由于在编译器中mov AX,[0]指令会被编译器认为是mov AX,0所以引入[bx]的概念 mov [bx],AX的意思是将(ds)*16+(bx)内存位置的值赋给AX 用法和之前的ds[address]一样 小Tips Loop指令(循环) 指令的格式是:loop 标号,CPU 执行l
阅读全文
摘要:一个汇编语言程序从写出到最终执行的简要过程: 编写--〉编译--〉连接--〉执行 1、编写 notepad++选择Assembly编写程序,保存成xx.asm,样式如下 2、编译 程序经过编译后成为可执行文件 编译方法 进入DOS方式(cmd),进入 C:\masm 目录,运行masm.exe。如果
阅读全文
摘要:一个汇编语言程序从写出到最终执行的简要过程: 编写--〉编译--〉连接--〉执行 1、编写 notepad++选择Assembly
阅读全文
摘要:一、栈的基本概念 栈有两个基本的操作:入栈和出栈。入栈:将一个新的元素放到栈顶;出栈:从栈顶取出一个元素。栈顶的元素总是最后入栈,需要出栈时,又最先被从栈中取出。栈的操作规则:后进先出 8086CPU提供的栈机制 8086CPU提供入栈和出栈指令: (最基本的) PUSH(入栈) POP (出栈)p
阅读全文
摘要:在内存中字的存储 这段话的主要意思是:一个字=2B=16bit,CPU中是用两个内存单元储存一个字(假如获取0地址存放的字型数据,就是获取它的高位字节0+1位和低位字节0位的数据,数据由高地址位向低地址位读) 问题: (1)0地址单元中存放的字节型数据是多少? # 20H(2)0地址字单元中存放的字
阅读全文
摘要:寄存器 一个典型的CPU由运算器、控制器、寄存器等器件组成,这些器件靠内部总线相连。(外部总线是上一篇博客说的内存总线,数据总线,控制总线) 内部总线实现CPU内部各个器件之间的联系。 外部总线实现CPU和主板上其它器件的联系。 CPU中主要的部件是寄存器,寄存器是CPU中我们可以使用指令读写的部件
阅读全文
摘要:存储器(内存) CPU 是计算机的核心部件.它控制整个计算机的运作并进行运算,要想让一个CPU 工作,就必须向它提供指令和数据。 在一台PC机中内存的作用仅次于CPU。 离开了内存,性能再好的CPU也无法工作。磁盘不同于内存,磁盘上的数据或程序如果不读到内存中,就无法被CPU 使用。 存储单元 存储
阅读全文