文档库 最新最全的文档下载
当前位置:文档库 › 汇编语言程序的设计实验篇(emu8086)

汇编语言程序的设计实验篇(emu8086)

汇编语言程序的设计实验篇(emu8086)
汇编语言程序的设计实验篇(emu8086)

1.汇编语言程序设计实验篇

1.1.汇编系统软件简介

Emu8086-Microprocessor Emulator是集源代码编辑器、汇编/反汇编工具以及debug 的模拟器。它能模拟一台"虚拟"的电脑运行程序,拥有独立的“硬件”,避免访问真实硬件。该软件兼容Intel的下一代处理器,包括PentiumII、Pentium4。利用该软件提供的调试工具,能够单步跟踪程序,观察程序执行过程中寄存器、标志位、堆栈和存单元的容。

1.1.1创建程序

https://www.wendangku.net/doc/6211960917.html, TEMPLATE程序

本章与指令相关的实验都是用COM TEMPLATE类型的程序完成的。打开emu8086,在“welcome…”对话框中,单击按钮,创建文件。

在“choose code template”对话框中,选择“COM template-simple and tiny executable file format, pure machine code.”后,单击按钮。

在如所示的编辑界面中,在“;add your code here”部分输入相应的指令,第一条指令默认的偏移地址为100h。

输入全部指令后,单击按钮,保存相应的程序段。

2.EXE TEMPLATE程序

本章与DOS功能调用和汇编源程序相关的实验都是用EXE TEMPLATE程序完成的。打开emu8086,在“welcome…”对话框中,单击按钮,创建文件。

在“choose code template”对话框中,选择“EXE template-advanced executable file.header: relocation, checksum.”后,单击按钮。

在如图所示的编辑界面中,已经可以给出了源程序的框架,包含数据段、堆栈段和代码段的定义以及必要的功能调用等,在“add your data here”和“;add your code here”部分可以分别输入相应的变量定义和指令。

输入全部指令后,单击按钮,保存相应的程序。

1.1.2执行程序

在编辑界面中,如图所示,单击按钮,自动完成源程序的编译和。在“emulator”

对话框中(),左边部分列出了寄存器的当前值,右边部分是已经输入的程序段,中间部分是右边每条指令的物理地址和对应的机器代码,中间的文本框中列出了当前指令的CS和IP。

单击按钮,可以单步执行一条指令;单击按钮,可以一次执行完

所有程序;单击按钮,可以重新回到第一条指令的位置处;单击按钮,可以重新加载另一个程序。

修改“emulator”对话框中文本框的容,也可以观察其它段的容,在图所示界面中,DS=0700H,若要察看该数据段中偏移地址为6000H位置处的存单元容,可以在文本框中输入0700:6000,显示结果如图所示,中间部分依次列出从该地址开始的所有字节的容。

在“emulator”对话框的底部,单击按钮,可以观察栈的容;单击按钮,

可以观察标志寄存器中标志位的容。

在“emulator”对话框中,选择“view”菜单中的“memory”菜单项,也可以观察存的情况。在“Random Access Memory”对话框中,可以修改文本框中的值可以确定所要观察的地址,该值由段基地址:段偏移地址构成,如图所示,当前要观察的存地址为(6000:0010)。在显示结果中,左边是逻辑地址,中间是从该地址的开始连续16个字节的容,右边是每个字节对应的字符。在该对话框中,也可以直接修改存储器单元的值,如图所示,从60010H 开始的连续4个字节的容已经被修改为12H,34H,56H和78H。

1.2基础实验

1.2.1数据传送指令

1.实验目的

1)熟悉8086指令系统的数据传送指令及8086的寻址方式。

2)利用emu8086调试工具调试汇编程序。

2.实验设备

微型计算机、emu8086

3.实验原理

通用数据传送指令包括:1)通用数据传送指令,如MOV,PUSH,POP,XCHG,CBW,CWD;2)目标地址传送指令,如LDS,LES;3)标志传送指令,如LAHF,SAHF,PUSHF,POPF;4)输入输出指令,如IN,OUT,LEA

寻址方式包括:1)立即寻址;2)直接寻址;3)寄存器寻址;4)寄存器间接寻值;5)寄存器相对寻址;6)基址-变址寻址;7)基址—变址—相对寻址;8)隐含寻址

4.实验容

(1)创建COM TEMPLATE程序,输入以下程序段,观察程序的执行情况,程序段如下:MOV BL,08H ;BX=?

MOV CL,BL ;CL=?

MOV AX,03FFH ;AX=?

MOV BX,AX ;BX=?

MOV DS:[6000H],BX ;DS:[6000H]=?(提示:在emulator对话框中间的文本框中输入段基地址:段偏移地址,可以观察其它逻辑段相应存储单元的容)

(2)创建COM TEMPLATE程序,用以下程序段将一组数据压入PUSH堆栈区,然后通过

三种不同方式出栈。观察栈的变化情况(提示:在emulator对话框中,单击按钮可以察看栈中容)以及出栈后数据的变化情况,并把结果填入表1-1中。程序段如下:MOV AX,0102H

MOV BX,0304H

MOV CX,0506H

MOV DX,0708H

PUSH AX

PUSH BX

PUSH CX

PUSH DX

第—种出栈方式的指令序列:

POP DX

POP CX

POP BX

POP AX

第二种出栈方式的指令序列(注:替换掉第—种出栈方式的指令序列):

POP AX

POP BX

POP CX

POP DX

第三种出栈方式的指令序列(注:替换掉第二种出栈方式的指令序列):

POP CX

POP DX

POP AX

POP BX

表1-1数据传送实验结果表格

寄存器的值第一种出栈方式第二种出栈方式第三种出栈方式

(AX)=

(BX)=

(CX)=

(3

(提示:在“emulator”对话框中,可以直接修改寄存器的值;选择“view”菜单中的“memory”菜单项可以设置存单元的值),其中BX=0010H,SI=0001H,[60010H]=12H,[60011H]=34H,[60012H]=56H,[60013H]=78H,[60120H]=0ABH,[60121H]=0CDH,[60122H]=0EFH,观察指令执行后AX中的容。

1)MOV AX,1200H

2)MOV AX,BX

3)MOV AX,[0120H]

4)MOV AX,[BX]

5)MOV AX,0110H[BX]

6)MOV AX,[BX][SI]

7)MOV AX,0110H[BX][SI]

(4)创建COM TEMPLATE程序,试分别用8086的直接寻址、寄存器间接寻址、变址寻址、寄存器相对寻址传送指令编写程序段,将DS:6000H字节存储单元中的容传送到DS:6020H单元中。

(5)设AX=1111H,BX=2222H,[DS:6010H]=3333H。试编写COM TEMPLATE程序,将AX的容与BX的容交换,然后再将BX的容与DS:6010H单元的容进行交换。

(6)若[DS:6000H]=0EEFFH,[ES:7000H]=0CCDDH,请编写COM TEMPLATE程序,将两个存储单元的容交换。

5.实验习题

指出下列指令的错误并加以改正,并在emu8086中验证。

1)MOV [BX],[SI]

2)MOV AH,BX

3)MOV AX,[SI][DI]

4)MOV BYTE PTR[BX],2000H

5)MOV CS,AX

6)MOV DS,2000H

6.实验报告要求

1)整理源程序段和运行结果。

2)给出几种在emu8086中察看存单元的方法。

1.2.2算术逻辑运算指令

1.实验目的

1)熟悉算术逻辑运算指令的功能。

2)了解标志寄存器中各标志位的意义以及指令执行对它的影响。

2.实验设备

微型计算机、emu8086

3.实验原理

算术运算指令包括:1)加法指令,如ADD,ADC,INC;2)减法指令,如SUB,SBB,DEC,NEG,CMP;3)乘法指令,如MUL,IMUL;4)除法指令,如DIV,IDIV。

逻辑运算指令包括:AND,OR,NOT,XOR,TEST

4.实验容

(1)创建COM TEMPLATE程序,输入以下程序段,单步执行并记录标志位的变化情况(提示:在emulator对话框中,单击按钮察看标志寄存器的值)。程序段及结果表格如

表1-2。

表1-2算术逻辑运算实验结果表格

CF ZF SF OF PF AF

标志位

程序

程序段1 0 0 0 0 0 0 MOV AX, 1018H

MOV SI, 230AH

ADD AX, SI

ADD AL, 30H

MOV BX, 3FFH

ADD AX,BX

MOV [20H], 1000H

ADD [20H], AX

PUSH AX

POP BX

程序段2 0 0 0 0 0 0 MOV AX, 0A0AH

ADD AX, 0FFFFH

MOV CX, 0FF00H

ADC AX, CX

SUB AX, AX

INC AX

OR CX, 0FFH

AND CX, 0F0FH

MOV [10H], CX

程序段3 0 0 0 0 0 0

(2)用BX作为地址指针,从BX所指的存单元[0010H]开始连续存入三个无符号数(10H、04H、30H),计算存单元中这三个数的和,并将和放在0013H单元中,再求出这三个数的乘积,并将乘积存入0014单元中,写出完成此功能的COM TEMPLATE程序。

(3)创建COM TEMPLATE程序,写出完成下述功能的程序段,并指出程序运行后AX=? 1)将15H传送到AL;

2)再将AL的容乘以2;

3)将15H传送到BL;

4)把AL的容乘以BL的容。

(4)创建以下两个程序段的COM TEMPLATE程序并上机验证。

1)给数据段中从偏移地址1000H开始的12个字存储单元的容赋值,请将第4条比较指令填写完整(划线处)。

MOV SI,1000H

NEXT: MOV WORD PTR[SI],1

ADD SI,2

CMP SI,

JNE NEXT

2)假定要按高地址到低地址的顺序进行清除操作(高地址从1016H开始),则上述程序段应如何修改?

5.实验习题

简要说明ADD、SUB、AND、OR指令对标志位的影响。

6.报告要求

1)整理源程序段和运行结果,回答实验中的问题。

1.2.3移位指令

1.实验目的

1)熟悉移位指令的功能。

2)了解标志寄存器中各标志位的意义以及指令执行对它的影响。

2.实验设备

微型计算机、emu8086

3.实验原理

移位指令包括:1)非循环移位指令,如SAL,SAR,SHL,SHR;2)循环移位指令,如ROL,ROR,RCL,RCR

4.实验容

(1)创建COM TEMPLATE程序,输入以下程序段,单步执行并记录标志位的变化情况(提

示:在emulator对话框中,单击按钮可以察看标志寄存器的值)。程序段及结果表格如表1-3。

表1-3移位实验结果表格1

CF ZF SF OF PF AF

标志位

程序

程序段0 0 0 0 0 0

MOV AX, 0

DEC AX

ADD AX, 3FFFH

ADD AX, AX

NOT AX

SUB AX, 3

OR AX, 0FBFDH

AND AX, 0AFCFH

SHL AX,1

RCL AX,1

(2)写出完成下述功能的COM TEMPLATE程序并上机验证,程序运行后的商=?

1)传送数据2058H到[DS:1000H]单元中,数据12H到DS:1002H单元中;

2)把DS:1000H单元中的数据传送到AX寄存器;

3)把AX寄存器的容算术右移二位;

4)再把AX寄存器的容除以DS:1002H字节单元中的数;

5)最后把商存入字节单元DS:1003H中。

(3)创建COM TEMPLATE程序,输入以下程序段,单步执行并记录每一条指令对存单元的影响结果(提示:在“emulator”对话框中,选择“view”菜单中的“memory”菜单项可以察看存单元的值),分析结果并说明该程序段的功能是什么。程序段及结果表格如表1-4。

表1-4移位实验结果表格2

5.实验习题

简要说明一般移位指令与循环移位指令之间的主要区别。

6.实验报告要求

整理源程序段和运行结果,回答实验中的问题。

1.2.4串操作指令

1.实验目的

1)熟悉串操作指令的功能。

2)了解串操作指令的使用方法。

2.实验设备

微型计算机、emu8086

3.实验原理

串操作指令包括:1)串传送指令MOVS;2)串比较指令CMPS;3)串扫描指令SCAS;4)串装入指令LODS;5)串存储指令STOS。

4.实验容

(1)创建COM TEMPLATE程序,输入以下程序段,单步执行并根据结果回答后面的问题。

CLD

MOV DI,1000H

MOV AX,55AAH

MOV CX,10H

REP STOSW

上述程序段执行后:

1)从ES:1000H开始的16个字单元的容是什么?(提示:在“emulator”对话框中,选择“view”菜单中的“memory”菜单项可以察看存单元的值)

2)DI=?CX=?解释其原因。

(2)在上题的基础上,再输入以下程序段并执行,回答后面的问题。

MOV SI,1000H

MOV DI,2000H

MOV CX,20H

REP MOVSB

程序段执行后:

1)从ES:2000H开始的16个字单元的容是什么?

2)SI=?DI=?CX=?并分析之。

(3)在以上两题的基础上,再分别输入以下三个程序段并运行之。

程序段1:

MOV SI,1000H

MOV DI,2000H

MOV CX,10H

REPZ CMPSW

程序段1执行后:

1)ZF=?根据ZF的状态,两个串是否比较完了?(提示:在emulator对话框中,单击

按钮可以察看标志寄存器的容)

2)SI=?DI=?CX=?并分析之。

程序段2:

MOV [2008H],4455H

MOV SI,1000H

MOV DI,2000H

MOV CX,10H

REPZ CMPSW

程序段2执行后:

1)ZF=?根据ZF的状态,两个串是否比较完了?

2)SI=?DI=?CX=?并分析之。

程序段3:

MOV AX,4455H

MOV DI,2000H

MOV CX,10H

REPNZ SCASW

程序段3执行后:

1)ZF=?根据ZF的状态,在串中是否找到了数据4455H?

2)SI=?DI=?CX=?并分析之。

(4)从DS:6000H开始存放有一个字符串"This is a string",把这个字符串从后往前传送到DS:6100H开始的存区域中(即传送结束后,从DS:6100H开始的存单元的容为"gnirts a si sihT"),试编写COM TEMPLATE程序并上机验证。(提示:可以在数据区中直接输入字符串)

5.实验习题

1)简要说明执行串操作指令之前应初始化哪些寄存器和标志位。

2)总结串操作指令的用途及使用方法。

6.实验报告要求

整理源程序段和运行结果,对结果进行分析。

1.2.5DOS功能调用

1.实验目的

1)掌握简单的DOS系统功能调用。

2.实验设备

微型计算机、emu8086

3.实验原理

本节要用到的DOS功能命令包括:

从键盘输入单个字符的语句如下:

MOV AH,1

INT 21H

以上两条指令执行后,(AL)=从键盘输入的字符

在屏幕上显示单个字符的语句如下:

MOV DL,<要显示的字符>

MOV AH,2

INT 21H

注意:源程序中所有语法符号都必须是半角符号,而且不允许汉字字符。

在屏幕上显示字符串的语句如下:

LEA DX,<字符串变量名,字符串必须以字符′$′作为结束>

MOV AH,9

INT 21H

从键盘上输入字符串的语句如下:

LEA DX,<键盘缓冲区名>

MOV AH,0AH

INT 21H

4.实验容

(1)字符的输入和输出

从键盘读入一个小写字母,输出字母表中倒数与该字母序号相同的那个字母。例如输入首字母a,则输出最后一个字母z,输入第4个字母d则输出倒数第4个字母w。

程序流程图如图1-1所示。

图1-1字符输入输出的程序流程图

程序框架如下:

data segment

pkey db "press any key...$"

ends

stack segment

dw 128 dup(0)

ends

code segment

start:

; set segment registers:

mov ax, data

mov ds, ax

mov es, ax

从键盘输入一个字符的指令序列

根据流程图中转换算法编制的指令序列

用于显示结果的指令序列

lea dx, pkey

mov ah, 9

int 21h ; output string at ds:dx

; wait for any key....

mov ah, 1

int 21h

mov ax, 4c00h ; exit to operating system.

int 21h

ends

end start ; set entry point and stop the assembler.

编写EXE TEMPLATE程序(提示:计算’z’-al+’a’时,需要用sub指令),观察执行结果。

(2)字符串的输入和输出

从键盘输入一个字符串(以下说明中,假定键盘缓冲区的名字为KBUF,要显示的字符串变量名为STR),将输入的字符串传送给STR变量,在屏幕上显示STR变量中的容。

程序流程图如图1-2所示。

图1-2字符串输入输出的程序流程图程序框架如下:

data segment

KBUF db 20, 0, 20 dup(20h)

STR db 20 dup(20h), ′$′

pkey db "press any key...$"

ends

stack segment

dw 128 dup(0)

ends

code segment

start:

; set segment registers:

mov ax, data

mov ds, ax

mov es, ax

从键盘输入字符串的指令序列

将KBUF传送到STR的指令序列

显示STR容的指令序列

lea dx, pkey

mov ah, 9h

int 21h ; output string at ds:dx

; wait for any key....

mov ah, 1

int 21h

mov ax, 4c00h ; exit to operating system.

int 21h

ends

end start ; set entry point and stop the assembler.

编写EXE TEMPLATE程序(提示:CX的初始值不为0),观察执行结果。

5.实验习题

1)对实验容1,在程序中增加显示提示字符串"Please input a lowercase letter"和" The inverse letter is:",修改程序并上机验证。

2)对实验容2,在程序中增加显示提示字符串"Please input a string"和"The string you input is:",修改程序并上机验证。

6.实验报告要求

1)整理源程序段和运行结果。

2)说明DOS系统功能调用的10号功能对键盘缓冲区格式上有何要求。

3)DOS系统功能调用中的1、2、9、10号功能的输入输出参数有哪些?分别放在什么寄存器中?

4)总结汇编语言程序中如何实现字符和字符串的输入输出。

1.2.6顺序程序

1.实验目的

1)了解8086汇编程序的基本结构;

2)掌握顺序程序的基本设计方法。

2.实验设备

微型计算机、emu8086

3.实验原理

顺序程序是控制流仅有一个走向的程序,它主要用于解决一些无需进行判断分支,也无需循环执行的简单问题。

本节的实验容与乘法和除法运算有关。无符号数乘法运算使用MUL指令,有符号数乘法运算使用IMUL指令。乘法运算属于隐含操作数的运算,因此在使用乘法指令前,需要先将乘数放入AL(8位乘法)或AX(16位乘法)中。乘法指令执行后,乘积在AX(8位乘法)或DX:AX(16位乘法)中。无符号数除法运算使用DIV指令,有符号数除法运算使用IDIV 指令。除法运算属于隐含操作数的运算,因此在使用除法指令前,需要先将被除数放入AX (8位除法)或DX:AX(16位除法)中。当除数为8位时,被除数应为16位;除数为16位时,被除数应为32位。对无符号数除法,当被除数字长不够时,高位部分可直接补0;而对有符号数除法,当被除数字长不够时,必须使用符号扩展指令进行扩展。除法运算执行后,结果在AX(8位除法)或DX:AX(16位除法),其中AL(8位除法)或AX(16位除法)中是商,AH(8位除法)或DX(16位除法)中是余数。

4.实验容

在NUM变量中定义了5个符号数(字节类型),分别是U= 09H,V=16H,W=04H,X=17H,Y=05H,计算(U+V -W*X)/Y,将结果显示在屏幕上。

程序流程图如图1-3。

图1-3顺序程序的程序流程图

程序框架如下:

data segment

NUM db 09,16h,04h,17h,05h ;定义U,V,W,X,Y

pkey db "press any key...$"

ends

code segment

start:

; set segment registers:

mov ax, data

mov ds, ax

mov es, ax

lea si,NUM

;计算W*X,结果保存到al中

mov bl, al

;计算U+V,结果保存到al中

;计算U+V-W*X,结果保存到al中

cwb

;计算(U+V-W*X)/Y

mov bl,al

;显示结果的高4位

;显示结果的低4位

lea dx, pkey

mov ah, 9

int 21h ; output string at ds:dx

; wait for any key....

mov ah, 1

int 21h

mov ax, 4c00h ; exit to operating system.

int 21h

ends

end start ; set entry point and stop the assembler.

编写EXE TEMPLATE程序,观察执行结果。

5.实验习题

将数据改为U=0ABH,V=0EFH,W=12H,X=10H,Y=05H,上机验证结果是否正确?问题出在何处,应如何解决?

6.实验报告要求

1)写出完整的程序。

2)使用不同数据测试程序并解释运行结果。

1.2.7分支程序

1.实验目的

1)了解8086汇编程序的基本结构;

2)掌握分支程序的基本设计方法。

2.实验设备

微型计算机、emu8086

3.实验原理

分支程序是根据不同条件执行不同处理过程的程序。分支程序的结构有两种:—种是二路分支,—种是多路分支。它们的共同特点是在满足某一条件时,将执行多个分支中的某—分支。

本节的实验容与数值和ASCII码间的转换有关,由于字符′0′~′9′的ASCII码是30H~39H,因此将数值0~9转换成对应的ASCII码时,需要在其基础上加30H;由于字符′A′~′F′的ASCII码是41H~46H,因此将数值A~F转换成对应的ASCII码时,需要在其基础上加37H。另外,二进制数与十六进制数之间的关系是:每4位二进制数等于1位十六进制数。

在屏幕上显示单个字符的语句如下:

MOV DL,<要显示的字符>

MOV AH,2

INT 21H

4.实验容

从键盘输入一个十进制正整数N(10≥N≥99),将其转换成十六进制数,转换的结果显示在屏幕上。提示:键盘输入的容都是ASCII码形式。

程序流程图如

图1-4。

汇编语言课程设计

沈阳大学

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所示。 沈阳大学

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)

汇编语言-课程设计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型数据转换为字符串,这样我们才能调用第一个程序将其打印出

汇编课程设计

燕山大学 汇编语言课程设计说明书 题目:计算机钢琴程序 交通灯控制系统 学院(系):信息科学与工程学院 年级专业: 10级计算机科学2班 学号: 100104010113 学生姓名:马强 学号: 100104010116 学生姓名:夏洋 指导教师:何海涛、邹晓红 完成日期: 2013年7月3日

目录 1.课程设计的目的和意义........................................................................................................... - 2 - 1.1课程设计目的................................................................................................................ - 2 - 1.2课程设计的意义............................................................................................................ - 2 - 2.题目一:计算机钢琴程序....................................................................................................... - 2 - 2.1系统的主要功能............................................................................................................ - 2 - 2.2总体设计方案................................................................................................................ - 2 - 2.2.1扬声器驱动方式................................................................................................. - 2 - 2.2.2延时原理............................................................................................................. - 3 - 2.2.3键盘控制发声程序............................................................................................. - 4 - 2.2.4设计总结............................................................................................................. - 5 - 2.3作品使用说明................................................................................................................ - 6 - 3.题目二:交通灯控制系统....................................................................................................... - 6 - 3.1系统的主要功能............................................................................................................ - 6 - 3.2 系统工作原理............................................................................................................... - 6 - 3.2.1 8259的工作原理................................................................................................ - 6 - 3.2.2 8255A的工作原理:...................................................................................... - 7 - 3.2.3 8253的工作原理:............................................................................................ - 7 - 3.3总体设计方案................................................................................................................ - 7 - 3.3.1程序流程图......................................................................................................... - 8 - 3.3.2接口电路图....................................................................................................... - 11 - 3.4交通灯的设计总结...................................................................................................... - 11 - 4.课程设计心得体会................................................................................................................. - 12 - 5.参考文献................................................................................................................................. - 12 - 6.附录:程序代码..................................................................................................................... - 12 - 6.1计算机钢琴程序代码.................................................................................................. - 12 - 6.2交通灯控制系统代码.................................................................................................. - 14 -

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

汇编语言课程设计报告 ( 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所示

51汇编语言程序设计

第四章MCS-51汇编语言程序设计 重点及难点: 单片机汇编语言程序设计的基本概念、伪指令、单片机汇编语言程序的三种基本结构形式、常用汇编语言程序设计。 教学基本要求: 1、掌握汇编语言程序设计的基本概念; 2、掌握伪指令的格式、功能和使用方法; 3、掌握顺序结构、分支结构和循环结构程序设计的步骤和方法; 4、掌握常用汇编语言程序设计步骤和方法。 教学内容 §4.1汇编语言程序设计概述 一、汇编语言的特点 (1)助记符指令和机器指令一一对应,所以用汇编语言编写的程序效率高,占用存储空间小,运行速度快,因此汇编语言能编写出最优化的程序。 (2)使用汇编语言编程比使用高级语言困难,因为汇编语言是面向计算机的,汇编语言的程序设计人员必须对计算机硬件有相当深入的了解。 (3)汇编语言能直接访问存储器及接口电路,也能处理中断,因此汇编语言程序能够直接管理和控制硬件设备。 (4)汇编语言缺乏通用性,程序不易移植,各种计算机都有自己的汇编语言,不同计算机的汇编语言之间不能通用;但是掌握了一种计算机系统的汇编语言后,学习其他的汇编语言就不太困难了。 二、汇编语言的语句格式 [<标号>]:<操作码> [<操作数>];[<注释>] 三、汇编语言程序设计的步骤与特点 (1)建立数学模型 (2)确定算法 (3)制定程序流程图 (4)确定数据结构 (5)写出源程序 (6)上机调试程序 §4.2伪指令 伪指令是程序员发给汇编程序的命令,也称为汇编命令或汇编程序控制指令。 MCS- 51常见汇编语言程序中常用的伪指令:

第四章MCS-51汇编语言程序设计91 1.ORG (ORiGin)汇编起始地址命令 [<标号:>] ORG <地址> 2.END (END of assembly)汇编终止命令 [<标号:>] END [<表达式>] 3.EQU (EQUate)赋值命令 <字符名称> EQU <赋值项> 4.DB (Define Byte)定义字节命令 [<标号:>] DB <8位数表> 5.DW (Define Word)定义数据字命令 [<标号:>] DW <16位数表> 6.DS (Define Stonage )定义存储区命令 [<标号:>] DW <16位数表> 7.BIT位定义命令 <字符名称> BIT <位地址> 8.DA TA数据地址赋值命令 <字符名称> DATA <表达式> §4.3单片机汇编语言程序的基本结构形式 一、顺序程序 [例4-1]三字节无符号数相加,其中被加数在内部RAM的50H、51H和52H单元中;加数在内部RAM的53H、5414和55H单元中;要求把相加之和存放在50H、51H和52H单元中,进位存放在位寻址区的00H位中。 MOV R0 ,# 52H ;被加数的低字节地址 MOV R1 ,# 55H ;加数的低字节地址 MOV A ,@ R0 ADD A ,@ R1 ;低字节相加 MOV @ R0 , A ;存低字节相加结果 DEC R0 DEC R1 MOV A ,@ R0 ADDC A ,@ R1 ;中间字节带进位相加 MOV @ R0 , A ;存中间字节相加结果 DEC R0 DEC R1 MOV A ,@ R0 ADDC A ,@ R1 ;高字节带进位相加 MOV @ R0 , A ;存高字节相加结果 CLR A

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

计算机与信息工程学院《汇编语言》课程设计四则运算器的设计 专业:计算机科学与技术 班级:控制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

汇编语言课程设计报告

农林大学金山学院 课程设计报告 课程名称:汇编语言课程设计 课程设计题目:动画设计“我爱大自然”姓名: 系:信息与机电工程系 专业:电子信息工程 年级:2008级 学号:082230066 指导教师:\ 职称:助教 2009~2010学年第二学期

目录 1 课程设计的目的 (2) 2 课程设计的要求 (2) 3课程设计报告容 (2) 3.1设计思路 (2) 3.2程序流程图 (2) 3.3设计源程序 (5) 3.4动画示意图 (19) 4 总结 (20) 5参考文献 (20) 6评分标准 (21)

动画设计“我爱大自然” 一、课程设计的目的 《汇编语言课程设计》是电子信息工程专业集中实践性环节之一,是学习完《汇编语言》课程后进行的一次全面的综合练习。其目的是: 培养学生熟练掌握汇编语言指令系统,深化和巩固指令系统和编程方法,提高学生的编程应用能力。为将来从事专业工作打下基础,培养良好的职业道德和严谨的工作作风。 二、课程设计的要求 1)具备初步的独立分析和解决问题的能力; 2)初步掌握问题分析、系统设计、程序编码、测试等基本方法和技能; 3)提高综合运用所学的理论知识和方法的能力; 4)训练用系统的观点和软件开发一般规进行软件开发,培养科学的工作方法和作风; 5)设计的题目要求达到一定工作量,并具有一定的深度和难度; 6)编写出课程设计说明书。 三、课程设计报告容 (一)设计思路 “我爱大自然”这个程序中包含了比较多的景物,既有静态的也有动态的,其中还有一段音乐。为了节省存储空间,提高程序设计的效率和质量,使程序简洁、清晰,便于阅读,同时也为了便于修改和扩充,采用子程序设计技术和宏定义,根据程序要实现的若干主要功能及个功能块要调用的公共部分,将程序划分为若干个相对独立的模块,为每个模块编制独立的程序段,最后将这些子程序根据调用关系连成一个整体。 这样,整个程序就被分为几个子程序的有机统一。根据BIOS中断调用原理,设置80×25彩色文本显示方式,分别编写一个子程序显示“I LOVE NATURE,LET US GO AIRING”和一个子程序在屏幕上“画”树。这两个子程序所体现出来的事物都是的。为了实现小鸟

汇编语言课程设计-学生成绩管理系统

1、课程设计的目的、任务 《汇编语言》课程设计对于巩固汇编语言理论知识,加强学生的实际动手能力和提高学生综合素质十分必要。课程设计的目的主要是通过程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。 2、软件需求分析和设计 2.1学生成绩管理系统是对学生成绩的管理,其中包括以下几个模块: (1).插入一个数据(插入学生学号以及语数外三个成绩)。 (2)修改一个数据。 (3)删除学生成绩数据。 (4)查找学生成绩。 (5)查看学生成绩的排名 (6)查看学生成绩分布 (7)按esc键退出系统 2.2学生成绩管理系统应该包含以下信息:学号,语文成绩,英语成绩,数学成绩。因此,系统应该提供以下功能: (1)输出显示菜单。 (2)输入学生的成绩 (3)修改学生成绩 (4)删除学生成绩 (5)查询学生成绩 (6)显示学生成绩排名 (7)显示成绩分布统计 (8)按esc键退出系统

2.3依据程序的功能需求,该系统的功能结构图如下 系统功能结构图 2.4 程序流程图:

主程序流程图查找学生成绩

插入学生学号及成绩修改学生的成绩 显示各个学科各分数段的人数 3、程序实现说明

3.1学生管理系统中各子程序如下: (1).输入全部学生学号以及语文,英语,数学三科的成绩。 子程序名:insert 子程序描述:该子程序为输入字程序。系统在开始的时候是没有数据的,通过该子程序可以初始化系统,将学生的学号及成绩输入系统。 代码: insert proc near ;定义进程子程序:插入学生,学号及 成绩 call input ;调用input add n,1 ret insert endp (2).修改输入的成绩。 子程序名:modify 子程序描述:通过子程序修改学生的成绩 代码: modify proc near ;定义进程子程序:修改学生学号,成绩 md1:output mess1 ;输出mess1 shuru ;调用宏shuru:二位数据输入 mov bl,n mov bh,0 mov al,dl mov si,0 md: cmp al,xh[si] ;先查找输入的学生是否存在 je qq1_1 ;查到的话,就跳转到qq1_1输入修改的值, 也就是重新输入。;结果相等则跳转到qq1_1 add si,1

汇编语言课程设计题2012

《汇编语言与微机原理》课程设计题目(2012) 题目一定时/计数技术应用程序设计 设计一个数字钟,在屏幕上显示分:秒(mm:ss)。按下非空格键开始计时,并显示 00:00,每过1 秒,ss 增1,到60 秒mm 增1,到60 分就是1 小时。经过1 小时后又回到00:00 重新计数。当按下空格键时,程序返回DOS,数字钟消失。 题目二信息检索程序设计 完成一个信息检索系统。在数据区,有9 个不同的信息,编号0-8,每个信息包括40 个 字符。从键盘接收0-8 之间的一个编号,然后再屏幕上显示出相应编号的信息内容,按“q” 键退出。 题目三图形变换程序设计 完成一个图形变换的程序,系统具有4 种可选择的功能,按字母“Y”画一个用点组成的 圆;按字母“S”画一个用不同颜色填充的三角形;按字母“Z”画一个用不同颜色填充的 矩形;按“q”键退出。 题目四代码转换程序设计 完成一个字母或数制之间的转化程序,主程序分别具有 5 种可选择的子功能,按相应的字符 可分别进入相应的子功能并在屏幕上显示结果,按“q”键退出。 5 种可选择的子功能分别为: 1)实现小写字母向大写字母的转换 2)实现大写字母向小写字母的转换 3)实现二进制数向十六进制数的转换 4)实现十六进制数向二进制数的转换 5)实现十六进制数向十进制数的转换 题目五中断处理程序设计 编写一个中断处理程序,要求在主程序运行过程中,每隔20 秒响铃一次,同时在屏幕上 显示信息”The bell is ring!”,按键后恢复原状。 题目六指法练习程序 1.从屏幕上方以一定的时间间隔随机落下可显示字符,字符的出现位置亦是随机的; 2.在多个字符(可以简化为仅有一个字符)下落的过程中可输入任意键,若键入与其中的 任意一个字符相匹配的键,则该字符高亮显示并发出蜂鸣声,同时计分; 3.按ESC 键结束练习并显示命中率; 4.再次按ESC 键退出。 题目七密码设置模拟 编写程序可以进行密码的设置(第一次)和修改(已设置密码)。要求输入的密码用*显示。 题目八计算器

2013年汇编语言程序设计课程设计

2013年汇编语言程序设计课程设计 一、作业题目 2013年汇编语言程序设计大型作业给出了3道题目,供大家凭自己的兴趣自由选择其中之一完成。这3道作业题目如下: 1.通用进制转换程序 2.两位数加减乘除程序 3.高精度乘法程序 二、交付的文档材料 1.程序系统说明书 内容包括: (1)程序系统总体的功能模块调用图及模块功能说明。 (2)程序系统的详细框图(每个子程序的流程图)。 (3)程序界面图。 (4)程序清单。 2.设计和实现的技术特点、不足和改进的建议 3.课程设计的体会。 4.程序源程序和可执行程序 三、评分说明 独立完成:60分,雷同或抄袭者不及格; 设计技术及技巧使用:25分; 文档质量:10分; 按时完成:5分。 可以自主扩充功能,有创新加分。 四、参考书 1.课本 2.《IBM-PC汇编语言程序设计》清华大学出版社 五、交付时间:第十八周的周五。

题目一通用进制转换程序 一、题目要求 实现不同进制之间的相互转换。(常用进制二、八、十、十六进制) 程序功能: 1.能通过键盘输入任一种进制,有相应的提示信息。 例如please input a Binary data: 2. 输入的数据要有容错检测。 例如:输入的二进制数据为1200,则应该出现错误信息提示。(因为2在二进制中是不允许的 3.输出的数据要有进制选择。 例如:请选择输出数据的进制(0: 二进制,1: 八进制……) 二、重点考察 1.用汇编实现简单的算法。 2.用汇编实现简单的数据结构。 3.可执行程序的参数使用。 4.INT 21H系统功能调用中有关显示与输出的操作 5.综合解决问题的能力。

汇编语言_课程设计1

汇编语言课程实验报告 实验名称 课程设计1 实验环境 硬件平台:Intel Core i5-3210M 操作系统:DOSBox 0.74 in Windows 8.1 软件工具:Turbo C 2.0, 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型数据转换为字符串,这样我们才能调用第一个程序将其打印出 来。第二个程序汇编代码如下: ;名称:dtoc_word ;功能:将一个word型数转化为字符串 ;参数:(ax)=word型的数据,ds:si指向字符串的首地址 ;返回:ds:[si]放此字符串,以0结尾 dtoc_word: push ax push bx

汇编语言课程设计

汇编语言课程设计

福建农林大学金山学院 课程设计报告 课程名称:汇编语言课程设计 课程设计题目:动画设计“我爱大自然” 姓名: 系:信息与机电工程系 专业:电子信息工程 年级:级 学号: 指导教师:\ 职称:助教 ~第二学期

目录 1 课程设计的目的 (2) 2 课程设计的要求 (2) 3课程设计报告内容 (2) 3.1设计思路 (2) 3.2程序流程图 (2) 3.3设计源程序 (5) 3.4动画示意图 (19) 4 总结 (20) 5参考文献 (20) 6评分标准 (21)

动画设计“我爱大自然” 一、课程设计的目的 《汇编语言课程设计》是电子信息工程专业集中实践性环节之一,是学习完《汇编语言》课程后进行的一次全面的综合练习。其目的是:培养学生熟练掌握汇编语言指令系统,深化和巩固指令系统和编程方法,提高学生的编程应用能力。为将来从事专业工作打下基础,培养良好的职业道德和严谨的工作作风。 二、课程设计的要求 1)具备初步的独立分析和解决问题的能力; 2)初步掌握问题分析、系统设计、程序编码、测试等基本方法和技 能; 3)提高综合运用所学的理论知识和方法的能力; 4)训练用系统的观点和软件开发一般规范进行软件开发,培养科学的 工作方法和作风; 5)设计的题目要求达到一定工作量,并具有一定的深度和难度; 6)编写出课程设计说明书。 三、课程设计报告内容 (一)设计思路 “我爱大自然”这个程序中包含了比较多的景物,既有静态的也有动态的,其中还有一段音乐。为了节省存储空间,提高程序设计的效率和质量,使程序简洁、清晰,便于阅读,同时也为了便于修改和扩充,采用子程序设计技术和宏定义,根据程序要实现的若干主要功能及个功能块要调

汇编语言程序设计

《汇编语言程序设计》课程教学大纲 学时:32 学分:2 理论学时:24 实验学时:8 面向专业:电科、电信、通信课程代码:B2700009 先开课程:C语言程序设计课程性质:必修 执笔人:王艳春审定人:陈龙猛、张金政 第一部分:理论教学部分 一、说明 1、课程的性质、地位和任务 本课程属于专业基础课,是电科、电信和通信专业学生必修的核心课程之一,是进一步学习微机原理、操作系统等课程的基础。掌握它有助于提高学生对计算机系统的设计、研究、开发和应用能力。汇编语言是一种面向机器、实践性很强的程序设计语言,必须结合一种实际的计算机来组织教学。因此,本课程选择最广泛使用的IBM PC作为具体的机型来介绍。通过课堂教学和上机实践,培养学生用汇编语言进行编程的思路、方法,养成良好的程序设计习惯,并了解底层I/O 驱动软件的编程方法,熟悉源程序汇编、链接和调试运行的步骤和方法,掌握dos、BIOS功能的调用方法及使用debug工具的调试手段,为后续课的学习打下扎实的基础。 2、课程教学和教改基本要求 课程的目的与教学基本要求:本课程主要介绍汇编语言和宏汇编的基本概念,80X86CPU的指令系统和寻址方式;介绍汇编语言程序格式、伪操作和上机全过程。通过实际例子,详细叙述顺序、分支、循环、子程序等基本程序结构以及程序设计的基本方法和技巧。学习这门课程,应达到以下几个要求: ①掌握汇编语言的基本理论知识和有关概念;掌握用汇编语言编写源程序的基本原则、方法和技巧; ②具有阅读,分析汇编语言程序的能力; ③通过上机实践,能够熟练地掌握汇编语言程序的编辑、汇编、连接、运行 过程及debug工具的调试手段。

汇编语言程序课程设计_图文.

汇编课程设计与学习总结 二O 一六年六月 课程设计任务安排: Power idea公司从1975年成立一直到1995年的基本情况如下表所示,该数据已在程序中定义好(见图1-1: 表1-1:公司基本情况

图1-1:程序中数据定义 计算data数据段中每一年的人均收入,并将所有数据按照如图1-2所示的格式在屏幕上显示出来。

图1-2:效果图

汇编程序语言学习总结

(这部分要求:根据这学期学习的课程以及大学期间学习的几种编程语言、单片机以及ARM,通过分析比较对汇编语言进行总结,描述清楚该语言的作用,特点,与其他语言的区别以及将来的主要作用范围。内容可以结合文字,图表,不少于两页。 (格式要求:宋体,小四,行间距为20磅。图表的标题为宋体五号 在上学期我们专业开设了单片机课程,在学习单片机的过程中,我们就接触到了汇编语言,但那时候没有系统的学习,只知道像mov、jump、inc这样一些常用的简单指令。而在最后单片机的课程设计中,我们采用的是c语言来编程。那时候认为汇编语言并没有什么大的作用,汇编语言能做的,c语言也都能做,而且更为简单。但真正接触这门课后,才发现汇编语言有它自己独特的作用,而且也不是很容易就可以弄懂的。相比较其他高级语言如C++、java等,电脑等于在迁就人的思维方式。但学汇编,人却必须要去迁就电脑的思维方式。要设身处地地用电脑的角度去思考问题,这就是我们学习汇编语言时遇到的最大的障碍。通过这一学期的学习,我对汇编只是有了初步的掌握。现在我来通过比较汇编语言和几种高级语言的区别来对汇编语言作一个小小的总结。 在我们学过的高级语言,Java和C++都是面向对象语言,它们都能够实现面向对象思想(封装、继承、多态。 C++是在C语言基础上进行扩展而来的一门面向对象的程序设计语言。相比其他语言,它具有很多优点和特点的,它对面向对象的支持,让我们可以将一个功能模块封装成一个类,对于使用这个功能模块的人,只需调用这个类的方法就可以了,不必关心功能如何实现的,这一点可以在开发大型项目的时候提高开发效率,减少开发周期。同时,可以通过对类进行派生来扩展模块的功能,而不影响原有的功能。C++的异常处理机制可以很好地对代码的异常进行捕捉,保证了在程序运行时出现错误不至于整个崩溃掉,也为我们对于运行时错误的处理提供了一种有效的途径。C++程序的依赖性小,对C++代码进行静态连接,就能保证生成的可执行程序在别的电脑上直接运行。

汇编语言课程设计四则运算计算器

微机原理实验报告 汇编语言课程设计报告 ( 2012 -- 2013 年度第1 学期) 实验名称:实现加减乘除四则运算的计算器 专业生物医学工程 学生姓名周炳威 班级B100904 学号B10090406 指导教师乐洋

实现加减乘除四则运算的计算器 1 实验目的 深化学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法,提高分析问题、解决问题的综合应用能力。通过使用汇编语言设计实现简单计算器,以此进一步了解和掌握对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识的有效运用 2 实验内容 课题名称:实现加减乘除四则运算的计算器 主要功能:实现一个简单的计算器,要求:编写一个程序,每运行一次可执行程序,可以实现加减乘除四则运算。计算器是最简单的计算工具,简单计算器具有加、减、乘、除四项运算功能。 3 实现方法 本次汇编语言课程设计的最终目的是要实现一个简单计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输入的运算是四则运算中的哪一个运算。此外,运算过程中的进位或是借位,选择用什么样的方式进行输出,如何实现清屏等也是要解决的问题。 第一步,用INT 21H的1号功能调用来进行输入。利用1号功能调用来输入,即把单个字符一个个的输入并存储到一个数据区里。我们要做的是两个数的运算,先认定输入的格式为1234+5678=或者1111*2222=,当然如果输入不是这样的格式计算出来的结果就不一定是我们想要的结果了。在存储的时候也是有选择的存储,当输入的并非格式里所要求的字符时则报错。 第二步,设计程序进行判断所输入的算式是做加法运算、减法运算、乘法运算还是除法运算,即判断输入的运算符是‘+’号、‘-’号、‘*’号、‘/’号中的哪一个,因为输入的格式固定了,所以只需要把存进数据区的第三个字符拿来与加减乘除四个运算符号进行比较,和哪一个运算符号一样就调用相对应的运算模块进行计算。 2

汇编教程汇编语言编程实例

汇编语言编程实例一这一章,我们要把我们已学的知识集合起来。具体来讲,我们来写一个使用ODBC APIs的程序.为简单起见,这个程序中我使用Microsoft的Access数据库(Microso ft Access 97) . 注意:如果你使用的windows.inc 是1.18及其以下版本,在开始编译之前要修改其中的一个小bug.在windows.inc中查找 "SQL_NULL_HANDLE",将得到下面这行: SQL_NULL_HANDLE equ 0L 将0后面的"L"删除,象这样: SQL_NULL_HANDLE equ 0 这个程序是一个基于对话框的程序,有一个简单的菜单.当用户选择"connect"时,它将试图连接test.mdb数据库,如果连接成功,将显示由ODBC驱动程序返回的完整连接字符串.接下来,用户可选择"View All Records"命令,程序会使用listview control来显示数据库中的所有数据.用户还可以选择"Query"命令来查询特定的记录.例子程序将会显示一个小对话框提示用户输入想找的人名.当用户按下OK钮或回车键,程序将执行一个查询来查找符合条件的记录.当用户完成对数据库的操作时,可以选择"disconnect"命令与数据库断开连接. 现在看一下源程序: .386 .model flat,stdcall include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\odbc32.inc include \masm32\include\comctl32.inc include \masm32\include\user32.inc includelib \masm32\lib\odbc32.lib includelib \masm32\lib\comctl32.lib includelib \masm32\lib\kernel32.lib includelib \masm32\lib\user32.lib IDD_MAINDLG equ 101 IDR_MAINMENU equ 102 IDC_DATALIST equ 1000 IDM_CONNECT equ 40001 IDM_DISCONNECT equ 40002 IDM_QUERY equ 40003 IDC_NAME equ 1000 IDC_OK equ 1001 IDC_CANCEL equ 1002 IDM_CUSTOMQUERY equ 40004 IDD_QUERYDLG equ 102 DlgProc proto hDlg:DWORD, uMsg:DWORD, wParam:DWORD, lParam:DWORD

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