文档视界 最新最全的文档下载
当前位置:文档视界 › 期末复习-汇编语言各章总结

期末复习-汇编语言各章总结

期末复习-汇编语言各章总结
期末复习-汇编语言各章总结

汇编语言学习笔记

《汇编语言》--王爽

前言

学习汇编目的:充分获得底层编程体验;深刻理解机器运行程序的机理。

原则:没有通过监测点不要向下学习;没有完成当前实验不要向下学习。

第一章基础知识

有三类指令组成汇编语言:汇编指令;伪指令;其他符号。8bit = 1byte = 一个存储单元有n根地址线,则可以寻址2的n次方个内存单元。

1.1节 --1.10节小结

(1)汇编指令是机器指令的助记符,同机器指令一一对应。

(2)每一种cpu都有自己的汇编指令集。

(3)cpu可以直接使用的信息在存储器中存放。

(4)在存储器中指令和数据没有任何区别,都是二进制信息。

(5)存储单元从零开始顺序编号。

(6)一个存储单元可以存储8个bit,即八位二进制数。

(7)每一个cpu芯片都有许多管脚,这些管脚和总线相连。也可以说,这些管脚引出总线。一个cpu可以引出的三种总线的宽度标志了这个cpu不同方面的性能。地址总线的宽度决定了cpu的寻址能力;数据总线的宽度决定了cpu与其他器件进行数据传送时的一次数据传送量;控制总线的宽度决定了cpu对系统中其他器件的控制能力。

监测点:1KB的存储器有1024个存储单元?存储单元的编号从0到1023.

内存地址空间:

最终运行程序的是cpu,我们用汇编编程时,必须要从cpu的角度思考问题。对cpu来讲,系统中的所有存储器中的存储单元都处于一个统一的逻辑存储器中,它的容量受cpu

寻址能力的限制。这个逻辑存储器即是我们所说的内存地址空间。

第二章寄存器(cpu的工作原理)

mov ax, 2

add ax, ax

add ax, ax

add ax, ax

(1)cpu中的相关部件提供两个16位的地址,一个称为段地址,另一个称为偏移地址;

(2)段地址和偏移地址通过内部总线送人一个称为地址加法器的部件;

(3)地址加法器将两个16位地址合成为一个20位的物理地址;

(4)地址加法器通过内部总线将20位物理地址送人输入输出控制电路;

(5)输入输出控制电路将20位物理地址送上地址总线;

(6)20位物理地址被地址总线传送到存储器;

段地址*16+偏移地址 = 物理地址的本质含义

内存并没有分段,段的划分来自cpu。

以后编程时可以根据需要,将若干地址连续的内存单元看做一个段,用段地址*16定位段的起始地址,用偏移地址定位段的内存单元。

一个段的起始地址一定是16的倍数,一个段的最大长度为64kB。当然也没有办法定义一个起始地址不是16的倍数的段。

cpu可以用不同的段地址和偏移地址形成同一物理地址。

在8086cpu加电启动或复位后cs和ip被设置为cs = f000h,ip = ffffh,即ffff0h单元中的指令是8086pc机开机后执行的第一条指令。(??应该是fffffh吧??)

cpu将cs:ip指向的内存单元看做指令。

在cpu中,程序员能够用指令读写的部件只有寄存器,程序员可以通过改变寄存器中的内容实现对cpu的控制。

mov指令称为传送指令,cpu中大部分寄存器的值都可以通过mov指令改变。

除了cs:ip 8086没给他这样的功能。

cs:ip可以用转移指令来改变。jmp

jmp cs:ip 用指令给出的段地址修改cs,偏移地址修改ip

jmp 某一寄存器的功能为:用寄存器中的值修改ip

jmp ax 含义类似于mov ip,ax

段地址在8086pc机的段寄存器存放。当8086cpu要访问内存时,由段寄存器提供内存单元的段地址。8086cpu有四个段寄存器,其中cs用来存放指令的段地址。

cs存放指令的段地址,ip存放指令的偏移地址。

8086机中,任意时刻,cpu将cs:ip指向的内容当作指令执行。

8086cpu的工作过程:

1.从cs:ip指向内存单元读取指令,读取的指令进入指令缓冲器;

2.ip指向下一条指令

3.执行

8086提供转移指令修改cs:ip的内容

debug的使用

查看,修改cpu中寄存器的内容:r命令

查看内存中的命令:d命令

修改内存中的内容:e命令(可以写入数据,指令,在内存中,它们实际上没有区别)

将内存中的命令解释为机器指令和相应的汇编指令:u命令

执行cs:ip指向的内存单元处的命令:t命令

以汇编指令的形式向内存中写入指令:a命令

第三章寄存器(内存访问)

3.1内存中字的存储

高八位存放在高字节中,低八位存放在低字节中

3.2DS和【address】

3.3字传送

3.4MOV ADD SUB

3.5数据段

3.6栈

栈是一种具有特殊的访问方式的存储空间。它的特殊性就在于,最后进入这个空间的数据,最先出去。

栈有两个基本的操作:入栈和出栈。

栈的这种操作规则被称为:lifo(last in first out,后进先出)。

cpu如何知道10000H--1000fH这段空间被当作栈使用?

push pop指令在执行时必须知道哪个单元是栈顶单元,可是如何知道呢?

栈顶的段地址存放在ss中,偏移地址存放在sp中。任意时刻,ss:sp指向栈顶单元。push和pop指令执行时,cpu从ss和sp中得到栈顶的地址。

入栈时,栈顶从高地址向低地址方向增长。

如何定义一个栈的大小?

mov ax, 1000h

mov ss, ax

mov sp, 0010h ;则栈顶为1000f 栈底为 10000

******************************************

mov ax, 1000h

mov ds, ax

mov ax, 2266h

mov [0], ax

************************

mov ax,1000h

mov ss, ax

mov sp, 0002h

mov ax, 2266h

push ax

栈顶的变化范围最大为:0--ffffh

栈的综述

(1)8086cpu提供了栈操作机制,方案如下:

在ss、sp中存放栈顶的段地址和偏移地址;

提供入栈和出栈指令,他们根据ss、sp指示的地址,按照栈的方式访问内存单元。

(2)push指令的执行步骤:1)sp=sp-2;2)向ss:sp指向的字单元送人数据;

(3)pop指令的执行步骤:1)从ss:sp指向的字单元中读取数据;2)sp=sp+2

(4)任意时刻,ss:sp指向栈顶元素。

(5)8086cpu只记录栈顶,栈空间的大小我们要自己管理。

(6)用栈来暂存以后需要恢复的寄存器的内容时,寄存器出栈的顺序要和入栈的顺序相反。(7)push、pop指令实质上是一种内存传送指令,注意他们的灵活运用。

一个栈段最大可以设为64k

段的综述

我们可以将一段内存定义为一个段,用一个段地址指示段,用偏移地址访问段内的单元。这完全是我们的安排。

用一个段存放代码,即代码段

用一个段存放数据,即数据段

用一个段当栈,即栈段

对于数据段,把段地址放在ds中,用mov,add,sub等访问内存单元的指令时,cpu就将我们定义的数据段内容当做数据来访问;

对于代码段,把段地址放在cs:ip中,用mov,add,sub等访问内存单元的指令时,cpu 就将执行我们定义的代码段的指令;

对于栈段,把段地址放在ss:sp中,用push pop 等访问内存单元的指令时,cpu就将其当作堆栈来访问;

debug的t命令在执行修改器ss的指令时,下一条指令也紧接着被执行了。

3.7栈超界问题

8086cpu不保证我们对栈的操作不会超界。也就是说,8086cpu只知道栈顶在何处而不知道我们安排的栈空间有多大,这点就好像,cpu只知道当前要执行的指令在何处,而不知道要执行的指令有多少。从这两点我们可以看出cpu的工作机理,它只考虑当前情况:当前的栈在何处,当前要执行的指令是哪一条。

对于超界问题我们可以做到就是小心。

第五章【bx】和loop指令

我们完整的描述一个内存单元,需要两种信息:

(1)内存单元的地址;(2)内存单元存放数据的类型;

inc bx的含义是bx中的内容加一

[bx]寄存器bx中所包含的地址中存放的内容

[bx]表示一个内存单元,他的偏移地址在bx中。

loop指令执行的时候,要进行两步操作:

1;(cx)=(cx)- 1;

2;判断cx中的值,不为零则转至标号处执行。

“通常”我们用loop实现循环功能,cx中存放循环次数。

用cx和loop指令相配合实现循环功能的三个要点:

(1)再cx中存放循环次数;

(2)loop指令中的标号所标识地址要在前面;

(3)要循环执行的程序段,要写在标号和loop指令的中间。

在汇编源程序中,数据不能以字母开头。

所以对于大于9fffh的数,均在前面加上0。

mov cx,11

s: add ax,ax

loop s

assume cs:code

code segment

..

mov ax,4c00h

int 21h

code ends

end

ffff:6单元是一个字节单元,ax是一个十六位寄存器,数据长度不一样,如何赋值?

注意我们说的是“赋值”,就是说,让ax中的数据的值(数据的大小)和ffff:0006单元中的数据的值(数据的大小)相等。八位数据01h和16位数据0001h的数据长度不一样,但他们的值是相等的。

设ffff:0006单元中的的数据是xxh,若要ax中的值和ffff:0006单元中的值相等,ax 中的数据应为00xxh。所以,若实现ffff:0006单元向ax赋值,我们应该令(ah)=0,(al)=(ffff6H).

若希望程序能从cs:0012处执行,可以用g命令。“g 0012”。他表示程序执行到0012处。

若希望程序能跳出循环,用p命令

5.4 debug和汇编编译器masm对指令的不同处理。

在汇编源程序中,mov al,[0]会被编译器解释成为:mov al,0

所以要这样表达:mov bx,0

mov al,[bx]

或者 mov al,ds:[0]

第一,我们在汇编源程序中,如果用指令访问一个内存单元,则在指令中必须用[...]来表示内存单元,如果在[]里用一个常量idata直接给出内存单元的偏移地址,就要在[]的前面显示地给出段地址所在的段寄存器。

第二,如果在[]里用寄存器,比如bx,间接给出内存单元的偏移地址,则段寄存器默认在ds中。

第六章包含多个段的程序

程序取得所需段的方法有两种:

一是在加载程序的时候为程序分配,再就是程序在执行的过程中向系统申请。

dw的含义是定义字型数据即define word 字型数据间以逗号隔开。

程序运行的时候cs存放代码段的段地址,所以我们可以从cs中得到它们的段地址。

dw定义的数据处于代码段的最开始,所以偏移地址为零。

dw 0123h,5604h,1234h

start :指令

end start

我们在程序的第一条指令的前面加了一个标号start:并在end的后面再次加入。

end除了通知编译器程序结束外,还可以通知编译器程序的入口在什么地方。在单任务系统中,可执行文件中的程序执行如下:

(1)由其他的程序(debug、command或其他程序)将可执行文件中的程序加载入内存;(2)设置cs:ip指向程序的第一条要执行的指令(即程序的入口),从而使程序得以运行;(3)程序运行结束后,返回到加载者;

描述信息

可执行文件由描述信息和程序组成,程序来源于源程序中的汇编指令和定义的数据;描述信息则主要是编译连接程序对原程序中相关伪指令进行处理所得到的信息。

6.2 在代码中使用栈

在程序中通过定义数据来取得一段空间,然后将这段空间当作栈空间来使用。

例如将cs:16 -- cs:31的内存空间当作栈来用,初始状态下栈为空,所以ss:sp要指向栈底,则设置ss:sp指向cs:32.

6.3将数据代码栈放入不同的段

用assume将定义的具有一定用途的段跟寄存器联系起来

第七章更灵活的定位内存地址的方法

7.1 and 和 or 指令

(1)and指令:逻辑与指令,按位进行与运算。

mov al ,01100011B

and al ,00111011B

执行后:al=00100011B

通过该运算可将操作对象的相应位设为0,其他位不变。

(2)or指令:逻辑或指令,按位进行或运算。

通过该运算可将操作对象的相应位设为1,其他位不变。

7.2 关于ASCII码

所谓编码方案,就是一套规则,它约定了用什么样的信息来表示现实对象。

小写字母的ASCII码值,比大写字母的ASCII码值大20H。

就ASCII码的二进制形式来看,除第五位外,大写字母和小写字母的ASCII码值都一样。大写字母第五位为0,小写字母第五位为1.

运用and和or指令的给特定位赋值功能即可实现大小写字母之间的转换。

7.5 [bx+idata]

类似于[bx]的一种更灵活的指明内存单元的方式。

[bx+idata]表示一个内存单元,它的偏移地址为(bx)+idata (bx中的数值加上idata。也可以写成

mov ax,[200+bx]

mov ax,200[bx]

mov ax,[bx].200

7.6 用[bx+idata]的方式进行数组的处理

7.7 SI和DI

SI和DI是8086cpu中和bx功能相近的寄存器。区别是SI和DI不能够分成两个八位寄存器来使用。

codesg segment

start: mov ax,datasg

mov ds,ax

mov si,0

mov di,16

mov cx,8 ;di si 为16位寄存器只需循环

s: mov ax,[si]

mov [di],ax ;八次即可将16个字节传送完毕

add si,2

add di,2

loop s

mov ax,4c00h

int 21h

codesg ends

end start

si = di - 16

[di] = 16[si] = [si +16] = [si].16

7.8【bx+si】和【bx+di】

[bx+si]表示一个内存单元,偏移地址为bx中的数值加上si中的数值,是一种更加灵活的寻址方式。

7.9【bx+si+idata】和【bx+di+idata】

mov ax,【bx+di+idata】

7.10不同的寻址方式的灵活运用

(1)【idata】用一个常量来表示地址,可用于直接定位一个内存单元;

(2)【bx】用一个变量来表示内存地址,可用于间接定位一个内存单元

(3)【bx+idata】用一个变量加一个常量来表示内存地址,可在一个起始地址的基础上用变量间接定位一个内存单元

(4)【bx+si】用两个变量表示地址

(5)【bx+si+idata】用两个变量和一个常量来表示地址

第八章数据处理的两个基本问题

(1)处理的数据在什么地方?

(2)要处理的数据有多长?

我们定义的描述性符号:reg和sreg 分别表示寄存器和段寄存器

reg:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di;

sreg:cs,ds,ss,es;

8.1 bx,si,di,bp

(1)这四个寄存器可以用在[...]中来进行内存单元的寻址。

而下面的指令是错误的

mov ax,[cx]

mov ax,[ax]

mov ax,[dx]

mov ax,[ds]

(2)可单个出现,或只能以四种组合出现:bx和si;bx和di;bp和si,bp和di。

(3)只要在[]中使用寄存器bp,而指令中没有显性的给出段地址,段地址就默认在ss中。

8.2

机器中数据处理的指令大致可分为三类:读取,写入,运算。

所要处理的数据可以在三个地方:cpu内部,内存,端口。

8.3汇编语言中数据位置的表达

1.立即数

直接包含在机器指令中的数据(执行前在cpu的指令缓冲器中)

mov ax,1

add bx,2000h

or bx,00010000b

mov al,‘a’

2.寄存器

3.段地址(SA)和偏移地址(EA)

mov ax,[0]

mov ax,[di]

mov ax,[bx+8]

mov ax,[bx+si]

mov ax,[bx+si+8]

段地址默认在ds中

mov ax,[bp]

mov ax,[bp+8]

mov ax,[bp+si]

mov ax,[bp+si+8]

段地址默认在ss中

8.4 寻址方式

直接寻址

寄存器间接寻址

寄存器相对寻址

基址变址寻址

相对基址变址寻址

8.5 指令要处理的数据有多长

指令可以处理两种尺寸的数据,byte和word。

汇编语言中数据处理方法

(1)通过寄存器名指明指令进行的是字操作

(2)在没有寄存器名存在的情况下用操作符X ptr指明内存单元的长度 X在汇编指令中为word或byte

mov word ptr ds:[0],1

inc byte ptr ds:[0],1

(3)有些指令默认了访问的是字单元还是字节单元如 push [1000H] 只进行字操作。

8.6 寻址方式的综合应用

8.7 div指令

div 是除法指令

(1)除数:有八位和十六位两种,在一个寄存器或内存单元中。

(2)被除数:默认存放在ax或ax和dx中,如果除数是八位,被除数则为十六位,默认在ax中存放;如果除数是十六位,被除数则为三十二位,默认dx中存放高十六位,ax中存放低十六位。

(3)结果:除数是八位,则al存放除法的商,ah存放除法操作的余数。除数是十六位,则ax存放除数的商,dx存放除法操作的余数。

div byte ptr ds:[0] 被除数在ax中。商在al中,余数在ah中。

div word ptr es:[0] 被除数高十六位在dx中,低十六位在ax中;商在ax中,余数在dx中。

8.8 伪指令dd

db == define byte 占一个字节

dw == define word 占一个字

dd == define double word 占两个字

8.9 dup

操作符由编译器识别处理的符号。

与db dw dd 配合使用,来进行数据的重复。

db 3 dup(0) = db 0,0,0

db 3 dup(0,1,2) = db 0,1,2,0,1,2,0,1,2

dx 重复的次数 dup (重复的数据)

第九章转移指令

可以修改ip,或同时修改cs和ip的指令统称为转移指令。

可以控制cpu执行内存中某处代码的指令。

段内转移:只修改ip时 jmp ax 修改范围-128 127

段间转移:同时修改cs:ip时 jmp 1000:0 修改范围-32768 32767

无条件转移指令 jmp

条件转移指令

循环指令

过程

中断

9.1操作符 offset

offset 作用取得标号的偏移地址

start:mov ax,offset start ;相当于mov ax,0

s:mov ax,offset s

9.2jmp指令

9.3依据位移进行转移的jmp指令

jmp short 标号

实现段内短转移,对ip的修改范围是-128 127

cpu在执行jmp指令的时候并不需要转移的目的地址

需要的是所需偏移的数值

指令“jmp short 标号”的功能为:(ip)=(ip)+8位位移

(1)八位位移 = “标号”处的地址 - jmp指令后的第一个字节的地址

(2)short指明此处的位移为八位位移。

(3)八位位移的范围为-128 127,用补码表示;

(4)八位位移由编译程序在编译时算出。

还有一种jmp near ptr 标号实现段内近转移(ip)= (ip)+16位位移

(1)16位位移 = “标号”处的地址 - jmp指令后的第一个字节的地址

(2)near ptr 指明此处的位移为16位位移,进行的是段内近转移;

(3)16位位移的范围为-32768 32767,用补码表示。

(4)16位位移由编译程序在编译时算出。

9.4 转移的目的地址在指令中的jmp指令

jmp far ptr标号实现的是段间转移,又称为远转移。

(cs)=标号所在段的段地址;(ip)=标号在段中的偏移地址

9.5转移地址在寄存器中的jmp指令

jmp 16位寄存器(ip)=(16位寄存器)

9.6转移地址在内存中的jmp指令

分为两种格式:1,jmp word ptr 内存单元的地址(段内转移)

功能:内存单元地址开始存放着的一个字是转移的目的偏移地址

2,jmp dword ptr 内存单元地址(段间转移)

功能:内存单元开始处存放两个字,高地址的字是转移的目的段地址,地地址处是转移的目的偏移地址。

9.7 jcxz指令

有条件转移指令,所有的有条件转移指令都是短转移,在对应的机器码中包含转移的位移,

而不是目的地址。

指令格式:j cx z 标号(如果(cx)=0,转移到标号处执行)

9.8 loop指令

loop指令为循环指令,所有的循环指令都是短转移。

9.9 根据位移进行转移的意义

9.10 编译器对转移位移超界的检测

jmp 2000:0100 的转移指令,是在debug中使用的汇编指令,汇编编译器并不认识。如果在源程序中使用,编译时也会报错。

10.1 ret和retf

ret指令用栈中的数据,修改ip的内容,从而实现近转移;

retf指令用栈中的数据,修改cs和ip的内容,从而实现远转移。

10.2 call

两步操作:

(1)将当前的ip或cs和ip压入栈中

(2)转移

不能进行短转移

10.3 依据位移进行转移的call指令

call 标号(将当前的ip压栈后,转到标号处执行)

call 标号相当于

push ip

jmp near ptr 标号

10.4 转移的目的地址在指令中的call指令

call far ptr 标号实现的是段间转移

call far ptr 标号

相当于

push cs

push ip

jmp far ptr 标号

10.5 转移地址在寄存器中的call指令

call 16位寄存器

push ip

jmp 16位寄存器

10.7 call和ret的配合使用

配合使用实现子程序的机制

call指令执行以后,ip已指向下一指令,然后call指令将此ip存入栈中,再jmp

call指令转去执行子程序前,call指令后面的指令的地址将存储在栈中,所以可以在子程序的后面使用ret指令,用栈中的数据设置ip的值,从而转到call指令后面的代码处继续执行。

10.8 mul指令

mul是乘法指令

(1)两个相乘的数:要么都是八位,要么都是十六位。

如果都是八位,一个存放在AH中,另一个放在八位寄存器或内存字节单元中;如果是16位,一个默认在AX中,另一个放在十六位寄存器或内存单元中。

(2)结果:如果是八位乘法,结果默认放在Ax中;如果是十六位乘法,结果高位默认在DX中存放,低位默认在Ax 中存放。

mul reg mul 内存单元

内存单元可以用不同的寻址方式给出,比如:

mul byte ptr ds:[0]

(ax) = (al)*((ds)*16+0)

mul word ptr [bx+si+8]

含义: (ax) = (ax)*((ds)*16+(bx)+(si)+8)结果的低十六位

(dx) = (ax)*((ds)*16+(bx)+(si)+8)结果的高十六位

10.9模块化程序设计

10.10参数和结果传递的问题

10.11批量数据的传递

capital:and byte ptr[si],11011111b

inc si

loop capital

ret

10.12 寄存器冲突的问题

主程序要使用cx记录循环次数,可是子程序也使用了cx,在执行子程序的时候,cx中保存的循环计数值被改变,使得主程序的循环出错。

子程序中使用的寄存器,很可能在主程序中也要使用,造成了寄存器使用上的冲突。

以后编写子程序的标准框架是:

子程序开始:子程序中使用的寄存器入栈

子程序内容

子程序中使用的寄存器出栈

ret、retf

第十一章标志寄存器

(1)用来存储相关指令的某些执行结果;

(2)用来为cpu执行相关指令提供行为依据;

(3)用来控制cpu的相关工作方式。

8086cpu中标志寄存器有十六位其中存储的信息被称为程序状态字(psw)。

flag和其他寄存器不一样,其他寄存器是用来存放数据的,都是整个寄存器具有一个含义。而flag寄存器是按位起作用的,也就是说,它的每一位都有专门的含义。

11.1 zf标志

第六位,零标志位。执行相关指令后,如果结果为零,那么zf为1.

add、sub、mul、div、inc、or、and等,大都是运算指令执行后对标志寄存器有影响。mov、push、pop等对标志寄存器没有影响。

11.2 pf标志

第二位,奇偶标志位。指令执行后其结果中的所有二进制中一的个数是否为偶数。如果1

的个数为偶数,pf = 1,如果为奇数,那么pf = 0。

11.3 sf标志

第七位,符号标志位。指令执行后,结果为负,sf=1,如果非负,sf=0.

计算机中通常用补码来表示有符号数据。计算机中一个数可以看做有符号数也可以看做无符号数。

10000001B,可以看做无符号数129,也可以看做有符号数-127.

对于同一个二进制数据,计算机可以将他看做无符号数来运算,也可以看做有符号数来运算。补码就是反码加一。

不管我们如何看待cpu在执行add等指令时,就已经包含了两种含义,也将得到同一种信息来记录的两种结果。关键在于我们的程序需要哪一种结果。

sf标志,就是cpu对有符号数运算结果的一种记录,它记录数据的正负。在我们将数据当作有符号数来运算的时候,可以通过他来得知结果的正负。如果我们将结果当作无符号数来计算,sf的值将没有意义。

11.4 cf标志

第零位,进位标志位。,它记录了运算结果有效位向更高位的进位。

11.5 of标志

第十一位,溢出标志位。在进行有符号数运算的时候,如果结果超出了机器所能表示的范围称为溢出。

cf是对无符号数运算有意义的标志位,of是对有符号数运算有意义的标志位。

两者之间没有关系。

11.6 adc指令

adc是带进位加法指令,它利用了cf位上记录的进位值。

ADC AX,BX (ax)= (ax)+(bx)+ cf

11.7 sbb指令

sbb是带借位减法指令,它利用了cf位上记录的借位值。

11.8 cmp指令

cmp是比较指令,cmp的功能相当于减法指令,只是不保存结果。cmp指令执行后,将对标志寄存器产生影响。

在进行无符号数比较时,cmp ax,bx

ZF = 1 ;(AX) = (BX)

ZF = 0 ;(AX) != (BX)

CF = 1 ;(AX) < (BX)

CF = 0 ;(AX) >=(BX)

CF = 0 && ZF = 0;(AX) > (BX)

CF = 1 || ZF = 1;(AX) <=(BX)

在进行有符号数比较时:cmp ah,bh

(1)SF = 1 && OF = 0

说明没有溢出,逻辑上真正的结果的正负 = 实际结果的正负

因为SF = 1,实际结果为负,所以逻辑上真正的结果为负,所以(AH)< (BH)

(2)SF = 1 && OF = 1

说明有溢出,逻辑上真正的结果的正负 != 实际结果的正负;

因为SF = 1,实际结果为负,而又有溢出,这说明是由于溢出导致了实际结果为负,如果因为溢出导致了实际结果为负,那么逻辑上真正的结果必然为正。

所以SF = 1 && OF = 1说明(AH)>(BH)

(3)SF = 0 && OF = 1

因为溢出导致实际结果为正,则逻辑结果必然为负;

所以(AH)<(BH)

(4)SF = 0 && OF = 0

没有溢出逻辑结果 = 实际结果所以(AH) >= (BH)

11.9 检测比较结果的条件转移指令

“条件转移指令”根据条件决定是否修改IP

jcxz即为一条条件转移指令,jmp cx zero 如果cx=0就修改ip否则什么也不做。所有条件转移指令的转移位移都是【-128,127】。

如call和ret配合使用一般,系统提供了一些转移指令与cmp配合使用。

je = jmp equal 等于则转移检查标志位 zf = 1

jne = jmp not equal 不等于则转移 zf = 0

jb = jmp below 低于则转移 cf = 1

jnb = jmp not below 不低于则转移 cf = 0

ja = jmp above 高于则转移 cf = 0 && zf = 0

jna = jmp not above 不高于则转移 cf = 1 || zf = 1

11.10 DF标志和串传送指令

第十位,方向标志位。在串处理指令中,控制每次操作后SI,DI的增减。

DF = 0;每次操作后SI,DI递增

DF = 1;每次操作后SI,SI递减

串传送指令:MOVSB

相当于:

(1)((ES)*16 + (DI)) = ((DS)*16 + (SI))

(2)如果DF = 0 则:(SI) = (SI) + 1

(DI) = (DI) + 1

如果DF = 1 则:(SI) = (SI) - 1

(DI) = (DI) - 1

MOVSW 可以传送一个字

MOVSB和MOVSW进行的是串传送操作中的一个步骤,一般都要和rep配合使用,格式如下:rep movsb

相当于:

s:movsb

loop s

rep的作用是根据cx的值,重复执行后面的串传送指令。

8086cpu提供了下面两条指令对DF位进行设置:

CLD:将DF位置0

STD:将DF位置1

1.传送的原始地址

2.传送的目的地址

3.传送的长度

4.传送的方向

11.11 pushf和popf

压入/弹出标志寄存器中的数据

为访问标志寄存器提供了一种方法。

11.12 标志寄存器在DEBUG中的表示

第十二章内中断

12.1 内中断的产生

cpu内部发生下面情况时,将产生相应的中断信息:

(1)除法错误(2)单步执行(3)执行int0命令(4)执行int命令

中断类型码0 1 4 n 为一个字节型数据

12.2 中断处理程序

cpu如何通过八位的中断类型码得到中断处理程序的段地址和偏移地址?

12.3 中断向量表

答:通过中断向量表

中断向量表就是中断处理程序入口地址的列表。保存在内存中。

cpu如何找到中断向量表?

对于8086中断向量表指定存在内存地址0处。从0000:0000到0000:03e8单元。共1000个字节。中断向量表中一个表项存放一个中断向量,占两个字。分别存放段地址和偏移地址。

12.4 中断过程

(1)从中断信息中取得中断类型码

(2)标志寄存器的值入栈

(3)设置标志寄存器的第八位TF和第九位IF的值为0

(4)CS的内容入栈

(5)IP的值入栈

(6)从内存地址为中断类型码*4和中断类型码*4 + 2 的两个字单元中读取中断处理程序的入口地址设置IP和CS

12.5 中断处理程序

(1)保存用到的寄存器

(2)处理中断。

(3)恢复用到的寄存器

(4)用IRET指令返回。

12.6 除法错误中断的处理

12.7 编程处理0号中断

12.8 安装

第十三章 int指令

13.1 int指令

int指令的最终功能和call指令相似,都是调用一段程序。

13.2 编写供应用程序调用的中断例程

编写、安装中断7ch的中断例程,功能:求一word型数据的平方。

(AX) = 要计算的数据。

DX,AX存放结果的高十六位和低十六位。

MOV WORD PTR ES:[7CH*4],200H

MOV WORD PTR ES:[7CH*4+2],0

MOV CX,OFFSET SQREND-OFFSET SQR

CLD

REP MOVSB

int指令和iret指令配合使用与call指令和ret指令配合使用具有相似的思路。

13.3 对int、iret和栈的深入理解

*********************************

13.4 BIOS和DOS所提供的中断例程

BIOS主要包含以下内容:

1、硬件系统的检测和初始化程序

2、外部中断和内部中断的中断例程

3、用于对硬件设备进行I/O操作的中断例程

4、其他和硬件系统相关的中断例程

13.5 BIOS和DOS中断例程的安装过程

1.开机后,cpu一加点,初始化(cs)= 0FFFFH,(IP)= 0,自动从FFFF:0单元开始执行程序。FFFF:0处有一条跳转指令,cpu执行该程序后,转去执行BIOS中的硬件检测和初始化程序。

2.初始化程序将建立BIOS所支持的中断向量,即将BIOS提供的中断例程的入口登记在中断向量表中。注意,对于BIOS所提供的中断例程,只需将入口地址登记在中断向量表中即可,因为它们是固化到ROM中的内容,一直在内存中存在。

3.硬件系统检测和初始化完成后,调用int 19h进行操作系统的引导。从此将计算机交给操作系统控制。

4.DOS启动后,除完成其他工作外,还将它提供的中断例程装入内存,并建立相应的中断向量。

13.6 BIOS中断例程应用

int 10h 中断例程是BIOS提供的中断例程,其中包含多个和屏幕输出有关的子程序。

一个供程序员调用的中断例程往往包含多个子程序,中断例程内部用传递进来的参数来决定执行那一个子程序。BIOS和DOS提供的中断例程,都用AH来传递内部参数

13.7 DOS中断例程应用

例如我们一直在使用的4ch号子程序,即程序返回功能。

mov ah 4ch

mov al 0

int 21h

========================================================================

DOS功能调用 int 21h

(1)键盘输入

1) 1号调用——从键盘输入单个字符

调用格式: MOV AH,1

INT 21H

功能:等待从键盘输入一个字符并送入AL。

执行时系统将扫描键盘,等待有健按下,一旦有健按下,就将其字符的ASCII码读入,先检查是否Ctrl-Break,若是,退出命令执行;否则将ASCII码送AL,同时将该字符送显示器显示。

2) 10号调用——从键盘输入字符串

功能:从键盘接收字符串送入内存的输入缓冲区,同时送显示器显示。

调用前要求:先定义一个输入缓冲区

MAXLEN DB 100 ;第1个字节指出缓冲区能容纳的字符个数,即缓冲区长度,不能为0

ACLEN DB ? ;第2个字节保留,以存放实际输入的字符个数

STRING DB 100 DUP(?) ;第3个字节开始存放从键盘输入的字符

串。

调用格式: LEA DX,MAXLEN(缓冲区首偏移地址)

MOV AH,10

INT 21H

(2)显示输出

1) 2号调用——在显示器上显示输出单个字符

调用格式: MOV DL,待显示字符的ASCII码

MOV AH,2

INT 21H

功能:将DL中的字符送显示器显示。

【例】显示输出大写字母A

MOV DL,41H ;或写为 MOV DL,'A'

MOV AH,2

INT 21H

2) 9号调用——在显示器上显示输出字符串

调用格式: LEA DX,字符串首偏移地址

MOV AH,9

INT 21H

功能:将当前数据区中DS:DX所指向的以'$'结尾的字符串送显示器显示。

【例】在显示器上显示字符串“YOU ARE SUCESSFUL!”

DATA SEGMENT

STRING DB ' YOU ARE SUCESSFUL! $ '

DATA ENDS

CODE SEGMENT

……

MOV AX,DATA

MOV DS,AX

LEA DX,STRING

MOV AH,9

INT 21H

……

CODE ENDS

说明:若希望显示字符串后,光标可自动回车换行,可在定义字符串时作如下更改:

STRING DB ' YOU ARE SUCESSFUL! ' ,0AH,0DH,' $ ' ;在字符串结束前加回车换行的ASCII码0AH,0DH

汇编语言课后习题解答

第1章基础知识 检测点1.1(第9页) (1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为13位。 (2)1KB的存储器有1024个存储单元,存储单元的编号从0到1023。 (3)1KB的存储器可以存储8192(2^13)个bit,1024个Byte。 (4)1GB是1073741824(2^30)个Byte、1MB是1048576(2^20)个Byte、1KB是1024(2^10)个Byte。 (5)8080、8088、80296、80386的地址总线宽度分别为16根、20根、24根、32根,则它们的寻址能力分别为: 64(KB)、1(MB)、16(MB)、4(GB)。 (6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。则它们一次可以传送的数据为: 1(B)、1(B)、2(B)、2(B)、4(B)。 (7)从内存中读取1024字节的数据,8086至少要读512次,80386至少要读256次。 (8)在存储器中,数据和程序以二进制形式存放。

(1)1KB=1024B,8KB=1024B*8=2^N,N=13。 (2)存储器的容量是以字节为最小单位来计算的,1KB=1024B。 (3)8Bit=1Byte,1024Byte=1KB(1KB=1024B=1024B*8Bit)。 (4)1GB=1073741824B(即2^30)1MB=1048576B(即2^20)1KB=1024B(即2^10)。(5)一个CPU有N根地址线,则可以说这个CPU的地址总线的宽度为N。这样的CPU 最多可以寻找2的N次方个内存单元。(一个内存单元=1Byte)。 (6)8根数据总线一次可以传送8位二进制数据(即一个字节)。 (7)8086的数据总线宽度为16根(即一次传送的数据为2B)1024B/2B=512,同理1024B/4B=256。 (8)在存储器中指令和数据没有任何区别,都是二进制信息。

2位数计算器程序-汇编语言课程设计

信息学院课程设计题目:2位数计算器程序设计 __ 姓名: __ _____ 学号: ____ ___ 班级: 课程:汇编语言 ________ 任课教师:侯艳艳 ____ 2011年12月

课程设计任务书及成绩评定

目录 摘要 (2) 1.设计目的………………………………………………………………………………………………?2 2.概要设计………………………………………………………………………………………………?3 2.1系统总体分析…………………………………………………………………………?3 2.2程序流程图 (3) 3.详细设计......................................................................................................? (4) 3.1主程序及子程序说明 (4) 3.2程序代码编写 (4) 4.程序调试 (6) 4.1运行界面分析 (6) 4.2算法的分析 (6) 4.3调试过程及分析 (6) 5.心得体会 (7) 5.1设计体会...................................................................................................? (7) 5.2系统改进...................................................................................................? (7) 参考文献 (8)

最新-单片机原理及应用期末考试必考知识点重点总结 精品

单片机概述 单片机是微单片微型计算机的简称,微型计算机的一种。 它把中央处理器(CPU),随机存储器(RAM),只读存储器(ROM),定时器\计数器以及I\O 接口,串并通信等接口电路的功能集成与一块电路芯片的微型计算机。 字长:在计算机中有一组二进制编码表示一个信息,这组编码称为计算机的字,组成字的位数称为“字长”,字长标志着精度,MCS-51是8位的微型计算机。 89c51 是8位(字长)单片机(51系列为8位) 单片机硬件系统仍然依照体系结构:包括CPU(进行运算、控制)、RAM(数据存储器)、ROM(程序存储器)、输入设备和输出设备、内部总线等。 由于一块尺寸有限的电路芯片实现多种功能,所以制作上要求单片机的高性能,结构简单,工作可靠稳定。 单片机软件系统包括监控程序,中断、控制、初始化等用户程序。 一般编程语言有汇编语言和C语言,都是通过编译以后得到机器语言(二进制代码)。 1.1单片机的半导体工艺 一种是HMOS工艺,高密度短沟道MOS工艺具有高速度、高密度的特点; 另一种是CHMOS工艺,互补金属氧化物的HMOS工艺,它兼有HMOS工艺的特点还具有CMOS的低功耗的特点。例如:8181的功耗是630mW,80C51的功耗只有110mW左右。1.2开发步5骤: 1.设计单片机系统的电路 2.利用软件开发工具(如:Keil c51)编辑程序,通过编译得到.hex的机器语言。 3.利用单片机仿真系统(例如:Protus)对单片机最小系统以及设计的外围电路,进行模拟的硬软件联合调试。 4.借助单片机开发工具软件(如:STC_ISP下载软件)读写设备将仿真中调试好的.hex程序拷到单片机的程序存储器里面。 5.根据设计实物搭建单片机系统。 2.1MCS-51单片机的组成:(有两个定时器) CPU(进行运算、控制)、RAM(数据存储器)、ROM(程序存储器)、I/O口(串口、并口)、内部总线和中断系统等。 工作过程框图如下:

汇编语言期末复习模拟题库

一考试题型100分 1.数制码制10分 2.填空30分 3.判断题:10分语句正确与否错误原因 4.选择题15分 5.阅读程序15分 6.编写程序20分 二.选择题59 计算机基础 8086寄存器 寻址方式 指令功能:算术,逻辑,移位,循环 标志位:C,Z,S,O,P 堆栈,SP 汇编格式,变量,标号 程序开发:EDIT ,MASM ML,LINK,DEBUG 1、通常说计算机的内存为32M、64M或128M指的是:() A.RAM的容量 B.ROM的容量 C.RAM和ROM的容量 D.硬盘的容量 2.汇编语言的优点不包括_____。 A直接有效地控制硬件B生成的代码序列短小 C运行速度快 D 编程容易 3 十六进制数88H,可表示成下面几种形式,请找出错误的表示()。 A.无符号十进制数136 B.带符号十进制数-120 C.压缩型BCD码十进制数88 D. 8位二进制数-8的补码表示 4 下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是( ) A、AX,BX,CX,DX B、BX,BP,SI,DI C、SP,IP,BP,DX D、CS,DS,ES,SS 5可用作寄存器间接寻址或基址、变址寻址的地址寄存器,正确的是()。 A.AX,BX,CX,DX B.DS,ES,CS,SS C.SP,BP,IP,BX D.SI,DI,BP,BX 6.当运行结果为0时,ZF=__________。 A 0 B 1 C 任意 D 不影响 7某次求和结果最高位为1,则SF=__________。 A 0 B 1 C 任意D不影响 8设DS=5788H,偏移地址为94H,该字节的物理地址_____________。 A 57974H B 5883H C 57914H D 58ECH 9. “MOV AX,[BP+DI]”指令从__________段取出数据送AX。 A CS B SS C DS D ES 10.下面不能用于寄存器寻址的寄存器有() A. CS B. AX C IP D SI E. CL F. SP 11存储器寻址方式在指令中给出操作数在内存中的地址,该地址是() A 逻辑地址 B.有效地址C偏移地址 D.物理地址 E.段地址 12.堆栈的操作原则是_____________。 A先进先出B后进先出C后进后出D循环 13 “MOV SP,3210H”和“PUSH AX”指令执行后,SP寄存器值是____。 A 3211H B 320EH C 320FH D 3212H

汇编语言程序设计 知识点 V3.0

第一章 1、什么是汇编语言? 2、汇编语言程序设计过程:编辑源程序,编译(汇编),连接,运行调试 3、汇编语言特点?与机器语言一一对应,直接操作硬件,高效率(空间和时间,运行速度快,目标代码短,占用存储空间少) 4、数制转换 第2章8086计算机组织结构 1、计算机硬件系统组成:CPU、存储器、输入输出设备。 2、CPU组成:运算器、控制器、寄存器,运算器和控制器由芯片设计时设计好,不可做任何改动,程序设计员仅能在程序里使用寄存器,寄存器都有相应的名字,如AX,能在程序里直接使用寄存器是汇编语言区别于高级语言的最重要特点,这样就可以直接控制硬件系统。 3、总线结构:数据总线、地址总线、控制总线。数据总线分8位、16位、32位和64位等,多少位机就是以数据总线来划分,比如8位机、32位机。8086机是16位机,但地址总线是20位,地址总线数量决定了内存寻址空间的大小,如8086有20位地址线,那么寻址空间是:220=210*1K=1M,8086最大寻址空间为1MB,即地址范围:00000H~FFFFFH。控制总线主要传送控制信息,如读写操作,读写操作的主体是CPU,读操作是指CPU从内存或外设读取数据,写操作是指CPU把数据写到内存或外设中。 4、存储器:存储器的最小单元是字节(Byte,由8个位组成),字节的多少就是存储器的容量。每一个字节单元都有一个唯一的编号,这个编号就是字节单元的地址,此地址就是物理地址,对于8086而言,编号的形式为:XXXXXH,如85421H。如果要读写存储器,必须知道某一个字节单元的地址。多个字节单元可以组合成更大的单元(数),比如2个字节单元组合成一个字(Word),4个字节单元组合成一个双字(Double Word)等,规定:这个组合后的大单元是以最小字节单元地址为自己的地址。如85421H字节单元内容为12H,85422H 字节单元内容为34H,那么以85421H地址的字单元的内容就是3412H。 地址取最小字节单元的地址为大单元的地址。 内容排序按照“高高低低”原则:高字节放在高地址里,低字节放在低地址里。 详细请参看2.3节(P30页) 5、8086CPU寄存器 (1)通用类:AX(AH,AL)、BX(BH,BL)、CX(CH,CL)、DX(DH,DL) (2)段寄存器类:CS、DS、ES、SS (3)与偏移地址相关类:SI、DI、SP、BP (4)特殊类:IP、FLAGS 所有寄存器都是16位大小,通用类的16位又可看成2个8位的寄存器组成,区分为高8位(High)和低8位(Low),因此取名为AH和AL,其他类似。 CS:存放代码段段地址,DS:存放数据段段地址,SS:存放堆栈段段地址,ES:存放数据附加段段地址,一般作为DS的辅助使用,比如在一段程序里需要用到2个不同数据段的数据时,其中一个数据段段地址存放在DS中,另一个存放在ES中。 SI、DI:一般用于变址寻址方式,如[BX+SI]、[BX+DI], SP:堆栈段中堆栈栈顶的偏移地址,不可修改,由SS:SP逻辑地址始终指向堆栈的栈顶。 详细参看2.3.2,P32页 BP:一般也用于堆栈,可以作为SP的备份,通常也是用SS:BP逻辑地址表示,BP可以随意修改,因此通过SS:BP可以访问堆栈的任何地方。此外,BP还与BX一样,可以作为基地址

汇编语言课程设计

沈阳大学

2.3 MASM的介绍 MASM是微软公司开发的汇编开发环境,拥有可视化的开发界面,使开发人员不必再使用DOS环境进行汇编的开发,编译速度快,支持80x86汇编以及Win32Asm是Windows下开发汇编的利器。它与windows平台的磨合程度非常好,但是在其他平台上就有所限制,使用MASM的开发人员必须在windows下进行开发,历经二三十年的发展,目前MASM的版本已升至6.15,支持MMX Pentium、Pentium II、Pentium III及Pentium 4等指令系统。 2.4总体设计功能 本次课程设计的内容是采用汇编语言设计一个运行于计算机的“霓虹灯”的模拟显示 程序,由$及*字符相间,从两侧向中间螺旋汇聚直至形成一个矩形,这就要求该霓虹灯能够动态地进行变化;霓虹灯模拟显示程序主要是进行程序循环调用,可以通过CMP、JMP、JZ、RET等命令进行跳转。由于是霓虹灯的模拟显示,因此在进行程序循环调用前需要进行数据段定义,以使子程序在进行调用时能够根据数据段的定义来执行,最后显示结果。 定时器中断处理程序:计数器中断的次数记录在计数单元count中,由于定时中断的引发速率是每秒18.2次,即计数一次为55ms,当count计数值为18时,sec计数单元加一(为1秒)。 视频显示程序设计:一般由DOS 或BIOS调用来完成。有关显示输出的DOS功能调用不多,而BIOS调用的功能很强,主要包括设置显示方式、光标大小和位置、设置调色板号、显示字符、显示图形等。用INT 10H中断即可建立某种显示方式。用DOS功能调用显示技术,把系统功能调用号送至AH,把程序段规定的入口参数,送至指定的寄存器,然后由中断指令INT 21H来实现调用。 键盘扫描程序设计:利用DOS系统功能调用的01号功能,接受从键盘输入的字符到AL寄存器,以及检测键盘状态,有无输入,并检测输入各值。 2.5详细功能设计 2.5.1主程序功能 主程序通过调用各个子程序来实现清屏,改变图形等功能,具体调用过程如图1所示。 沈阳大学

高级语言、汇编语言及机器语言的区别

计算机语言具有高级语言和低级语言之分。而高级语言又主要是相对于汇编语言而言的,它是较接近自然语言和数学公式的编程,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序。 低级语言分机器语言(二进制语言)和汇编语言(符号语言),这两种语言都是面向机器的语言,和具体机器的指令系统密切相关。机器语言用指令代码编写程序,而符号语言用指令助记符来编写程序。 高级语言并不是特指的某一种具体的语言,而是包括很多编程语言,如目前流行的java,c,c++,C#,pascal,python,lisp,prolog,FoxPro,VC,易语言,中文版的C语言习语言等等,这些语言的语法、命令格式都不相同。 高级语言与计算机的硬件结构及指令系统无关,它有更强的表达能力,可方便地表示数据的运算和程序的控制结构,能更好的描述各种算法,而且容易学习掌握。但高级语言编译生成的程序代码一般比用汇编程序语言设计的程序代码要长,执行的速度也慢。所以汇编语言适合编写一些对速度和代码长度要求高的程序和直接控制硬件的程序。高级语言、汇编语言和机器语言都是用于编写计算机程序的语言。 高级语言程序“看不见”机器的硬件结构,不能用于编写直接访问机器硬件资源的系统软件或设备控制软件。为此,一些高级语言提供了与汇编语言之间的调用接口。用汇编语言编写的程序,可作为高级语言的一个外部过程或函数,利用堆栈来传递参数或参数的地址。 机器语言(machine language)是一种指令集的体系。这种指令集,称机器码(machine code),是电脑的CPU可直接解读的数据。机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指指令系统 它是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能。机器语言具有灵活、直接执行和速度快等特点。 一条指令就是机器语言的一个语句,它是一组有意义的二进制代码,指令的基本格式如,操作码字段和地址码字段,其中操作码指明了指令的操作性质及功能,地址码则给出了操作数或操作数的地址。 用机器语言编写程序,编程人员要首先熟记所用计算机的全部指令代码和代码的涵义。手编程序时,程序员得自己处理每条指令和每一数据的存储分配和输入输出,还得记住编程过程中每步所使用的工作单元处在何种状态。这是一件十分繁琐的工作。编写程序花费的时间往往是实际运行时间的几十倍或几百倍。而且,编出的程序全是些0和1的指令代码,直观性差,还容易出错。除了计算机生产厂家的专业人员外,绝大多数的程序员已经不再去学习机器语言了。 汇编语言(AssemblyLanguage)是面向机器的程序设计语言。在汇编语合中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编.

汇编语言课程设计报告——实现加减乘除四则运算的计算器

汇编语言课程设计报告 ( 2011 -- 2012 年度第 2 学期) 实现加减乘除四则运算的计算器 专业 计算机科学与技术 学生姓名 班级 学号 指导教师 完成日期

目录 目录错误!未定义书签。 1 概述错误!未定义书签。 设计目的错误!未定义书签。 设计内容错误!未定义书签。 2 系统需求分析错误!未定义书签。 系统目标错误!未定义书签。 主体功能错误!未定义书签。 开发环境错误!未定义书签。 3 系统概要设计错误!未定义书签。 系统的功能模块划分错误!未定义书签。系统流程图错误!未定义书签。 4系统详细设计错误!未定义书签。 5 测试错误!未定义书签。 测试方案错误!未定义书签。 测试结果错误!未定义书签。 6 小结错误!未定义书签。 参考文献错误!未定义书签。 附录错误!未定义书签。 附录源程序清单错误!未定义书签。

实现加减乘除四则运算的计算器 1 概述 设计目的 本课程设计是在学完教学大纲规定的全部内容、完成所有实践环节的基础上,旨在深化学生学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法,提高分析问题、解决问题的综合应用能力。 设计内容 能实现加、减、乘、除的计算;该程序接受的是16进制数;执行时,需要在文件名后直接跟上计算表达式,如在命令提示符下执行结果如下: c:\tasm>js 3+2 5 2 系统需求分析 系统目标 本次汇编语言课程设计的最终目的是要实现一个简单加减乘除四则运算的计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。比如,十进制数的加减乘除四则运算。我们曾经学习过两个具体数字进行加减法运算,但是对于简单计算器用汇编语言实现难点在于这两个要做运算的数是未知的,是由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输入的运算是四则运算中的哪一个运算。此外,运算过程中的进位或是借位,选择用什么样的方式进行输出,如何实现清屏等也是要解决的问题。 主体功能 系统分析主要包括设计的功能分析和系统的流程,功能分析放在首位,每一个软件都要能满足一定的功能才有使用价值。根据功能需求来创建应用程序。 本设计的功能如下: 1、输入2个数,先判断是加减运算还是乘除运算,再进行计算 2、判断符号是否为运算符 3、回车为换行符 4、用十进制或十六进制输出运算结果 开发环境 集成环境 3 系统概要设计 系统的功能模块划分 本题目实现的模块图如图3-1所示

计算机导论知识点总结

计算机导论知识点总结 指令系统:一台计算机中所有指令的的集合,它是表征一台计算机性能的重要指标。 微型计算机中,控制器的基本功能是指令的操作数。 USB总线是以串行方式传输数据。 计算机网络:计算机网络是利用通信线路连接起来相互独立的计算机的集合,其主要目的是实现数据通信和资源共享。 计算机病毒:破坏计算机功能或数据,影响计算机使用,并能自我复制的一组计算机指令或程序。 操作系统:操作系统是由程序和数据结构组成的大型系统软件,它负责计算机的全部软硬件的资源分配,调度和管理,控制各类程序的正常执行,并为用户使用计算机提供良好的环境。 高速缓冲储存器(Cache):位于cpu和内存之间的储存器,其 特点是速度快,目的是是储存器的速度与cpu的速度相匹配。 总线:若干信号线的集合,是计算机各部分之间实现信息传递的通道。 数据结构:数据结构是指具有一定的结构(关系)的数据元素的集合,主要研究数据的各种逻辑结构和物理结构,以及对数据的各种操作。 进程:一个程序(或者程序段)在给定的工作空间和数据集合上的一次执行过程,它是操作系统进行资源分配和调度的一个独立单位。 程序计数器:由若干位触发器和逻辑电路组成,用来存放将要执

行的指令在储存器中存放地址。 机器指令:计算机执行某种操作的命令,可由cpu直接执行。 cpu主要的技术指标: 1.字长:cpu一次处理的二进制数的位数。 2.主频:cpu内部工作的时钟频率,是cpu运算时的工作频率。 3.地址总线宽度:决定了cpu可以访问储存器的容量,不同型号cpu的总线宽度不同,因而可使用的内存的最大容量也不同。 4.数据总线宽度:决定了cpu与内存,I/0设备之间一次数据传输的信息量。 5.高度缓冲:可以进行高速数据交换的存储器,它先于内存,与cpu交换数据。 6.指令系统:指令的寻址方式越灵活,计算机的处理能越强。 7.机器可靠性:平均无故障时间越短,机器性能月好。 计算机硬件主要由运算器,控制器,储存器,输入设备,输出设备和(总线)组成 1.运算器:主要完成算数运算和逻辑运算。 2.控制器:实现取指令,分析指令和执行指令操作的控制,实现对整个运算过程的有规律的控制。 3.储存器:是用来存放数据和程序的部件,可以分为主存储器(也称内存储器),和辅助存储器。 4.输入设备,输出设备:是实现计算机系统与人(或者其他系统)之间进行信息交换的设备。输入设备将外界信息转化为

汇编语言期末复习题库

一、填空题 1.中央处理器包括运算器、控制器、寄存器组。 2.物理地址是指实际的20 位主存单元地址,每个存储单元对应唯一 的物理地址。 3.用二进制代码书写指令和程序的语言,称为机器语言。 4.计算机中的指令由操作码和操作数两部分组成。 5.把A和B两个寄存器的内容进行异或运算,若运算结果是0 ,那么 A、B寄存器的内容必定相同。 6.AL,BL中存放着压缩的BCD数,(AL)=18H,(BL)=47H,执行如下 两条指令ADD AL,BL 和DAA后,(AL)=65H 。 7.当指令“SUB AX,BX”执行后,CF=1,说明最高有效位有借位; 对有符号数,说明操作结果溢出。 8.FLAG状态标志寄存器中,AF为辅助进位标志,CF为进位标志, SF为符号标志,ZF为零标志,OF为溢出标志,PF为奇 偶性标志。 9.指出下列指令源操作数的寻址方式: MOV AX,ARRAY[SI] 变址寻址 MOV AX,ES:[BX] 寄存器间接寻址 MOV AX,[200H] 直接寻址 MOV AX,[BX+DI] 基址变址寻址 MOV AX,BX 寄存器寻址 MOV AX,1200H 立即数寻址

MOV AX,20[BX+SI]基址变址寻址 MOV AX,[DI+20] 变址寻址 10.现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H, (20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=0B7H,(21023H)=65H,下列指令执行后填入AX寄存器的内容: (1)MOV AX,1200H;(AX)= 1200H (2)MOV AX,BX;(AX)=0100H (3)MOV AX,[1200H];(AX)= 4C2AH (4)MOV AX,[BX];(AX)= 3412H (5)MOV AX,1100[BX];(AX)= 4C2AH (6)MOV AX,[BX][SI];(AX)= 7856H (7)MOV AX,1100[BX][SI];(AX)= 65B7H 11.已知‘A’的ASCII是41H,那么‘E’的ASCII是45H 。 12.Ends 是段定义结束伪指令,与Segment配套使用。 13.逻辑地址由段基值和偏移量组成。将逻辑地址转换为物理地址的公 式是段基值*16+偏移量。其中的段基值是由段寄存器存储。 14.一个有16个字的数据区,它的起始地址为70A0:0100H,那么该数据 区的最后一个字单元的物理地址为70B1E H。 15.DEBUG命令中,显示内存命令 D ,显示寄存器命令R,汇编命令 A ,执行命令G 。

汇编语言知识点

第一章 十进制与二进制之间的转换(P2) 降幂法 除法 十进制与六进制之间的转换(P5) 降幂法 除法 补码表示:正数:采用符号—绝对值法 负数:先写出对应的正数的补码表示,然后再将其按位数求反,最后末尾加1,就可以得到负数的补码表示 补吗运算:二进制数按位求反后在末尾加1 第二章 一、存储容量 1K = 1024 =210 (Kilo)1M =1024K = 220 (Mega) 1G = 1024M = 230 (Giga) 1个二进制位:bit (比特)8个二进制位:Byte(字节)1Byte = 8bit 2个字节: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

汇编语言-课程设计1

) 汇编语言课程实验报告 实验名称 课程设计1 实验环境 硬件平台:Intel Core i5-3210M 操作系统:DOSBox in Windows 软件工具:Turbo C , Debug, MASM 实验内容 《 将实验7中的Power idea公司的数据按照下图所示的格式在屏幕上显示出来。 实验步骤 1.要完成这个实验,首先我们需要编写三个子程序。第一个子程序是可以显示字符串到屏 幕的程序,其汇编代码如下: ;名称:show_str

;功能:在屏幕的指定位置,用指定颜色,显示一个用0结尾的字符串 ;参数:(dh)=行号,(dl)=列号(取值范围0~80),(cl)=颜色,ds:si:该字符串的首地址 ;返回:显示在屏幕上 ¥ show_str: push ax push cx push dx push es push si push di mov ax,0b800h - mov es,ax mov al,160 mul dh add dl,dl mov dh,0 add ax,dx mov di,ax mov ah,cl . show_str_x: mov cl,ds:[si] mov ch,0 jcxz show_str_f mov al,cl mov es:[di],ax inc si inc di 【 inc di jmp show_str_x show_str_f: pop di pop si pop es pop dx pop cx } pop ax ret 2.第二个程序是将word型数据转换为字符串,这样我们才能调用第一个程序将其打印出

汇编语言-高频考点

汇编语言重点知识总结 汇编速查手册汇编语言总结概要寄存器与存储器 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)寄存器寻址方式--访问寄存器的速度快于访问存储单元的速度计算机、电子信息、通信工程专业适用涉及微机原理、单片机原理 本资料结合知识点整理了近年来各名校复试真题 考研 专业课复试 高频考点复习指导 8086对存储器进行访问取指令时,物理地址可由(CS和IP )组合产生。设SS=3300H,SP=1140H,在堆栈中压入5个字数据后,又弹出两个字数据,则SP=(113AH )。利用DOS系统功能调用的9号(AH=9)功能,显示一个字符串,其入口参数应为 (DS:DX=字符串首地址)。在指令MOV AX,0 执行后,CPU状态标志位ZF的取值(不改变) 执行MOV PSW,#10H是将MCS-551的工作寄存器位置为(第2组) 某数存于内存数据段中,已知该数据段的段地址为2000H,而数据所在单元的偏移位置为0120H,该数据在内存的物理地址为(20120H ) MCS-51单片机的堆栈区应建立在(片内数据存储区的高128字节单元)MCS-51单片机的位寻址区位于内部RAM的(20H-2FH)单元

《汇编语言程序设计》期末复习题答案_57431457509182192

《汇编语言程序设计》复习题(答案指导/带页号)一、选择(30题) 1.下列是8位带符号二进制数的补码,其中最大的是( B )。参见P22 A、10001000 B、00000001 C、00000000 D、11111111 2.在一段汇编语言程序中多次调用另一段程序,用宏指令比用子程序实现 ( C )参见P157、158 A、占内存空间小,但速度慢 B、占内存空间相同,速度快 C、占内存空间大,但速度快 D、占内存空间相同,速度慢 3.数据定义为:EE DB 3,4 CC DW 3456H,6789H 执行指令“MOV CX,WORD PTR EE+1”后,(CX)= ( B )参见P27、63、64 A、0304H B、5604H C、3404H D、3456H 4.有如下指令序列: MOV AL,95H MOV CL,2 SAR AL,CL 上述指令序列执行后,AL的内容是( D )参见P95 A、05H B、25H C、24H D、0E5H 5.设A=18610,B=2738,C=0BB16,把这三个数看成无符号数,则它们之间的关系是( D )参见P23、15 A、A>B>C B、 A

汇编语言程序设计知识点

汇编语言程序设计知识点 第一章基础知识 (1)正负数的补码表示, 掌握计算机中数和字符的表示; 1、假设机器字长为8位,[+3]补 =00000011B,[-3]补= FD H 。 2、十六进制数0F8H表示的十进制正数为 248 ,表示的十进制负数为 -8。 3、8位二进制数被看成是带符号补码整数时,其最小值是 -128,最大值是 127 。 4、计算机处理问题中会碰到大量的字符、符号,对此必须采用统一的二进制编码。目前,微机中普遍采用的是ASCII 码,称为美国信息交换标准码。 第二章80x86计算机组织 (1)中央处理机CPU的组成和80x86寄存器组,重点:专用寄存器,段寄存器 1、IP寄存器中保存的是?下一条指令的首地址 2、FLAGS标志寄存器中共有几位条件状态位?6位 3、有几位控制状态位?3位 4、标志寄存器分为哪2类?条件码,控制 5、哪个标志位用来控制可屏蔽中断请求是否被CPU响应?IF 6、键盘I/O、显示I/O和打印I/O分别对应16、10和17号中断。 (2)存储单元的地址和内容,存储器地址的分段,实模式下逻辑地址、物理地址的表示。 1、如果SS=6000H,说明堆栈段起始物理地址是60000H。 2、已知字节(00018H)=14H,字节(00017H)=20H,则字(00017H)为1420H 。 3、如果数据段中一个内存单元对应的物理地址为3F756H,(DS)=3F00H,那么使用DS段寄存器指明该单元的段基值时,需要使用哪一个偏移量才能正确访问该单元756H。 4.如果(SI)=0088H,(DS)=5570H,对于物理地址为55788H的内存字单元,其内容为0235H,对于物理地址为5578AH的内存字单元,其内容为0E60H,那么执行指令LDS SI,[SI]以后,(SI)= 0235H ,(DS)= 0E60H . 第三章80x86的指令系统和寻址方式 (1)与数据有关的寻址方式(立即寻址方式,寄存器寻址方式,直接寻址方式,寄存器间接寻址方式,寄存器相对寻址方式,基址变址寻址方式,相对基址变址寻址方式)和与转移地址有关的寻址方式(段内直接寻址,段内间接寻址,段间直接寻址,段间间接寻址).数据传送指令(通用数据传送指令、累加器专用传送指令、输入输出指令)、算术指令(加法指令、减法指令(*加减指令对4个标志位的影响[of,cf,sf,zf])、乘法指令(*乘法指令的要求:目的操作数必须是累加器)、除法指令(*被除数在累加器中,除法指令执行完以后,商和余数在?))、逻辑指令(逻辑运算指令(*XOR,AND,OR,TEST指令及指令执行后对标志位的影响)、移位指令)、串处理指令(与REP相配合工作的MOVS、STOS、LODS指令,与REPE/REPZ和REPNE/REPNZ

计算机系统结构知识点复习考点归纳总结

0.从(使用语言的)角度可以将系统看成是按(功能)划分的多个机器级组成的层次结构 1、从计算机系统执行程序的角度看,并行性等级由低到高分为(指令内部)、(指令之间)、(任务或进程之间)和(作业或程序之间)四级。 2、从计算机系统中处理数据的并行性看,并行性等级从低到高分为(位串字串)、(位并字串)、(位串字并)和(全并行)。 3、存储器操作并行的典型例子是(并行存储器系统和相联处理机),处理机操作步骤并行的典型例子是(流水线处理机),处理机操作并行的典型例子是(阵列处理机),指令、任务、作业并行的典型例子是(多处理机)。 4、开发并行的途径有(时间重叠),资源重复和资源共享。 5、计算机系统多级层次中,从下层到上层,各级相对顺序正确的应当是(微程序机器级,传统机器语言机器级,汇编语言机器级)。 6、对系统程序员透明的应当是(CACHE存储器、系列机各档不同的数据通路宽度、指令缓冲寄存器) 7、对机器语言程序员透明的是(主存地址寄存器) 8、计算机系统结构包括(机器工作状态、信息保护、数据表示) 9、对汇编语言程序员透明的是(I/O方式中的DMA访问) 10、属计算机系统结构考虑的是(主存容量和编址方式) 11、从计算机系统结构上讲,机器语言程序员所看到的机器属性是(编程要用到的硬件组织) 12、计算机组成设计考虑(专用部件设置、控制机构的组成、缓冲技术) 13、在多用户机器上,应用程序员能使用的指令是(“执行”指令、“访管”指令、“测试与置定”指令) 14、软硬件功能是等效的,提高硬件功能的比例会(提高解题速度、提高硬件成本、减少所需存储器用量) 15、下列说法中正确的是(软件设计费用比软件重复生产费用高、硬件功能只需实现一次,而软件功能可能要多次重复实现、硬件的生产用比软件的生产费用高) 16、在计算机系统设计中,比较好的方法是(从中间开始向上、向下设计)。 17、推出系列机的新机器,不能更改的是(原有指令的寻址方式和操作码)。 18、不同系列的机器之间,实现软件移植的途径包括(用统一的高级语言、模拟、仿真)。 19、在操作系统机器级,一般用(机器语言)程序(解释)作业控制语句。 20、高级语言程序经(编译程序)的(翻译)成汇编语言程序。 21、传统机器语言机器级,是用(微指令程序)来(解释)机器指令。 22、汇编语言程序经(汇编程序)的(解释)成机器语言程序。 23、微指令由(硬件)直接执行。 24、系列机软件必须保证(向后兼容),一般应做到(向上兼容) 25、在计算机系统的层次结构中,机器被定义为(能存储和执行相应语言程序的算法和 数据结构)的集合体 26、优化性能价格比指(在某种价格情况下尽量提高性能)或(在满足性能前提下尽量降低价格)。 27、目前,M0由(硬件)实现,M1用(固件)实现,M2至M5大多用(软件)实现。 28、系列机中(中档机)的性能价格比通常比(低档机、高档机)的要高 29、(计算机组成)着眼于机器级内各事件的排序方式,(计算机体系结构)着眼于对传统机器级界面的确定,(计算机组成)着眼于机器内部各部件的功能,(计算机实现)着眼于微程序设计。 30、计算机系统结构也称(计算机体系结构),指的是(传统机器级)的系统结构。 31、用微程序直接解释另一种机器指令系统的方法称为(仿真),用机器语言解释

汇编语言期末试卷复习(附答案)上课讲义

选择题 1. 已知X=78,Y= -83则[X+Y]补=() A.0F5H B.0A1H C.0FBH D.65H 2. MOV AX, ES:COUNT[DI] 源操作数的寻址方式是() A.基址寻址 B.立即寻址 C.变址寻址 D.基址变址寻址 3. 指令MOV BX, MASK[BP],若MASK=3500H,SS=1200H,DS=1000H,BP=1000H,那么物理地址为() A.17500H B.16500H C.14500H D.13500H 4. 下列四组寄存器中,在段内寻址时可以提供偏移地址的寄存器组是() A.AX,BX,CX,DX B.BP,SP,IP,CS C.BX,BP,SI,DI D.BH,BL,CH,CL 5. 当执行指令ADD AX,BX后,若AX的内容为2BA0H,设置的奇偶标志位PF=1,下面的叙述正确的是() A. 表示结果中含1的个数为偶数 B. 表示结果中含1的个数为奇数 C. 表示该数为偶数 D. 表示结果中低八位含1的个数为偶数 6. 下列传送指令中,有语法错误的指令是()。 A.MOV CS,AX B.MOV DS,AX C.MOV ES,AX D.MOV SS,AX 7. MOV SP,3210H PUSH AX执行上述指令序理后,SP寄存器的值是()。 A.3211H B. 320EH C.320FH D. 3212H 8. 设(DH)=20H,执行NEG DH指令后,正确的结果是() A.(DH)=20H CF=1 B.(DH)=20H CF=0 C.(DH)=0E0H CF=0 D.(DH)=0E0H CF=1 9. 执行下面指令序列后,结果是() MOV AL,82H CBW A.AX=0FF82H B.AX=8082H C.AX=0082H D.AX=0F82H

汇编语言知识大全

第一章基础知识: 一、机器码: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^N 2、数据总线:传送数据用,参数为N根,一次可以传送N/8个存储单元。 3、控制总线:cpu对元器件的控制能力。越多控制力越强。

四、内存地址空间:1、由地址总线决定大小。 2、主板:cpu与核心器件(或接口卡)用地址总线,数据总线,控制总 线连接起来。 3、接口卡:由于cpu不能直接控制外设,需通过接口卡间接控制。 4、各类存储器芯片:RAM,BIOS(主板,各芯片)的ROM,接卡槽的 RAM CPU在操控她们的时候,把她们都当作内存来对待,把她们总的瞧作一个由 若干个存储单元组成的逻辑存储器,即我们所说的内存地址空间。 自己的一点理解:CPU对内存的操作就是一样的,但就是在cpu,内存,芯片之间的硬件本身所牵扯的线就是不同的。所以一些地址的功能就是对应一些芯片的。 第二章寄存器 引入:CPU中含有运算器,寄存器,控制器(由内部总线连接)。而寄存器就是可以用来指令读写的部件。8086有14个寄存器(都就是16位,2个存储空间)。 一、通用寄存器(ax,bx,cx,dx),16位,可以分为高低位

(新)汇编语言课程设计四则运算

计算机与信息工程学院《汇编语言》课程设计四则运算器的设计 专业:计算机科学与技术 班级:控制11-2班 姓名: 倪天天 学号:2011025745 指导教师:郝维来 2013年6月28日

摘要 计算器是最简单的计算工具,简单计算器具有加、减、乘、除四项运算功能。想要用汇编语言实现简单的计算器,就必须通过对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识进行运用,以实现一个基本功能完善,界面友好,操作简便易行的计算器。用汇编语言实现简单计算器还涉及到输入输出模块的设计,加减乘除运算的判断以及退出程序的判断的设计。通过对各种指令的合理使用,设计各个功能模块。当实现各个程序模块后,通过程序的调用最终实现一个简单的计算器。 关键词:计算器,汇编语言,四则运算,功能模块

Abstract Calculator is the easiest calculation tools, a simple calculator with addition, subtraction, multiplication, division four arithmetic functions. Want to use assembly language to achieve a simple calculator, you must pass on the data storage, register usage, addition, subtraction, and related instructions such as assembly language module calls the use of knowledge in order to achieve a basic functional, user-friendly, easy to operate easy calculator. Using assembly language to achieve a simple calculator also involves the design of input and output modules, the judgment of arithmetic operations and exit the program to judge design. Through the rational use of various commands, design various functional modules. When implementing various program modules, through a call to the ultimate realization of the program a simple calculator. Keyword:Calculator, assembly language, four arithmetic, functional modules

相关文档
相关文档 最新文档