汇编语言笔记 - 图文

更新时间:2023-12-22 21:58:02 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

汇编笔记

计算机的定义:

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 ideas.computers 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. 微处理器如何获取指令

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 .

第一章

1.1.1计算机算计的定义

计算机室一种能偶按照事先存储的程序,自动、快速、准确地进行大量数值计算和各种信息处理的现代化智能电子设备

依冯。偌依曼机制,计算机由五大部件组成,即运算器,控制器、存储器、输入设备、输出设备。

1.1.2计算机的特征 1)运算速度快 2)计算精度高 3)记忆功能强

4)具有逻辑判断能力 1.2计算机系统组成

计算机系统由硬件和软件两大部分组成 1.2.1计算机硬件

计算机硬件由控制器、运算器、存储器、输入设备和输出设备组成。 存储器分为内存储器和外存储器。 1) 运算器

注意ALU(Arithmetic Logic Unit) 2) 存储器(主存储器) 3) 控制器 4) 输入设备 5) 输出设备

1.4.1 8086的寄存器

8086是Intel公司推出的第一个16位的微处理器,它由两个具有紧密联系的部件,执行部件EU(Executive Unit)和总线接口部件BIU(Bus Interface Unit)构成,其内部逻辑结构如下图。8086的外部具有20根地址总线,可直接寻址的存储器空间达2^20=1MB.

8086中程序科访问的寄存器共有14个,按功能可分为通用寄存器组,段寄存器组和专用寄存器组。

1)通用寄存器组。 8个,分为两组

一组是数据寄存器(4个): AX(Accumulator):累加寄存器,常用于运算,在乘除指令中指定用来存放操作数(运算结果);另外,所有的I/O指令都使用这一寄存器与外界设备传送数据。 MUL BL -------------> AX = BL * AL

BX(Base):基址寄存器,常用于地址索引。 CX(Count):计数寄存器,常用于计数.。 DX(Dat):数据存储器,常用于数据传递。

特点:这4个16位寄存器可分为高8位:AH、BH、CH、DH以及低8位:AL、BL、CL、DL。 Mov AX,BX ○√ Mov AL,AH○√

另一组是指针寄存器和变址寄存器,包括:

SP(Stack Pointer):堆栈指针寄存器,与SS配合使用,可指向目前的堆栈位置。 BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置。 SI(Source Index):源变址寄存器,可用来存放相对于DS段之源变址指针。 (Si、Di对首地址的存储)

DI(Destination Index):目的变址寄存器,主要用来存放相对于ES段之目前的变址之址指针。 这4个16位寄存器只能按16位进行存取操作,主要用来形成操作数的地址,用于在堆栈操作和变址运算中计算操作数的有效地址 2)段寄存器(Segment Register)

4个16位段寄存器,专门用来保存段地址:

CS(Code Segment):代码段寄存器,存放当前正在运行的程序。

DS(Data Segment):数据段寄存器,数据段存放当前运行程序所有的数据,。 SS(Stack Segment):堆栈段寄存器,堆栈段定义了堆栈的所在区域。 ES(Extra Segment):附加段寄存器。

由于段寄存器都是16位的,所有只能在可寻址空间小于64KB的情况下被设成任意大小。 3)专用寄存器组

包括指令指针IP(Instruction Pointer) 和标志寄存器FR(Flag Register) IP:16位专用寄存器,它指向当前需要取出的指令字节。如下

IP=PC{pc+1->pc pc +n->pc}

注意,IP指向的是指令地址的段内地址偏移量,又称偏移地址(Offset Address)或有效地址EA(Effective Address)。

FR:=PSW。FR有16位,其中有意义的有9位-----6位状态位,3位是控制位。具体含义如下。(16=9+7(没有意义),9=6个状态位+3个控制位)

OF,溢出标志位。反映有符号数加减运算所得结果是否溢出。溢出,OF=1,否则OF=0. DF,方向标志,该位用来决定在串操作指令执行时有关之争寄存器指向高地址或低地址的方向。

IF:中断允许标志,该为用来决定CPU是否响应其外部的可屏蔽中断发出的中断请求具体如下

TF:跟踪标志TF,改位可用于程序调试。TF=1,则CPU处于但不执行指令的工作方式,此时每执行完一条指令,就显示CPU内各个寄存器的当前值及CPU将执行下一条指令;TF=0,则处于连续工作模式。

SF:符号标志,该位用来反映运算结果的符号位,它与运算结果的最高位相同。在微机系统中,有符号数采用补码表示法,。运算结果位正数,SF=0;负数,SF=1.

ZF:零标志位,该位用来反映运算结果是否为0。如果为0,ZF=1;否则ZF=0。 AF:下列情况下,辅助仅为标志AF的值被置为1,否则为0: 1:在字操作时,发生低位字节向高位字节进位或借位时; ○

2:在字节操作时,发生低4位向高4位进位或借位时。 ○

当AF=1时要加6 08+09

00001000 +00001001

00010001 (对字节操作,进位了) +00000110

00010111

所以最后答案是(00010111)=17

PF:奇偶标志,该位用于反映运算结果中“1”的个数的奇偶性。如果“1”的个数为偶数,则PF的值位1,否则为0. 校验码=数据+校验位(PF)

11001100 1 奇校验:使“1”的个数为奇数 11001100 0 偶校验:使“1”的个数为偶数

CF:进位标志位,该位主要用于反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则为0。 例题:

10101010 11111100 +11100000 01111000

110001011 01110100

SF=0;ZF=0; PF=1; AF=1; CF=1; OF=0;

+B(A表示次高位向高位进位,B表示最高位向前进位) 注意:OF=A○

1.4.2 8086存储器寻址

物理地址:为了正确地存储信息,每个字节单元赋予一个唯一的存储器地址,称为~。

注意:

1 低地址存放低字位数据,高地址存放高字位数据 ○

2&a,&x,&y取得地址是首地址 ○

3偶地址开始存放数据 ○如:

于是有:

按字节访问:(10000H)=9FH,(10001H)=26H; 按字访问:(1000H)=269FH,(10001H)=4826 1.4.2.1 实模式存储器寻址 1.存储器地址的分段

(1)实模式下允许的最大寻址空间为1MB

(2)采用存储器地址分段方法解决在16位字长的及其里提供20位地址的问题。 即:

每16个字节为一小段,共有64K个小段 段起始地址:小段的首地址

00000H ~ 0000FH 00010H ~ 0001FH 00020H ~ 0002FH ............................ FFFF0H ~ FFFFFH 可以看出小段的首地址的最后一位都是0,可以省去。

(3)物理地址的形成

物理地址=段地址X16D+偏移地址 例题:

当CS=1550H,DS=25A0H,ES=2AA0H,SS=8550H,某数据的偏移地址为0204H

1给出各个段的分布图 ○

2给出各个段的首地址 ○

3给出改数据的物理A ○解: 1 ○

2首地址:CS:15500H(=15500H+64K) ○

DS: 25A00H

ES:2AA00H

SS:85500H

3物理A=1550H X 2^4 + 0204H = 15500H + 0204H = 15704H ○

第四章 指令、系统和寻址方式 4.1指令系统的基本概念 4.1.1指令系统及计算机语言

Instruction = operation + Data 即:指令=操作码+地址码

1一条指令就是计算机机器语言的一个语句,是程序设计中最小的语言单元。

2一条计算机指令时用一串二进制代码表示的,它通常应包括两方面的信息:操作码和地址码

3从计算机组成的层次结构来说,计算机的指令有伪指令、机器指令及宏指令之分。微指令是指微程序级的命令,它属于硬件;宏指令是指若干条机器指令组成的软件指令,它属于软件。即微指令有取微指令,分析微指令,执行微指令的操作,而宏指令指的是串处理。 4复杂指令系统计算机(CISC)和精简指令系统计算机(RISC) CISC:这类计算机的指令属于增强指令功能,它设置功能复杂的指令,而且是面向目标代码,高级语言和操作系统的。在这类计算机中,用一条指令代替一串指令。 RISC:只保留简单的指令。这类计算机中功能较复杂的指令用子程序来实现

4.1.2对指令系统的功能性要求

一个完善的指令系统应满足四方面的要求:完备性,有效性,规整性,兼容性 4.2指令格式(=操作码+地址码)

指令格式一般如下几种:

1)多字长指令:在于提供足够的地址位来解决访问内存任何单元的寻址问题。其主要缺点是

必须两次或多次访问内存以取出一整条指令,降低了CPU的运算速度,又占用了更多的存储空间。 2)等长指令:各种指令字长长度是相等的。这种指令另字结构简单,且指令字长度是不变的。其中又包括:

半字长指令:指令字长与班个机器字长相等的指令称作半字长指令; 单字长指令:指令字长与机器字长相等的指令称作单字长指令; 双字长指令:指令字长与两个机器字长相等的指令称作双子长指令。

3)变长指令:各种指令字超度岁指令功能而异。结构灵活,能重逢利用指令长度,但指令的控制复杂。

指令格式设计的一般尊则如下:

1 指令字长要短,以得到时间和空间上的优势。 2 指令字长必须有足够的长度。

3 指令字长一般应是字节的整数倍以便存储系统的管理。

4指令格式的试剂还与如何选定指令中操作数地址的位数有关。

4.2.2操作码

指令系统中指令的个数N与操作码的位数n必须满足:N≤2^n.例如,一个指令系统只有8条语句,那么有3为操作码就够了;如果有32条指令,那么就需要5位操作码

4.2.3地址码

1)零地址指令的指令字中只有操作码,没有地址码。这种指令有两种功能:第一种,无需任何操作数,如放空操作指令,停机指令等;第二种,所需的操作数十默认,比如堆栈的操作。

2)一地址指令常称为单操作数指令,如加1、减1、位移等。通常这种指令以运算器的累加寄存器AC中的数据被被操作数,指令字的地址码字段所知名的属为操作数,操作结果又放回累加寄存器AC中

(AC) OP A ->AC

其中,OP表示操作性质;(AC)表示累加寄存器AC中的数;(A)表示内存中地址为A的存储单元中的数或运算器中地址为A的通用寄存器的数;->表示吧操作(运算)结果传送到制定的地方。

3)二地址指令常称为双操作数指令,它的另个地址码字段分别知名草鱼操作的两个数在内存中或运算器中通用寄存器的地址,A1做存放操作结果的地址。

(A1) OP (A2) ->A1

例如:ADD AX,BX ->AX=AX + BX 4)三地址指令中有操作数地址

(A1) OP (A2) ->A3

其中,A1为被操作数地址,也称源操作数地址;A2为操作数地址,也称重点操作操作数地址;A3为存放结果的地址。例如: ADD X,Y ,Z 含义为(Y)+(Z)->X

4.3寻址方式

4.3.1指令寻址方式

1 指令{ PC+1->PC,PC+n->PC} ○

2数据。 注:若没有特殊说明,在考试时提到的寻址是对数据的寻址 ○

寻址方式有:顺序寻址方式,跳跃寻址方式 5.3.2操作数寻址方式 1)隐含寻址:在指令中不明显地给出二十隐含着的操作数的地址。例如:单地址的指令格式。 2)立即寻址:指令的地址之处的不是操作数的地址,而是操作数本身。例如:MOV AX,0006H。 3)直接寻址

特点:在指令格式的地址字段中直接指出操作数在内存的地址D。例如:MOV AX,[2000H]。 4)间接寻址

间接寻址的情况下,指令地址字段中形式地址D不是操作数的真正地址,而是操作数地址的指示器,D单元的内容才是操作数的有效地址。

例如: AAAA: MOV AX,[BX]

INC BX INC BX JMP AAAA

5)寄存器寻址方式和寄存器间接方式

当操作数不放在内存中,而是放在CPU的通用寄存器中是,可采用寄存器寻址方式。此时指令中给出的操作数地址不是内存的地址单元号,而是通用寄存器的编号。例如:MOV AX,BX,这条指令的源操作数和目的操作数都是寄存器寻址方式。

寄存器简介寻址方式与寄存器寻址方式的区别自语:指令格式中的寄存器内容不是操作时,而是操作数的地址,该地址知名的操作数在内存中。比如,MOV AX,[BX],这条指令的源操作数就是寄存器简介寻址方式,它的含义是以BX寄存器的内容为地址,到内存中取出该单元的内容传送到AX寄存器 6)相对寻址方式:

就是把程序计数器PC的内容加上指令格式中的形式地址D而形成操作数的有效地址。程序计数器的内容就是当前指令的地址。“相对”地址,就是相对于当前指令的地址而言。采用相对寻址方式的好处是:程序员无需用指令的绝对地址编程,所编程序可以放在内存中任何地方。 7)基址寻址方式

是将CPU中机制寄存器的内容加上指令格式中的形式地址而形成操作数的有效地址。它的优点是可以扩大寻址能力。 8)变址寻址方式

变址寻址方式与级之后寻址方式计算有效地址的方法很相似,它把CPU中某个变址寄存器的内容与偏移量D相加来形成操作数有效地址。但是用变址寻址方式的目的不在于扩大寻址空间,而在于实现程序快的规律性变化。

4.3.3 8086寻址方式 4.3.3.1数据寻址方式 Debug:

U:Unassemble 反汇编 A:assemble会变

T:trace 但不运行(跟踪方式) G:go 连续运行

R:register 显示/修改R 1.立即数寻址方式

操作时直接包含在指令中,紧跟在操作码之后的寻址方式。 例如:MOV AL,0FFH; MOV AX,1234H 例如:MOV AX,3064H; (AX)=3064H 2.寄存器寻址

操作数放在CPU的内部寄存器(reg)中,这些寄存器可以是:8为寄存器AH、BH、CH、DH、AL、BL、CL、DL;16位寄存器AX、BX、CX、DX、SI、DI、BP、SP;四个段寄存器seg:CS、DS、SS、ES。注意:源寄存器和目的寄存器的位数必须一致。

MOV AX, BX MOV AL, BL

MOV AX, BL ○X

3.存储器寻址方式

1)直接寻址方式:操作数放在存储区单元中,而这个存储单元的有效地址就在指令的操作码之后

例如:MOV AX,[0200H]; MOV BL,[0200]H 2)寄存器简介寻址方式:有效地址存放在机制寄存器BX,BP中或变址寄存器SI、DI中。

例如:MOV AX,[BX];MOV AX,[SI];

例:MOV AX,[BX] , 如果(DS)=3000H,(BX)=1010H,(31010H)=12H,(31011H)=24H。执行完后(AX) = 2412H。如图

注意:A)不允许 使用AX、CX、DX存放EA。如MOV AX,[CX]是错误的 B)SRC和DST的字长一致,MOV DL,[BX];[BX]表示一个字节单元;MOV DX,[BX];[BX]表示一个字单元

C)该寻址方式适用于数组,字符串,表格的处理 D)可以使用段跨越前缀,例如:MOV AX,ES:[BX] 3)寄存器相对寻址

即:当AL<80H => AX=00AL;当AL>=80H => AX=FFAL 例:

AL: 01101100 | BL: 1001110

=> 00000000 01101100 | => 11111111 1001110 若AL里最高位是0,前面全加0;最高位为1,前面全加1. 指令格式:CWB

执行操作:AX->(DX, AX)

若(AX)的最高有效位为0,则(DX)=0000H 若(AX)的最高有效位为1,则(DX)=FFFFH 这类操作需注意:

① 无操作数指令

② 隐含对Al或AX进行符号扩展 ③ 不影响条件标志位

4.5.2算出运算指令 1) 加法指令 操作码 操作工呢 ADD 加法 ADC 带进位加法 INC 增量 ADD和ADC是双目运算,INC是单目运算 例:AX=8090,BX=0203,CX=7963,DX=ABCD。执行ADD AX,BX;ADD CX,DX

=> AX=8293,BX=02203,CX=2530(CF=1),DX=ABCD

注意:除INC指令不影响CF标志外,其余指令均对条件标志位有影响。 例:MOV AX,FFFF

INC AX =>AX=0000H,CF不变 加法指令对条件标志位的影响

SF={1, 结果为负;0,否则} ZF={1,结果为0;0,否则} CF={1,和的最高有效位有向高位的进位;0否则}

OF={1,两个操作数符号相同,而结果符号与之想法;0否则} CF位表示无符号数相加的溢出; OF位表示带符号数相加的溢出。

例题:32位的操作数相加:AX=8090,BX=0203,CX=7963,DX=ABCD。

ADD CX,DX 8090 7963 ADC AX,BX ==> + 0203 ABCD

2) 减法指令 操作码 操作功能 SUB 减法 SBB 带借位减法 DEC 减1 NEG 求补 CMP 比较 SUB AX,BX ==> AX-BX->AX SBB CX,DX ==> CX-DX-CF ->CX

例题:AX=0102,BX=0304,CX=0506,DX=0708

SUB AX,BX ==> AX=FDFE(CF=1) SUB DX,CX ==> DX=0202

32位操作数:SUB AX,BX 0708 0101

SBB DX,CX ==> -0506 0304

注意:除DEC指令不影响CF标志外,其余指令均对条件标志位有影响。 DEC:

MOV AX,0000

DEC AX ==>AF=FFFFH CF不影响 NEG:求补 0-X => X

CMP:CMP AX,BX 不送结果,只音响标志位,即CF 例:AX=0102,BX=0304,CX=0506,DX=0708

CMP BX,CX =>BX=0304H CF=1 3) 乘法指令

MUL BL(源操作数)

字节:AL*源操作数->AX 字:AL*源操作数->DX,AX MUL BL,AL => AL*BL->AL

MUL BX,AX =>AX*BX->DX,AX 例题:AX=FDFE, BX=0304

MUL BL => AX=04*FE=03F8,BX=0304 IMUL BL => AX=FFE0 注意:对IMUL

① 符号用异或求 ② 再求真值 ③ 在进行乘

4) 除法指令

字节:AX<--被除数

源操作数<--除数 AH<--余数 AL<--商

字: DX,AX<--被除数

源<--除数 DX<--余数 AX<--商

例题: AX = 000b,BX=0002 DIV BL ==> AX=0105 5) 十进制调整指令

4.5.3逻辑运算指令 1) 逻辑运算指令

例题:

① MOV AX,0102 AND AX,00FF ==>AX=0002 ② MOV AX,0102

OR AX,00FF ==>AX = 01FF ③ AX=0105

NOT AX ==> AX=FEFA 注意:NOT不影响标志位

x ④ XOR AX,AX ==> AX=0000; MOV AX,AX ○

XOR AX,FFFF ==> AX=? XOR AX,0000 ==> AX=?

⑤ TEST只进行与源操作数运算,不送结果,只影响FR中相关值

TEST AX,0001 1 (AX = 0101)

S 0001 0001 2 (AX = 0202)

S 0001

FR=1

0000 ZF=1 说明AX中的数一定为偶数

2) 位移指令

① 逻辑位移指令

√ SHL AL,1○X SHL AL,2○

√ {MOV CL,3;SHL AL,CL} ○

√ SHL AX,CL○X MOV AX,CL○

{MOV AL,0002H;MOV CL,3,;SHL AL,CL} ==>AL=10H 注意:该指令可用于无符号数乘2或除2操作 ② 算数位移指令

(保持这个数的最高位不变,最高位为1,补1,为0,补0) {MOV AL,88H;SAR AL,1} ==>AL= C4H

注意:有符号位可对补码做乘2或除2操作 ③ 循环你位移指令 ROL不带进位的循环左移 ROR不带进位的循环右移 RCL带进位的循环左移 RCR带进位的循环右移 例: MOV AL,55 1365:010e: ROR AL,1

JMP 010e

例:MOV AL,8

MOV BX,1002H MOV DX,1000H

AAAA: SUB BX,DX

RCR AL,1 DEC BX JMP AAAA

4.5.5程序控制类指令 1) 无条件转移指令(JMP) 2) 条件转移指令

例题:MOV AL,08H

MOV BX,1002 MOV DX,1000 AAAA:DEC BX

CMP BX,DX JNZ AAAA

3) 子程序调用和返回指令

① CALL调用指令 ② RET返回指令 4) 循环指令 LOOP:

CX-1-->CX CX 不等于0

例题:MOV CX,110 AAAA:MOV AX,BX

INC BX

LOOP AAAA

MOV DX,AX

LOOPZ:

CX-1-->CX CX 不等于0

ZF=1(或CX不等于0,ZF=0) LOOPNZ:

CX-1-->CX CX 不等于0 ZF=0 5) 中断指令和中断返回指令 例题:MOV AX,DATA

MOV DS,AX MOV DL,38H MOV AH,02 INT 21H

MOV AX,4CH INT 21 H

输出 ‘8’

例题:Data segment

num1 DW 1111H, 2222H, 3333H, 55555H num2 DW 9999H, 0FF00H, 0EE00H, 6666H buff DW 5 DUP(?) Data ends Code segment

Assume CS:code DS: Data ADD64 PROC FAR Begin: MOV AX,Data MOV DS,AX LEA BX,num1 MOV AX,[BX] ADD AX,[BX+8]

MOV word PTR[BX+16],BX INC BX INC BX

MOV AX,[BX] ADC AX,[BX+8]

MOV word PTR[BX+16],AX INC BX INC BX

MOV AX,[BX] ADC AX,[BX+8]

MOV word PTR[BX+16],AX INC BX INC BX

MOV AX,[BX] ADC AX,[BX+8]

MOV word PTR[BX+16],AX MOV AX,0 ADC AX,0

MOV word PTR[BX+12H],AX MOV AH,4CH INT 21H ADD64 erdp Code ends

End Begin

第三章 运算方法和运算器

3.1定点加减运算

补码加减法运算(重点)(P50-52)

+6FH -6FH

原码: 01101111B 11101111B 反码: 01101111B 10010000B 补码: 01101111B 10010001B 补码加、减法规则:[X]补+[Y]补=[X+Y]补 [X]补+[-Y]补=[X-Y]补 [X]补=01001 [Y]补=10001

==> [X+Y]补= 11010 [X-Y]补=11000 (注:注意求模) 1. 溢出判断 所谓溢出,是数据计算结果超过计算机所能表示的实际范围。对于n位的二进制码表示的补码整数(符号位占一位),它可表示的数据范围为 -2^n-1~2^n-1 -1.

若结果超出了允许表示的最大正数时,产生的溢出称为上溢出(正溢出);若结果超过了允许表示的最小负数时,产生的溢出称为下溢出(负溢出)。在运算器中应设有溢出判别线路和溢出标志位。(P52) (1)单符号位方法

OF=Cn异或Cn-1 Cn、Cn-1中当只有一个产生进位时溢出。

3.移位运算 (1)算术移位

在带符号数的移位中,无论正数还是负数,移位后符号不变,数值变化。 移位规则:正数:左移右移都补0. 负数:原码左移右移都补0 反码左移右移都补1 补码左移补0,右移补1 (2)逻辑移位

无数值意义的二进制代码,只是位置变化 左移低位补0,右移高位补0 (3)循环移位

循环左移,最高位移至最低位,其他依次左移。 循环右移,最低位移至最高位,其他依次右移。 (注:以上内容详见P54) 4.原码一位乘(重点)空间上 在定点计算机中,两个原码表示的数相乘的运算规则是:乘积的符号由两位输的符号按异或运算得到,而乘积的数值部分则是两个正数相乘之积。(详见P54—56) 原码二位乘(重点)时间上(详见P57-58) 5.补码一位乘

布斯算法思想:相乘二数用补码表示,它们的符号位与数值位一起参与乘法运算过程,直接得出用补码表示的乘法结果,且正数和负数同等对待。(了解即可) (1)补码一位乘运算规则

7.原码一位除(P66-67)

恢复余数法(P67-68)

加减交替法(不恢复余数法)P68-70 ( Ri+1 = 2*Ri-y > 0 1 -->商 (Ri+1 = 2*Ri-y <0 0 -->商 Ri+1= (Ri+1 + y)<--恢复 =2*(Ri+1+y)-y

=2*Ri+1+y <--- 左移一位+y

8.补码一位除

补码除法的被除数、除数用补码表示,符号位和数值位一起参加运算,商的符号位与数值位由统一的算法求得 为了避免溢出,商的绝对值不能大于1,即被除数的绝对值一定要小于除数的绝对值 (注:详见P70-71) 商的校正

补码一位除法的算法是在商的末位“恒置1”的舍入条件下推导的。(P71)

二、运算器的组成(红色字体为重点)

1、算术逻辑运算单元ALU(Arithmetic Logic Unit)

ALU主要完成对二进制数据的定点算术运算(加减乘除)、逻辑运算(与、或、非、异或)以及移位操作。

通常ALU是由两个输入端、一个输出端和多个功能控制信号端组成的逻辑部件。

2.浮点运算单元FPU(Floating Point Unit)

3.通用寄存器组(详见P77)

运算器内设有若干通用寄存器,构成通用寄存器组;通用寄存器组是一组最快的存储器,用于暂时存放参加运算的数据和某些中间结果。通用寄存器的数量越多,对提高运算器性能和程序执行速度越有利。通用寄存器组是对用户开放的,用户可以通过指令去使用这些寄存器。在运算器中用来提供一个操作数并存放运算结果的通用寄存器称为累加器。---->AX 寄存器

4.专用寄存器(详见P77)

程序状态字PSW(Program Status Word),它存放着指令执行结果的某种状态(如是否溢出、是否为零、是否有进位/借位、是否为负等),它对程序员是开放的。

三、浮点运算

浮点加减法运算

两浮点数进行加减法的预算规则: (详见P87) 浮点加减法运算的操作过程: 0操作数的检查 对阶

尾数进行加减运算 ④ 结果规格化 ⑤ 舍入处理 ⑥ 溢出判断

第九章 汇编语言程序设计

1. 老师提供代码: 分支:

Table Segment

Bratable DW Routine1, Routine2, Routine3,...Routine 6 Table ends Code Segment

Assume CS:code, DS:Table Main PROC FAR MOV AX,Table MOV DS,AX LEA BX,Bratable MOV AH,01H INT 21H SUB AL,30H MOV CH,6 MOV CL,0 NEXT: INC,CL CMP CC,AL

JZ go_run INC BX INC BX DEC CH JNZ NEXT JMP continue

go_run: JMP word PTR[BX] Routine1: 1 Routine2: 1 ?

Routine6

MOV AH,4CH INT 21H

Main end code ends end Begin

(注:留意看例题9.5 P318-320 及多重循环设计p325-328)

本文来源:https://www.bwwdw.com/article/esg5.html

Top