河北工业大学汇编语言程序设计实验

河北工业大学汇编语言程序设计实验
河北工业大学汇编语言程序设计实验

汇编语言程序设计实验

实验一顺序与分支程序设计

一、实验目的

1)掌握顺序程序设计方法。

2)掌握分支程序的结构及分支程序的设计,调试方法。

3)学习数据传送及算术和逻辑运算指令的用法。

4)熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序的过程。

二、实验内容

1)有一字变量BUF1是以原码表示的有符号数,要求将其转换为反码和补码,分别存入BUF2和BUF3单元,并在屏幕上显示出来。

DATA SEGMENT;数据段

BUF1DW7898H

BUF2DW4DUP(0),0AH,0DH,'$'

BUF3DW4DUP(0),'$'

DATA ENDS;数据段结束

CODE SEGMENT;代码段

ASSUME CS:CODE,DS:DATA;段寄存器关联说明伪指令

BEGIN:MOV AX,DATA

MOV DS,AX;将数据段的基地址装入数据段寄存器

DS

MOV AX,BUF1;将字型变量BUF1的值装入AX寄存器

ADD AX,0;AX寄存器里的数据加0,以便进行转移测试

JS NEXT;判断(AX)的正负,若为负则转到NEXT,为正则往下顺序执行。

MOV BUF2,AX;为正,反码与原码一样

MOV BUF3,AX;为正,补码与原码一样

JMP EEE

NEXT:AND AX,7FFFH;将符号位变为0

NOT AX;求反码

MOV BUF2,AX;将BUF1的反码装入BUF2

INC AX;求补码

MOV BUF3,AX;将补码装入BUF3 EEE:MOV CX,0004H;将0004H装入CX计数器寄存器中

MOV DI,OFFSET BUF2;将DI指向变量

BUF2开始的存储单元

MOV DX,[DI];将DI所指的数

据装入DX寄存器中

ADD DI,03;将DI指针下移三

个字

BBB:MOV AX,DX;将DX中的内容装入AX寄存器中

AND AX,000FH;即使BUF2的低四

位不变,其余均变为0

CMP AL,0AH;比较[AL]与0AH的大小,以便能正确转换为0-9的ASCII值

JB QQQ;若[AL]<0AH,则转到

QQQ,否则,顺序执行

ADD AL,07H;因为[AL]>0AH,所以[AL] +07H,使得AL能转换成相应数字的ASCII值

QQQ:ADD AL,30H;将[AL]转换成相应数字的ASCII 值

MOV[DI],AL;将AL中的内容装入以

DS中的内容为段基地址,以DI的内容为偏移地址的存储单元中

DEC DI;DI=DI-1,即将DI指向前

一个存储单元

PUSH CX;保存CX寄存器的内容

MOV CL,04H;给CL寄存器赋值为04H

SHR DX,CL;将[DX]逻辑右移四位

POP CX;恢复CX寄存器的内容

LOOP BBB;循环判断语句,CX=CX-1,若CX 不等于0,则转到BBB,将下一个低四位存入存储单元中,否则循环结束MOV CX,0004H;给CX寄存器赋值为0004H

MOV SI,OFFSET BUF3;将SI指向变量BUF3开始的存储单元

MOV DX,[SI];将SI所指的数据装入DX寄存器中

ADD SI,03H;将DI指针下移三个字

CCC:MOV AX,DX;将DX中的内容装入AX寄存器中

AND AX,000FH;即使BUF3的低四位不变,其余均变为0

CMP AL,0AH;比较[AL]与0AH的大小,以便能正确转换为0-9的ASCII值

JB DDD;若[AL]<0AH,则转到DDD,否则,顺序执行

ADD AL,07H;因为[AL]>0AH,所以[AL]+07H,使得AL能转换成相应数字的ASCII值

DDD:ADD AL,30H;将[AL]转换成相应数字的ASCII值MOV[SI],AL;将AL中的内容装入以DS中的内容为段基地址,以SI的内容为偏移地址的存储单元中

DEC SI;SI=SI-1,即将SI指向前一个存储单元

PUSH CX;保存CX寄存器的内容

MOV CL,04H;给CL寄存器赋值为04H

SHR DX,CL;将[DX]逻辑右移四位

POP CX;恢复CX寄存器的内容

LOOP CCC;循环判断语句,CX=CX-1,若CX 不等于0,则转到CCC,将下一个低四位存入存储单元中,否则循环结束MOV DX,OFFSET BUF2;将BUF2的偏移地址装入DX寄存器中

MOV AH,09H

INT21H;在屏幕上显示BUF1的反码

MOV DX,OFFSET BUF3

MOV AH,09H

INT21H;在屏幕上显示BUF1的补码

MOV AH,4CH

INT21H;带返回码终止

CODE ENDS

END BEGIN

运行程序:执行jing1.exe敲回车:

2)有两个两字节无符号数分别放在存储单元A、B起始的缓冲器中,求其和,结果放在A起始的缓冲区并在屏幕上显示。相加若有进位不存入存储单元。

DATA SEGMENT;数据段

A DB34H,18H,2DUP(0),'$';定义字节型变量,其后的每操作数都占有一个字节

B DB56H,83H;定义字节型变量,其后的每操作数都占有一个字节

DATA ENDS;数据段结束

CODE SEGMENT;代码段

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX;将数据段基地址装入数据段寄存器DS

MOV AL,A;将A所指的数装入AL寄存器中

MOV BL,B;将B所指的数装入BL寄存器中

ADD AL,BL;AL+BL->AL

MOV AH,A+1;将A所指的下一个字节的数据装入AH

MOV BH,B+1;将B所指的下一个字节的数据装入BH

ADC AH,BH;AH与BH进行带进位加法

MOV A,AL;将第一个无符号数的相加结果放在以A起始的缓冲区

MOV A+1,AH;将第二个无符号数的相加结果放在以A+1起始的缓冲区

MOV CX,0014H;以下是将数据转换为相应的ASCII值

MOV DI,OFFSET A

MOV DX,[DI]

ADD DI,03

NEXT:MOV AX,DX

AND AX,000FH

CMP AL,0AH

JB QQQ

ADD AL,07H

QQQ:ADD AL,30H

MOV[DI],AL

DEC DI

PUSH CX

MOV CL,14

SHR DX,CL

POP CX

LOOP NEXT

MOV DX,OFFSET A

MOV AH,09H

INT21H;在屏幕上显示结果

MOV AH,4CH

INT21H;带返回码终止

CODE ENDS

END START

3)在BUF和BUF+1、BUF+2单元分别放有一个无符号字节型数,编程序将其中最大数存入MAX单元,并在屏幕上显示。

STACK SEGMENT STACK;堆栈段

DB1000DUP(0);定义其后的每个操作数都占有一个字节

STACK ENDS;堆栈段结束

DATA SEGMENT;数据段

BUF DB72H,34H,1FH;定义字节型变量,其后的每操作数都占有一个字节

MAX DB2DUP(?),'$';定义字节型变量,其后的每操作数都占有一个字节

DATA ENDS;数据段结束

CODE SEGMENT;代码段

ASSUME CS:CODE,DS:DATA,SS:STACK

BEGIN:MOV AX,DATA

MOV DS,AX;将数据段基地址装入数据段寄存器DS MOV AL,BUF;将BUF所指向的一个字节数据装入AL CMP AL,BUF+1;比较BUF与BUF+1大小

JNB LP1;如果BUF不小于BUF+1,则转到lp1,否则顺序向下执行

MOV AL,BUF+1;将BUF+1所指向的一个字节数据装入AL

LP1:CMP AL,BUF+2;将BUF和BUF1中较大的一个和BUF+2比较大小

JAE LP2;如果BUF2小,则转到lp2,否则执行顺序向下执行

MOV AL,BUF+2;此时BUF2为三个数中最大的一个,将最大数装入AL寄存器中

LP2:MOV CX,04H;以下是将输出的最大数转换为相应的ASCII值MOV DI,OFFSET MAX

MOV DL,AL

INC DI

LP3:AND AL,0FH

CMP AL,0AH

JB LP4

ADD AL,07H

LP4:ADD AL,30H

MOV[DI],AL

DEC DI

PUSH CX

MOV CL,03H

SHR DL,CL

POP CX

MOV AL,DL

LOOP LP3

MOV DX,OFFSET MAX

MOV AH,09H

INT21H

MOV AH,4CH

INT21H

CODE ENDS

END BEGIN

4)要求同上,只是比较的数为有符号数。

STACK SEGMENT STACK

DB1000DUP(0)

STACK ENDS

DATA SEGMENT

BUF

DB98H,75H, 32H

MAX DB4DUP(?),'$' DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK

BEGIN:MOV AX,DATA

MOV DS,AX

MOV AL,BUF

CMP AL,BUF+1

JG LP1;JG为比较两个有带符号数的大小,

比较BUF和BUF1的大小,若BUF>BUF1,则跳转到lp1继续执行,否则顺序向下

执行

XCHG AL,BUF+1;交换AL寄存器中的内容

和BUF1,使AL寄存器中存放BUF和BUF1中较大的一个

LP1:MOV MAX,AL

JGE lp2;比较两个带符号数,如果BUF2小,则转到lp2,否则执行顺序向下执行

MOV AL,BUF+2

Lp2:MOV MAX,AL;以下是将输出的最大数转换为相应的ASCII值,与1)题相同

MOV CX,04H

MOV DI,OFFSET MAX

MOV DL,[DI]

INC DI

LP3:MOV AL,DL

AND AL,0FH

CMP AL,0AH

JB LP4

ADD AL,07H

LP4:ADD AL,30H

MOV[DI],AL

DEC DI

PUSH CX

MOV CL,02

SHR DX,CL

POP CX

LOOP LP3

MOV DX,OFFSET MAX

MOV AH,09H

INT21H

MOV AH,4CH

INT21H

CODE ENDS

END BEGIN

5)将1000H单元开始的10个字节数,采用奇偶校验,将奇数在前偶数在后仍存

回原数据区。本实验要求在DEBUG调试状态下进行,包括汇编程序、运行程序、检查结果

ORG3000H;转到3000H内存单元,在DEBUG状态下输入-a3000 3000BE0010MOV SI,1000;给SI赋值1000

3003BF0910MOV DI,1009;给DI赋值1009

30068A14MOV DL,[SI];将SI中的内容赋给DL

300880C200ADD DL,00;DL值的+00,以便进行转移测试

300B7B0B JPO2018;奇偶位为0则转移到3018执行

300D8615XCHG DL,[DI];交换DL和DI中的内容

300F8814MOV[SI],DL;把DL的值给SI

30114F DEC DI;DI减1

301239FE CMP SI,DI;比较SI和DI的值的大小

30147407JE201D;如果等于则转移到301D执行

3016EBF0JMP2008;无条件转移到3008执行

301846INC SI;SI加1

30198A14MOV DL,[SI];把SI的值给DL

301B EBF5JMP2012;无条件转移到3012挪移

301D F4HLT

实验二循环与子程序程序设计

一、实验目的

1)加深对循环结构的理解。

2)掌握循环程序的设计方法。

3)学习子程序的定义和调用方法。

4)掌握子程序、子程序的嵌套、递归子程序的结构。

5)掌握子程序设计、编制及调试。

6)熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。

二、实验内容

1)编制程序计算S=1+2·3+3·4+4·5+……+N(N+1)+……直到N(N+1)大于200为止,并将结果由屏幕上显示出来。

2)将从3000H内存单元开始的100个字节存储单元全部清0。

3)编制在屏幕上显示九九乘法表的程序。

4)编制在屏幕上显示用*组成的三角形的程序。

5)设有五个字数据存放在以BUF为首地址的内存单元中,要求采用调用多个字数据相加的子程序方法编程,和的低位字放在RESULT单元,和的高位字放在RESULT+2单元,并将结果显示在屏幕上。

6)编写一个递归子程序,计算指数函数X n的值,其中X,n从键盘输入。

三、源程序

EXAM2-1

DATA SEGMENT

BUF DB’S=1+2×3+3×4+4×5+…+N(N+1)+…=’,’$’

RES DW4DUP(0),’$’

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX

MOV DX,OFFSET BUF

MOV AH,09H

INT21H

MOV DX,1

MOV BL,2

NEXT:MOV AL,BL

INC BL

MUL BL

ADD DX,AX

CMP AX,200

JNA NEXT

MOV CX,0004H

MOV DI,OFFSET RES

ADD DI,03H

NEXT1:MOV AX,DX

AND AX,000FH

CMP AL,0AH

JB NEXT2

ADD AL,07

NEXT2:ADD AL,30H

MOV[DI],AL

DEC DI

PUSH CX

MOV CL,04

SHR DX,CL

POP CX

LOOP NEXT1

MOV DX,OFFSET RES

MOV AH,09H

INT21H

MOV AH,4CH

INT21H

CODE ENDS

END START

执行程序EXAM2-1·EXE,屏幕上显示结果:

S=1+2×3+3×4+4×5+...+N(N+1)+ (045)

EXAM2-2

ORG2000H

2000BF0030MOV DI,3000

2003B164MOV CL,64

2005C60500MOV BYTE PTR[DI],0

200847INC DI

2009FEC9DEC CL

200B75F8JNZ2005

200D F4HLT

EXAM2-3

DATA SEGMENT

ATAD DB?,2AH,?,3DH,?,?,20H,'$'

ATAD1DB?,2AH,?,3DH,?,?,0DH,0AH,'$' DATA ENDS

STACK SEGMENT STACK

DB20H DUP(0)

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AX,DATA

MOV DS,AX

MOV CL,09H

MOV BL,00H

OKL:

MOV AL,00H

INC BL

OK1:

INC AL

PUSH AX

CMP BL,AL

MOV BH,AL

MUL BL

MOV DI,OFFSET ATAD

CALL OKP

POP AX

JMP OK1

OK:

MOV BH,AL

MUL BL

MOV DI,OFFSET ATAD1

CALL OKP

POP AX

LOOP OKL

MOV AH,4CH

INT21H

OKP PROC

PUSH AX

PUSH BX

PUSH CX

ADD BX,3030H

MOV[DI],BH

MOV[DI+02H],BL

MOV CX,0AH

MOV DH,00H

OKL2:

CMP AX,CX

JS OK2

ADD CX,0AH

INC DH

JMP OKL2

OK2:

SUB CX,0AH

SUB AX,CX

MOV AH,DH

ADD AX,3030H

MOV[DI+04H],AH

MOV[DI+05H],AL

MOV DX,DI

MOV AH,09H

INT21H

POP CX

POP BX

POP AX

OKP ENDP

CODE ENDS

END START

执行程序EXAM2-2·EXE,屏幕上显示结果:

1*1=01

1*2=022*2=04

1*3=032*3=063*3=09

1*4=042*4=083*4=124*4=16

1*5=052*5=103*5=154*5=205*5=25

1*6=062*6=123*6=184*6=245*6=306*6=36

1*7=072*7=143*7=214*7=285*7=356*7=427*7=49

1*8=082*8=163*8=244*8=325*8=406*8=487*8=568*8=64

1*9=092*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81 EXAM2-4

CODES SEGMENT

ASSUME CS:CODES

START:

XOR BX,BX

MOV DL,2AH

MOV CX,9

LOP:PUSH CX

INC BL

MOV CL,BL

MOV DL,2AH

LOP2:MOV AH,02H

INT21H

LOOP LOP2

POP CX

MOV DL,0AH

MOV AH,02H

INT21H

MOV DL,0DH

MOV AH,02H

INT21H

CMP BL,9

JZ ENDPRO

LOOP LOP

ENDPRO:

MOV AH,4CH

INT21H

CODES ENDS

END START

执行程序EXAM2-4·EXE,屏幕上显示结果:

*

**

***

****

*****

******

*******

********

*********

EXAM2-5

STACK SEGMENT STACK

DB1024DUP(0)

STACK ENDS

DATA SEGMENT

BUF DW0F101H,110DH,52H,100H,456H COUNT=($-BUF)/2

RESULT DW4DUP(?),'$'

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK WDADD PROC

PUSH DI

MOV AX,0

MOV DX,0

MOV DI,OFFSET BUF

NEXT2:ADD AX,[DI]

JNC NEXT1

INC DX

NEXT1:ADD DI,2

LOOP NEXT2

POP DI

RET

WDADD ENDP

SHOW PROC

PUSH CX

PUSH DI

MOV CX,04H

MOV DI,OFFSET RESULT

MOV BX,AX

ADD DI,07H

BBB:MOV AX,BX

AND AX,000FH

CMP AL,0AH

JB QQQ

ADD AL,07H

QQQ:ADD AL,30H

MOV[DI],AL

DEC DI

PUSH CX

MOV CL,04

SHR BX,CL

POP CX

LOOP BBB

MOV CX,0004H

CCC:MOV AX,DX

AND AX,000FH

CMP AL,0AH

JB DDD

ADD AL,07H

DDD:ADD AL,30H

MOV[DI],AL

DEC DI

PUSH CX

MOV CL,04H

SHR DX,CL

POP CX

LOOP CCC

POP DI

POP CX

RET

SHOW ENDP

BEGIN:MOV AX,DATA

MOV DS,AX

MOV CX,COUNT

CALL WDADD

CALL SHOW

MOV DX,OFFSET RESULT

MOV AH,09H

INT21H

MOV AH,4CH

INT21H

CODE ENDS

END BEGIN

执行程序EXAM2-5·EXE,屏幕上显示结果:000107B6

实验三算术运算与代码转换程序设计

一、实验目的

1)掌握算术运算程序的设计方法。

2)掌握代码转换程序的设计方法。

3)进一步掌握各种程序结构。

4)熟练掌握和使用用DEBUG调试程序。

二、实验内容

1)编制两个多字节整数加法和减法程序,并将结果按十六进制形式显示在屏幕上。

2)编制程序实现二进制定点数与十进制数的ASCII码串之间转换,并将结果显示在屏幕上。

3)编写程序计算从键盘输入两个不超过四位的十进制数的和、差、积、商,并以十进制形式输出。

4)写程序把从键盘输入的四位十六进制数转换为压缩的BCD码,并显示输出。

5)编写一通用过程用来将十进制数(从键盘输入)转换为P(从键盘输入)进制数。

三、源程序

EXAM3-2

BTODA PROC

PUSH DS

PUSH CS

POP DS

PUSH DI

PUSH CX

PUSH BX

PUSH DX

CLD

LEA BX,CTAB

BTODA1:MOV CX,[BX]

XOR DX,DX

DIV CX

ADD AL,30H

STOSB

MOV AX,DX

ADD BX,2

CMP CX,10

JNZ BTODA1

ADD AL,30H

STOSB

POP DX

POP BX

POP CX

POP DI

POP DS

RET

CTAB DW10000,1000,100,10 BTODA ENDP

EXAM3-5

DATA SEGMENT

STRING1DB'INPUT YOUR M=','$'

STRING2DB'INPUT YOUR P=','$'

RE DB8DUP(30H)

DATA ENDS

STACK1SEGMENT STACK

DW60H DUP(0)

STACK1ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK1 START:MOV AX,DATA

MOV DS,AX

MOV DX,OFFSET STRING1

MOV AH,09H

INT21H

MOV AH,01H

INT21H

AND AX,0000FH

MOV DL,10

MUL DL

MOV AH,01H

INT21H

AND AL,0FH

CLC

ADD BL,AL

ADC BH,0

MOV DL,0AH

MOV AH,02H

INT21H

MOV DL,0DH

INT21H

MOV DX,OFFSET STRING2

MOV AH,09H

INT21H

MOV AH,01H

INT21H

MOV DH,AL

SUB DH,30H

MOV DL,0AH

MOV AH,02H

INT21H

MOV DL,0DH

INT21H

MOV AX,BX

MOV BX,0001H

MOV DI,OFFSET RE

LOP1:

DIV DH

ADD AH,30H

MOV[DI],AH

CBW

ADD DI,BX

CMP AL,0

JA LOP1

MOV CX,08H

MOV DI,OFFSET RE

CLC

ADC DI,CX

LOP2:

SUB DI,BX

MOV DL,[DI]

MOV AH,02H

INT21H

MOV AH,4CH

INT21H

CODE ENDS

END START

执行程序EXAM3-5·EXE,屏幕上显示结果:

INPUT YOUR M=5

INPUT YOUR P=6

00000143

实验五输入输出程序设计

一、实验目的

1)掌握输入输出程序的编写方法。

2)熟悉系统功能调用的方法。

3)熟悉动画程序的编写方法。

二、实验内容

1)在CRT上每隔一秒连续显示字符0-9。

编程提示

为了使输出的字符之间有空格,在每一个循环中输出一个0-9的字符和一个空格。为了输出0-9,置寄存器BL初值为0,每循环一次使其增量。为了保证输出是十进制,增量后用DAA调整指令。由于输出为一位十进制数,用AND0FH 指令屏蔽高4位。

2)用系统功能调用将‘HELLO’由键盘输入,再从屏幕输出‘***HELLO***’。

3)编制在屏幕上画线的子程序,调用该子程序画一矩形。

4)编制字母下落一行的子程序,调用该子程序使字母从屏幕顶部下落到底部。

5)创建一磁盘文件,保存从键盘输入的字符串。

6)编写程序用设置系统时间,首先从键盘以十进制数形式输入时间,然后修改系统时间,并重新以十进制形式显示时间。

7)编写程序将屏幕分割成格状,每一格涂上不同颜色,格数从键盘输入。

8)编写程序在屏幕上显示菜单,输入相应菜单的序号后,选种该菜单项。

三、源程序

EXAM5-1

STACK SEGMENT STACK

DB1024DUP(0)

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,SS:STACK

START:MOV BL,0

LP:MOV DL,20H

MOV AH,2

INT21H

MOV AL,BL

ADD AL,0

DAA

AND AL,0FH

MOV BL,AL

PUSH BX

OR AL,30H

MOV DL,AL

MOV AH,2

INT21H

MOV BX,3E8H

LP2:MOV CX,176H;延时1ms

LP1:PUSHF

POPF

LOOP LP1

DEC BX

JNZ LP2

POP BX

INC BL

JMP LP

CODE ENDS

END START

执行程序EXAM5-1·EXE,屏幕上依次循环显示一个数字一个空格:

0123456789……

实验四-循环结构汇编语言程序的设计实验报告

循环结构汇编语言程序设计实验报告

实验四循环结构汇编语言程序设计 一、实验目的 1、学习循环结构的汇编语言程序的设计和调试。 2、学习通过直接对8086计算机的寄存器和存的直接访问,编写更高效简洁的汇编程序。 3、加深掌握计算机整体的工作过程。 3、加深对排序算法的理解。 二、实验任务 编写程序求出数组A中(20个元素)的最大值和最小值(数组没有排序)。 要求至少采用二种不同的排序算法来实现。( 快速排序,归并排序、堆排序、Shell排序、插入排序、冒泡排序、交换排序、选择排序、基数排序……) 三、实验容 为了更好地实现老师所布置的实验任务,我们根据情况选取以下两种方式实

验。 1、利用冒泡排序的方式求解数组A中元素的最大值最小值。设计流程图如 下所示: 2、利用选择排序的方式求得数组A中元素的序列。设计流程图如下所示:

四、实验环境 PC机: winXP/win7(32位)/win7(64位)+winxp 虚拟机 汇编工具:Masm.exe+Link.exe。 五、实验步骤 1)建立和生成的文件 (1)编写的源程序,源程序名为abc、扩展名为.asm (2)源程序经汇编程序Masm.exe汇编(翻译)后生成二进制目标程序,文件名为abc.obj (3)目标程序需要经Link.exe连接生成可执行程序,文件名为abc.exe 2)汇编环境 最基本的汇编环境只需要两个文件:Masm.exe和Link.exe。将这两个文件拷入到已经建好的文件夹(例如 huibian)中,并将文件夹huibian放在硬盘根

目录C :\>下 3)上机步骤 进入DOS窗口中执行。 4)调试程序 进入DEBUG后,调试程序 5)调试成功后重新汇编、连接并生成可执行代码 6)执行程序,并对运行结果截图。 利用冒泡排序求得数组A中元素的最大值最小值的实验结果如下图所示:(说明:输入数据为:13,0,59,900,587,1,657,234,34,48) 利用选择排序对数组A中元素排序得到的序列得实验结果如下图所示:(说明:输入数据为13,0,59,900,587,1,657,234,34,48)

河北工业大学单片机课程设计

河北工业大学 MCS-51单片机原理及应用 课程设计报告 专业:土木工程 班级:土木班 组别:11 姓名:

MCS--51单片机课程设计 汽车信号灯控制系统 组别:11 设计人: 一、题目:汽车信号灯控制系统 二、实验目的和最终完成的功能 1)功能: (1)车辆转弯时,相应一侧之前灯、尾灯及仪表板指示灯均应闪烁。即左转时,左头灯、左尾灯、仪表板左转弯灯闪烁,右转时则右头灯、右尾灯和仪表板右转弯灯闪烁; (2)紧急开关闭合时要求前述6个信号灯全部闪烁; (3)刹车时2个尾灯亮,若转弯时刹车,则转弯时原应闪烁的信号灯仍应闪烁; (4)转向闪烁频率1Hz,应急闪烁频率2.5Hz。 2)按照以前所学实验方法,将程序输入,编译无误,按照硬件系统设计图并对照实验书后的对照表进行接线,然后运行,通过开关控制灯的亮灭。 三、线路原理: 硬件系统设计流程图

软件系统设计流程图 ↓ ↓ ↓ ↓ ↓ ↓ 四、源程序及注释: ORG 8000H LJMP MAIN ;;转到主程序 ORG 800BH LJMP TC0LEFTON ;;转到T/C0的中断服务程序T0ISR ORG 801BH LJMP TC1SET ; ;转到T/C1的中断服务程序T1ISR ORG 8030H MAIN: MOV SP,#30H MOV TMOD,#11H ; ;置T/C0 方式1,定时;T/C1方式1,定时 MOV TH0,#0DCH MOV TL0,#0DH ; ;装入T/C0定时初值 MOV TH1,#0E8H

MOV TL0,#0DH ;;装入T/C1定时初值 SETB ET0 ; ;T/C0允许中断 SETB ET1 ; ;T/C1允许中断 SETB EA ; ;CPU开中断 MOV P1,#0FFH ; ;灯全灭 MOV R7,#00H MOV R6,#00H BREAK: SETB P3.2 JB P3.2,YINGJI ; ;刹车开关闭合继续执行,否则跳转 CLR P1.4 ; ;点亮p1.4,左尾灯亮 CLR P1.5 ; ;点亮p1.5,右尾灯亮 YINGJI: SETB P3.3 JB P3.3,LEFT ; ;应急开关闭合继续执行,否则跳转 CLR TR0 SETB TR1 ; ;启动TR1 LEFT: SETB P3.4 JB P3.4,RIGHT ; ;左转开关闭合继续执行,否则跳转 CLR PSW.5 ; ;设左转状态标志位 CLR T R1 SETB TR0 ;;启动TR0 RIGHT: SETB P3.5 JB P3.5,NO ; ;右转开关闭合继续执行,否则跳转 SETB PSW.5 ; ;设右转状态标志位 CLR T R1 SETB TR0 ; ;启动TR0 NO: MOV A,P3 ANL A,#3CH CJNE A,#3CH,BREAK ;;所有开关都打开,继续执行;否则跳转 MOV P1,#0FFH ; ;所有灯全灭

汇编语言学习知识程序设计实验

目录 目录 (1) 实验一利用DEBUG熟悉常用指令的使用 (2) 一、实验目的 (2) 二、示例 (2) 三、实验题 (2) 实验二汇编程序和连接程序的使用 (6) 一、实验目的。 (6) 二、示例。 (6) 三、实验题。 (8) 实验三顺序结构程序设计 (11) 一、实验目的 (11) 二、示例 (11) 三、实验题 (12) 四、实验报告 (15) 实验四循环结构程序设计 (16) 一、实验目的 (16) 二、示例 (16) 三、实验题 (18) 实验五分支结构程序设计 (21) 一、实验目的 (21) 二、示例 (21) 三、实验题 (22) 实验六子程序设计 (29) 一、实验目的 (29) 二、实验题 (29)

实验一利用DEBUG熟悉常用指令的使用 一、实验目的 熟悉指令系统,掌握常用指令的用法;通过实验加深对各种寻址方式的理解;能熟练使用DEBUG中的命令对指令进行反汇编,观察并了解机器代码。 二、示例 请分别用一条汇编语言指令完成如下功能:(过程略)。 1.用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中。 ADD AL,[BX][SI] 2.用位移量为0520H的直接寻址方式把存储器中的一个字与3412H相加,并把结果送回该存储单元。 ADD WORF PTR [0520H],3412H 三、实验题 1.调试、验证下列指令的结果,已知(DS)=2000H,(BX)=0100H,(SI)=0002H,(BP)=0200H,(SS)=2300H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,(21200)=2AH,(21201)=4CH,(21202)=B7H,(21203)=65H,(23204)=88H,说明各指令执行完后AX寄存器的内容。要求输入指令,相应存储单元的内容要事先设置,单步 P执行,观察执行结果。 (设置存储器的值)

汇编语言程序设计课后习题解答宋人杰2版

第1章汇编语言基础知识 1.简述汇编语言源程序、汇编程序、和目标程序的关系。 答:用汇编语言编写的程序称为汇编源程序;汇编源程序在汇编程序的翻译下转换成计算机语言变成目标程序。 2. 简述汇编语言的优缺点。 答:(1) 汇编语言的优点: ①可有效地访问、控制计算机各种硬件设备,如磁盘、存储器、CPU、I/O端口等。. ②目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。 ③可与高级语言配合使用,应用十分广泛。 (2) 汇编语言的缺点: ①通用性和可移植性较差 ②相对于高级语言来说较繁锁、易出错、不够直观。 3.CPU的寻址能力为8KB,那么它的地址总线的宽度为多少? 答:13 4. 1KB的存储器有多少个存储单元? 答:1024个字节。 5. 指令中的逻辑地址由哪两部分组成? 答:指令中的逻辑地址由段基址和偏移量组成。 6. 以下为用段基址:偏移量形式表示的内存地址,试计算它们的物理地址。 (1) 12F8:0100 (2) 1A2F:0103 (3) 1A3F:0003 (4) 1A3F:A1FF 答: (1) 13080H (2) 1A3F3H (3) 1A3F3H (4) 245EFH 7. 自12FA:0000开始的内存单元中存放以下数据(用十六进制形式表示): 03 06 11 A3 13 01,试分别写出12FA:0002的字节型数据、字型数据及双字型数据 的值。 答:字节型数据:11H 字型数据:0A311H 双字型数据:0113A311H 8. 内存中某单元的物理地址是19318H,段基地址为1916H,则段内偏移地址为 多少?若段内偏移地址为2228H,则段基地址为多少? 答:若段基地址为1916H,则段内偏移地址为01B8H;若段内偏移地址为2228H,则段基地址为170FH 9. 在实模式环境中,一个段最长不能超过多少字节? 答:64KB 10. 实模式可寻址的内存范围是多少? 答:1MB

河北工业大学工程经济学课程设计

河北工业大学 工程经济学课程设计 姓名:*** 学号:***** 指导老师:陈敬武 日期:******

目录 1.本课程设计目的¨¨¨¨¨¨¨¨¨¨¨¨2 2.设计任务书¨¨¨¨¨¨¨¨¨¨¨¨¨¨2 3.项目概况¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨2 4.项目财务数据测算¨¨¨¨¨¨¨¨¨¨¨3 5.国民经济评价资料¨¨¨¨¨¨¨¨¨¨¨4 6.有关参数¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨6 7.成绩评定¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨6 8.项目国民经济评价分析¨¨¨¨¨¨¨¨¨6 9.国民经济评价分析¨¨¨¨¨¨¨¨¨¨¨7 10.附表¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨7

一、本课程设计目的 通过对一个具体建设项目经济评价全过程的计算与分析,熟悉项目经济评价的程序,掌握评价报表编制和评价指标计算的原理和方法,以及经济评价方法的运用,达到能运用本课程理论来解决实际工程项目经济评价问题的目的。 二、设计要求 1.根据所给出投资项目的基础资料,编制必要的经济评价报表,计算和分析各种评价指标,给出项目经济评价结论。 2.要求计算和分析的财务评价指标有: 静态评价指标:投资回收期、投资利润率、投资利税率、资本金利润率、借款偿还期、资产负债率、流动比率、速动比率。 动态评价指标:财务净现值FNPV,财务内部收益率FIRR。 不确定性分析:盈亏平衡分析。 敏感性分析,分别就固定资产投资、经营成本和销售收入变化±10%、±20%对投资回收期和 净现值进行单因素敏感分析(全部投资,税后)。 3.要求计算和分析国民经济评价指标有: 全部投资的经济内部收益率EIRR、经济净现值ENPV。 国内投资经济内部收益率、经济净现值、经济外汇净现值、经济节汇(或换汇)成本。 国民经济评价只进行敏感性分析(不确定因素和财务评价相同)。 4.要求完成设计任务后,交课程设计成果报告。 依封面、目录、设计任务书、项目概况、项目财务数据测算、项目财务评价及评价结论、项目国民经济评价数据调整、国民经济评价及评价结论、经济评价报表(以附录形式表示,先基础报表,后辅助报表)的顺序装订成册。 设计报告的封面上应注明班级、姓名,指导老师,完成日期等。 设计报告要整洁、清楚,报表数据要完整,不可用省略号。提交打印文件及电子文档。 5.本设计要求学生在规定的时间内独立完成。同学之间可以互相讨论,但不能抄袭。 6.报表中数据取整数,评价指标及中间计算保留两位小数。 三、项目概况 本项目为一新建化工厂,拟生产目前国内外市场较为紧俏的X产品。这种产品目前国内市场供不应求,每年需要一定量的进口,项目投产后可以以产顶进。 本项目的主要技术和设备拟从国外引进,厂址位于城市近郊,占用一般农田350亩,交通运输方便,原材料及水、电等供应可靠。 项目主要设施包括生产车间、与工艺生产相适应的辅助生产设施,公用工程以及有关的生产管理与生活福利等设施。

汇编语言程序设计实验报告

微机原理实验报告 实验名称汇编语言程序设计 一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法 二、实验设备 装有emu8086软件的PC机 三、实验内容 1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH, 97H,64H,BBH,7FH,0FH,D8H。编程并显示结果:如果数组是无符号数,求出最大值,并显示; 如果数组是有符号数,求出最大值,并显示。 2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H 的BCD是:” 3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD 码7693的ASCII是:” 4、两个长度均为100的内存块,先将内存块1全部写上88H,再 将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子程序) 5、键盘输入一个小写字母(a~z),转换成大写字母 显示:请输入一个小写字母(a~z): 转换后的大写字母是: 6、实现4字节无符号数加法程序,并显示结果,如99223344H + 第1页

99223344H = xxxxxxxxH 四、实验代码及结果 实验代码见代码附录 1.1程序运行结果 图1 无符号最大值结果截图 1.1 程序运行结果

图2 有符号最大值截图2.0 程序运行结果

图3 BCD码显示3.0 程序运行结果

图4 ASCII码显示4.0 程序运行结果

图5 移动次数显示5.0 程序运行结果

8086汇编语言程序设计

实验1 简单汇编语言程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握简单汇编语言程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG 工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG 工具调试程序,验证程序的正确性。 1. 若X、Y、R、W 是存放8 位带符号数字节单元的地址,Z 是16 位字单元的 地址。试编写汇编程序,完成Z←((W-X) ÷5-Y)?(R+ 2) 。 2.试编写一个程序,测试某数是否是奇数。如该数是奇数,则把DL 的第0 位置1,否则将该位置0。 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

实验2 分支及循环程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握分支程序和循环程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。 1.编写汇编程序,统计某存储区若干个数据中英文字母的个数,并将结果在屏幕上显示。 2.从键盘任意输入一组字符数据,请编写汇编程序将该组数据加密后在屏幕上显示。参考加密方法是:每个数乘以2。(说明:本题的加密方法,同学们可以自己拟定) 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

实验3 子程序程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握子程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。 1.编程以十进制形式和十六进制形式显示AX的内容,并把两个显示功能分别封装成子程序dispDEC和dispHEX。 2.设在以EXAMSCORE为首地址的数据缓冲区依次存放某班10名同学5门功课的成绩,现要统计各位同学的总分,并将总分放在该学生单科成绩后的单元,并调用第1个程序封装好的子程序,以十进制方式显示统计情况,显示格式自行设计。请编程完成此功能。数据缓冲区参考数据定义如下: EXAMSCORE DB 01 ;学号 DB 89,76,54,77,99 ;单科成绩 DW ? ;该学生的总分 DB 02 ;学号 DB 79,88,64,97,92 ;单科成绩 DW ? ;该学生的总分 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

河北工业大学毕业设计说明书格式模版1306485519456

毕业设计说明书格式样板(A4纸型) 河北工业大学 毕业设计说明书 作者:学号: 学院: 系(专业): 题目: 指导者: (姓名) (专业技术职务) 评阅者: (姓名) (专业技术职务) 年月日

(空2行) 目次(4号黑体,居中) 1引言(或绪论)(作为正文第1章,小4号宋体,行距18磅,下同) (1) 2××××××(正文第2章)……………………………………………………Y 2.1 ××××××(正文第2章第1条)…………………………………………Y 2.2 ××××××(正文第2章第2条)………………………………………… Y 2.X ××××××(正文第2章第X条)………………………………………… Y 3 ×××××(正文第3章)……………………………………………… Y ………………………………………(略) X ×××××(正文第X章)……………………………………………………… Y 结论…………………………………………………………………………………… Y 参考文献……………………………………………………………………………… Y 致谢………………………………………………………………………………Y 附录A ××××(必要时)………………………………………………………… Y 附录B ××××(必要时)………………………………………………………… Y 图1 ×××××(必要时)………………………………………………………… Y 图2×××××(必要时)………………………………………………………… Y 表1 ×××××(必要时)………………………………………………………… Y 表2 ×××××(必要时)………………………………………………………… Y 注:1. 目次中的内容一般列出“章”、“条”二级标题即可; 2.X、Y表示具体的数字。

汇编语言程序设计实验篇emu

1.汇编语言程序设计实验篇 1.1.汇编系统软件简介 Emu8086-Microprocessor Emulator是集源代码编辑器、汇编/反汇编工具以及debug 的模拟器。它能模拟一台"虚拟"的电脑运行程序,拥有独立的“硬件”,避免访问真实硬件。该软件兼容Intel的下一代处理器,包括PentiumII、Pentium4。利用该软件提供的调试工具,能够单步跟踪程序,观察程序执行过程中寄存器、标志位、堆栈和内存单元的内容。 1.1.1创建程序 https://www.360docs.net/doc/bc17722954.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”部分可以分别输入相应的变量定义和指令。

第四章MCS-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

新版汇编语言程序设计钱晓捷第1章习题答案

第1章汇编语言基础知识(全) 2010-10-18 19:32:40| 分类:答案集锦| 标签:|字号大中小订阅 第1章汇编语言基础知识 〔习题1.1〕简述计算机系统的硬件组成及各部分作用。 〔解答〕 CPU:包括运算器、控制器和寄存器组。运算器执行所有的算术和逻辑运算;控制器负责把指指令逐条从存储器中取出,经译码分析后向机器发出各种控制命令,并正确完成程序所要求的功能;寄存器组为 处理单元提供所需要的数据。 存储器:是计算机的记忆部件,它用来存放程序以及程序中所涉及的数据。 外部设备:实现人机交换和机间的通信。 〔习题1.2〕明确下列概念或符号: 主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB 〔解答〕 主存又称内存是主存储器的简称,主存储器存放当前正在执行的程序和使用的数据,CPU可以直接存取,它由半导体存储器芯片构成其成本高、容量小、但速度快。辅存是辅助存储器的简称,辅存可用来长期保存大量程序和数据,CPU需要通过I/O接口访问,它由磁盘或光盘构成,其成本低、容量大,但速 度慢。 RAM是随机存取存储器的英语简写,由于CPU可以从RAM读信息,也可以向RAM写入信息,所以RAM也被称为读写存储器,RAM型半导体存储器可以按地址随机读写,但这类存储器在断电后不能保存信息;而ROM中的信息只能被读出,不能被修改,ROM型半导体通常只能被读出,但这类存储器断电 后能保存信息。 存储器由大量存储单元组成。为了区别每个单元,我们将它们编号,于是,每个存储单元就有了一个存储地址,I/O接口是由一组寄存器组成,为了区别它们,各个寄存器进行了编号,形成I/O地址,通常 称做I/O端口。 KB是千字节、MB是兆字节、GB是吉字节和TB是太字节,它们都是表示存储器存储单元的单位。 〔习题1.3〕什么是汇编语言源程序、汇编程序、目标程序? 〔解答〕 用汇编语言书写的程序就称为汇编语言源程序;完成汇编工作的程序就是汇编程序;由汇编程序编 译通过的程序就是目标程序。

河工模型试验中的DPIV技术及其应用

河工模型试验中的DPIV技术及其应 用 摘要粒子图像测速是一种快速全 流场测量方法。本文根据河工模型试验的特点建立了一套多CCD的DPIV测量系统,在 自然光照明的条件下对河工模型近千平方 米区域内流体的表面流厨行快速测量;根据河工模型中粒子分布的特点,对PIV常用的速度提取算法(互相关和二次傅立叶变换) 进行了改进,提高了速度提取的效率,在一定的分辨率前提下达到了对河工模型表面 流场实时测量和记录的要求,测量误差较小。 关键词粒子图像测速河工模型速度测量 流场显示 0 引言河工模型是探讨河流工程问题 的有效研究方法之一,但由于河工模型尺寸大,观测的范围广,使用单点式速度测量仪器费时费力;对于动床模型或非定常流动模型,床面和边界形态均在不断变化之中,因

此,在河工模型试验中采用全场实时测速技术十分必要,具有很大的科研和经济价值。粒子示踪的图像全场测速技术(Particle Image Velocimetry[1,和Particle Tracking Velocimetry[3,4])以及数字化粒子图像测速技术(Digital PIV和Digital PTV)具有方便快捷的特点,在流体力学研究中得到了广泛应用。国内科研人员根据PIV 和PTV的基本原理,已成功开发出应用于大型河工模型表面流场测量的粒子示踪测速 系统:清华大学研制的DPTV系统、中国科学院力学研究所研制的DPIV系统等。 DPIV系统的核心是对流动图像进行处理,得到示踪粒子代表的流体的速度,这一过程称为速度提取。速度提取一般采用互相关算法和二次傅立叶变换[7,8,9]进行,需优良的硬件设备(运算速度高的计算机和浮点运算加速器件)才能满足实时测量的要求。本文考虑到河工模型中示踪粒子的分布特点 以及自然光照明的条件等,采用了三种改进的速度提取算法,缩短了速度提取时间,在普通Pentium系列微机由软件实现河工模型

河北工业大学毕业设计(论文)要求及模板(新)

毕业设计(论文)打印格式样板(供理工类专业用) (A4纸型)工业大学成人高等教育毕业设计说明书(论文) 姓名:学号: 教学管理单位: 专业: 题目: 指导者: (姓名) (专业技术职务) 评阅者: (姓名) (专业技术职务) 年月日

毕业设计(论文)打印格式样板(供管理、文法专业用) (A4纸型)工业大学成人高等教育 毕业论文 姓名:学号: 教学管理单位: 专业: 题目: 指导者: (姓名) (专业技术职务) 评阅者: (姓名) (专业技术职务) 年月日

毕业设计(论文)摘要

(空2行) 目录(4号黑体,居中) 1 引言(或绪论)(作为正文第1章,小4号宋体,行距18磅,下同) (1) 2××××××(正文第2章)……………………………………………………Y 2.1 ××××××(正文第2章第1条)…………………………………………Y 2.2 ××××××(正文第2章第2条)…………………………………………Y 2.X××××××(正文第2章第X条)…………………………………………Y 3×××××(正文第3章)………………………………………………Y ………………………………………(略) X×××××(正文第X章)………………………………………………………Y 结论……………………………………………………………………………………Y 致……………………………………………………………………………………Y 参考文献………………………………………………………………………………Y 附录A××××(必要时)…………………………………………………………Y 附录B××××(必要时)…………………………………………………………Y 图1×××××(必要时)…………………………………………………………Y 图2×××××(必要时)…………………………………………………………Y

【精品】汇编语言程序设计习题答案

钱晓捷新版汇编语言程序设计习题答案 第一章汇编语言基础知识 1.1、简述计算机系统的硬件组成及各部分作用 1。2、明确下列概念或符号: 主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB 1.3、什么是汇编语言源程序、汇编程序、目标程序? 1。4、汇编语言与高级语言相比有什么优缺点? 1.5、将下列十六进制数转换为二进制和十进制表示 (1)FFH (2)0H (3)5EH (4)EFH (5)2EH (6)10H (7)1FH (8)ABH 1。6、将下列十进制数转换为BCD码表示 (1)12 (2)24 (3)68 (4)127 (5)128 (6)255 (7)1234 (8)2458 1.7、将下列BCD码转换为十进制数 (1)10010001 (2)10001001 (3)00110110 (4)10010000

(5)00001000 (6)10010111 (7)10000001 (8)00000010 1.8、将下列十进制数分别用8位二进制数的原码、反码和补码表示 (1)0 (2)—127 (3)127 (4)—57 (5)126 (6)-126 (7)—128 (8)68 1。9、完成下列二进制数的运算 (1)1011+1001 (2)1011-1001(3)1011×1001(4)10111000÷1001 (5)1011 ∧~1011 (8)1011 ⊕10011001(6)1011 ∨1001(7) 1。10 数码0~9、大写字母A~Z、小写字母a~z对应的ASCII码分别是多少?ASCII 码为0dh、0ah对应的是什么字符? 1。11、计算机中有一个“01100001”编码,如果把它认为是无符号数,它是10进制什么数?如果认为它是BCD码,则表示什么数?又如果它是某个ASCII码,则代表哪个字符? 1。12、简述Intel80x86系列微处理器在指令集方面的发展。 1.13、什么是DOS和ROM—BIOS? 1。14、简述PC机最低1MB主存空间的使用情况。 1.15、罗列8086CPU的8个8位和16位通用寄存器,并说明各自的作用。

汇编语言程序设计实验内容(川大微机原理实验资料和内容以及MASM使用方法)

第一部分汇编语言程序设计 实验一熟悉、使用DEBUG调试工具 一.上机目的: 1.了解并逐步熟悉汇编语言的编辑方法及特点. 2.复习8088汇编语言的段结构、常用的指令与伪指令、存储空间的分配等。 3.掌握汇编语言的编辑、汇编及连接的过程。 4.了解并逐步掌握运用DEBUG进行调试汇编语言程序。 二.实验内容: 1.运用8086汇编语言,编辑多字节非压缩型BCD数除法的简单程序,文件名取为*.ASM。 2.运用MASM﹒EXE文件进行汇编,修改发现的各种语法错误,直至正确,形成*.OBJ 文件。 3.运用LINK.EXE文件进行连接,形成*.EXE文件。 4.仔细阅读附录中的DEBUG部分,掌握各种命令的所有方法。 5.运用DEBUG。EXE文件进行调试,使用单步执行命令—T两次,观察寄存器中内容的变化,使用察看存储器数据段命令—D,观察存储器数据段内数值。 6.再使用连续执行命令—G,执行程序,检查结果是否正确,若不正确可使用DEBUG 的设置断点,单步执行等功能发现错误所在并加以改正。 程序清单: 多字节非压缩型BCD数除法(88754/6=14792) DA TA SEGMENT A D B 8,8,7,5,4 B DB 6 C DB 5DUP (0) N EQU 5 DA TA ENDS CODE SEGMENT ASSUME CS:CODE;DS:DATA;ES:DATA, START MOV AX,DA TA MOV DS,AX MOV ES,AX CLD LEA SI,A LEB DI,C MOV CX,N MOV AH,0 LP1:LODSB AAD DIV B STOSB LOOP LP1 MOV CX,N LEA DI,C

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

汇编语言编程实例一这一章,我们要把我们已学的知识集合起来。具体来讲,我们来写一个使用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

2021年河北工业大学设计学考研经验分享

2021年河北工业大学设计学考研经验分享及辅导班推荐首先,先介绍一下本人情况。 我本科就读于山西一所非师范类普通二本院校,考研考到211、河北工业大学设计学学硕专业。初试、复试均第一名的成绩成功上岸。虽本科成绩还不错,但在我们那样的本科学校,成绩根本不值一提,所以我根本不算学霸。 此经验分享是想让学弟学妹们明白,要勇于突破自己,选择自己感兴趣、喜爱的专业考研不是不可能的事情,当然了择校也是很重要的。考研路上,明白自己最需要什么很关键,不要什么都想要,最后却一无所得。我很庆幸自己的选择,也很幸运自己成功上岸。努力不是无用,只要找对方向,一切皆有可能。 初试准备经验 1.思想政治理论 考研政治相对而言比较容易,不用花太多心思的。我考研政治大概是大三暑假开始复习的,用的是肖秀荣大大的全套组合。刚开始时间比较充裕,所以跟着精讲精练,再看着各种视频过知识点,然后用1000题练习。除了形势政策是听肖大大之外,其它章节听徐涛网课,还是挺有趣的。复习期间,可以关注几位老师的微博和公众号,肖大大就时常在微博下面答疑,会的知识可以巩固,不会的也可以和大家交流。 平时就跟着肖大大的进度一步步走就可以,我买了知识点提要和考点预测,但是都没有用到。最后阶段就跟着肖八和肖四,一边做题一边总结。肖大大押题还是可以信赖的,我最后只背诵了肖四,把里面相同类型的题总结好,背起来难度也不是很大。最重要的还是要学会总结,总结有时候比学习更重要,好的方法是成功的第一步,要不然浪费太多时间,也得不到好的结果。 2.考研英语 我的英语水平还算可以,大三通过六级,但是语法方面比较欠缺,考英语一还是有些难度。刚开始对于考研一无所知,所以听过很多老师的课。最开始是学校里放的考研英语课,打基础还是不错的,也学会了不少方法。中间也听过唐迟老师的课,从中汲取了一些觉得适合我的方法,也没有全程听下来。所以说,听课最重要的就是要学会里面的做题方法,在复习的过程之中,可以多听一下不同老师的课,然后从中选择最适合自己的,把各种方法融会贯通。 教材的话,我花最便宜的价钱,买了一套20年真题,然后不断刷题。第一遍做完之后,把试卷题当中不认识的单词或者表达统统都记在了一个本子上,每天早上等待图书馆开门的时候,我会选择拿出来看。

8086汇编语言程序设计实验指导书.

汇编语言上机实验指导书 一、概述 上机实验总学时为16学时,其中综合性实验为2学时。实验共有6项暂定为8次,每次2学时。 1.实验辅导的主要内容 实验辅导的内容包括每个实验的实验目的;实验内容;对实验的算法及实验方法的必要说明;实验准备;实验步骤;实验报告要求;实验程序及参考框图。开始的实验介绍较细,后面的实验简要介绍。 2.实验的软硬件要求 关于汇编语言程序设计的硬件要求不高,有IBM-PC/XT即可,但应有彩色显示器以便进行图形实验。软件方面应有MASM.EXE5.0版(包括LINK.EXE),与MS-DOS版本配套的DEBUG程序和EDIT.EXE编辑软件(其它编辑软件也可以)。 3.加强实践能力的培养 实验目的不光是为了验证书本理论,更重要的是对实践能力的培养。其中包括: 实际调试程序的能力,例如修改程序参数的能力,查看结果的能力,设置断点调试运行的能力等; 开发汇编语言应用程序的能力,例如应用有关汇编软件的能力,进行系统调用和BIOS功能调用的能力,进行模块程序设计的能力等。 对某一问题用不同的程序实现的能力,例如我们为每个实验提供了参考程序(或程序段),目的是让每个实验者参照样板程序将实验成功地实现,在掌握其方法后,自己改变程序或自己编制程序加以实现。 实验一汇编语言运行环境及方法、简单程序设计(2学时、验证性) 1.实验目的: (1) 熟悉汇编语言运行环境和方法 (2)了解如何使用汇编语言编制程序 (3) 熟悉DEBUG有关命令的使用方法 (4) 利用DEBUG掌握有关指令的功能 (5) 利用DEBUG运行简单的程序段 2.实验内容 (1)学会输入、编辑汇编语言程序 (2)学会对汇编语言程序进行汇编、连接和运行 (3)进入和退出DEBUG程序 (4)学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。对于U命令、N命令、W命令等,也应试一下。 3.实验准备 (1)仔细阅读有关汇编语言环境的内容,事先准备好使用的例子。 (2)准备好源程序清单、设计好调试步骤、测试方法、对运行结果的分析。 (3) 编写一个程序:比较2个字符串所含的字符是否相同。若相同则显示’Match.’,否则显示’No match!’;(1)仔细阅读有关DEBUG 命令的内容,对有关命令,都要事先准备好使用的例子。 4.实验步骤 (1)在DOS提示符下,进入MASM目录。 (2)在MASM目录下启动EDIT编辑程序,输入源程序,并对其进行汇编、连接和运行。 ①调用edit输入、编辑源程序并保存在指定的目录中;例:edit abc.asm ②用汇编程序masm对源程序汇编产生目标文件obj。例:masm abc 不断修改错误,直至汇编通过为止。 ③用连接程序link产生执行文件exe.例:link abc ④执行程序 可直接从DOS执行程序,即在DOS环境中,输入文件名即可。 (3)详细记录每一步所用的命令,以及查看结果的方法和具体结果。 5.实验报告要求 (1)源程序清单。 (2) 如何启动和退出EDIT程序。 (3) 如何对源程序进行汇编及编辑。

大工《汇编语言程序设计》离线作业答案

学习中心: 专业: 年级:年季 学号: 学生: 题目:十进制转换十六进制程序设计 1.谈谈你对本课程学习过程中的心得体会与建议? 通过这次的课程设计,让我们对汇编语言有了更进一步的认识,加强了我们用汇编语言的能力。并经过修改,完成了简单的设计。 汇编语言程序设计是一门很抽象的科学,学起来也比较难,但随着学习的 调试时应注意的问题,同时也更深的理解了寄存器,存储器等工作原理以及一些指令执行后对它们的改变,例如,int指令会改变al的值,在编程时应注意这方面的问题。 在编写过程中,让我深刻的体会到了科学的严谨性。有时一个逗号或者写错一个字母这样一点点小错误,就会产生很大的错误,导致调试的失败。 当设计一步步接近成功,每一个子程序的调试成功,都让自己感到喜悦,从中体会到编程的乐趣,有一种成就感,也让自己树立了信心,增强了对汇编语言程序设计的兴趣。

;输入不超过65535的10进制数,将其以16进制的形式显示code segment assume cs:code org 100h start: jmp bbb x dw 0 msg1 db 10,13,'please input a number:','$' msg2 db 10,13,' ','$' bbb: push cs pop ds

lea dx,msg1 mov ah,9 int21h lea bx,x mov ax,0 push ax again1: mov ah,1 int21h cmp al,13 je line0 sub al,30h mov ah,0 mov si,ax pop ax mov cl,10 mov ch,0 mul cx add ax,si push ax jmp again1 line0: pop ax mov word ptr[x],ax lea di,msg2 inc di inc di mov cx,4 again2: mov ax,word ptr[x] rol ax,1 rol ax,1 rol ax,1 rol ax,1 ; rol ax,4 mov word ptr[x],ax and ax,000Fh cmp al,9 jg line1 add al,30h mov byte ptr[di],al jmp line2 line1:

相关文档
最新文档