当前位置:文档之家› 汇编语言——分支结构程序设计实验

汇编语言——分支结构程序设计实验

汇编语言——分支结构程序设计实验
汇编语言——分支结构程序设计实验

汇编语言实验报告

实验6 汇编语言

分支结构程序设计

学院:计算机学院

班级:计Y112班

姓名:梁建辉

学号:201100403067

2012年12月1日

1.实验目的:

(1)掌握汇编语言顺序结构设计方法

(2)熟悉常用汇编指令的用法

(3)学会用debug输入、运行小程序,并检查运行情况的方法

(4)学会在pc机上建立、汇编、连接、调试和运行80x86汇编语言程序的过程2.实验内容:

(1)调试程序1:将存储单元DAT+1中的两个压缩的bcd码拆成2个非压缩的不承担码(高位bcd码放在DAT+1单元,地位bcd码放在DAT+2单元)。

程序如下:

DA TA SEGMENT

DA T D B 0A5H,2 DUP(?)

DA TA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX, DATA

MOV DS, AX

MOV AL, DAT

MOV BL, AL

MOV CL, 4

SHL BL, CL

MOV DAT+1, BL

AND AL, 0FH

MOV DAT+2, AL

MOV AH, 4CH

INT 21H

CODE ENDS

END START

上机运行该程序并检查运行结果是否正确。

3.实验运行结果:

(1)

1401:0000 B80014 MOV

1401:0003 8ED8 MOV DS,AX

1401:0005 A00000 MOV AL,[0000]

1401:0008 8AD8 MOV BL,AL

1401:000A B104 MOV CL,04

1401:000C D2E3 SHL BL,CL

1401:000E 881E0100 MOV [0001],BL

1401:0012 240F AND AL,0F

1401:0014 A20200 MOV [0002],AL

1401:0017 B44C MOV AH,4C

1401:0019 CD21 INT 21

1401:001B FE8946F6 DEC BYTE PTR [BX+DI+F646]

1401:001F EB06 JMP 0027

段首地址为:1400

运行前的结果:

-d 1400:0,F

1400:0000 ................

运行后的结果:

-g

Program terminated normally

-d 1400:0,f

1400:0000 .P..............

单步运行结果:

BX=0000 CX=002B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=13F0 ES=13F0 SS=1400 CS=1401 IP=0003 NV UP EI PL NZ NA PO NC 1401:0003 8ED8 MOV DS,AX

-t

AX=1400 BX=0000 CX=002B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13F0 SS=1400 CS=1401 NV UP EI PL NZ NA PO NC

MOV AL,[0000] DS:0000=A5 -t

BX=0000 CX=002B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13F0 SS=1400 CS=1401 NV UP EI PL NZ NA PO NC

MOV BL,AL

-t

AX=14A5 CX=002B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13F0 SS=1400 CS=1401 NV UP EI PL NZ NA PO NC

MOV CL,04

-t

AX=14A5 BX=00A5 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13F0 SS=1400 CS=1401 NV UP EI PL NZ NA PO NC

SHL BL,CL

-

AX=14A5 CX=0004 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13F0 SS=1400 CS=1401 NV UP EI PL NZ NA PE NC

MOV [0001],BL DS:0001=50 -t

BX=0050 CX=0004 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13F0 SS=1400 CS=1401 NV UP EI PL NZ NA PE NC 1401:0012 240F AND AL,0F

-t

BX=0050 CX=0004 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13F0 SS=1400 CS=1401 NV UP EI PL NZ NA PE NC

MOV [0002],AL DS:0002=05 -t

AX=1405 BX=0050 CX=0004 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13F0 SS=1400 CS=1401 NV UP EI PL NZ NA PE NC

MOV AH,4C

-

AX=4C05 BX=0050 CX=0004 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

SS=1400 CS=1401 NV UP EI PL NZ NA PE NC

INT 21

程序2:

DATA SEGMENT

X DB 20H ;定义X为字类型并赋值20H

Y DW ? ;定义Y为字节类型

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DA TA

START: MOV AX,DATA

MOV DS,AX

MOV AL,X ;把X的值转移到AL

XOR AH,AH ;清零AH

SHL AX,1 ;将目的操作数向左移动1位

MOV BX,AX

MOV CL,2 ;移位大于1,需用CL

SHL AX,CL ;将目的操作数向左移动2位

ADD AX,BX ;把AX与BX中的值相加

MOV Y,AX

MOV AH,4CH ;返回DOS状态下

INT 21H

CODE ENDS

END START

运行结果:

1401:0000 B80014 MOV AX,1400

1401:0003 8ED8 MOV DS,AX

1401:0005 A00000 MOV AL,[0000]

1401:0008 32E4 XOR AH,AH

1401:000A D1E0 SHL AX,1

1401:000C 8BD8 MOV BX,AX

1401:000E B102 MOV CL,02

1401:0010 D3E0 SHL AX,CL

1401:0012 03C3 ADD AX,BX

1401:0014 A30100 MOV [0001],AX

1401:0017 B44C MOV AH,4C

1401:0019 CD21 INT 21

1401:001B FE8946F6 DEC BYTE PTR [BX+DI+F646]

1401:001F EB06 JMP 0027

-

首地址:1400

运行前结果:

-d 1400:0,f

1400:0000 ...............

-t

运行后结果:

Program terminated normally

-d 1400:0,f

1400:0000 @..............

单步调试:

-t

AX=-t

AX=-t

AX=1400 BX=0000 CX=002B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=13EB ES=13EB SS=1400 CS=13FC IP=0003 NV UP EI PL NZ NA PO NC

13FC:0003 8ED8 MOV DS,AX

-t

AX=1400 BX=0000 CX=002B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13EB SS=1400 CS=13FC NV UP EI PL NZ NA PO NC

MOV AL,[0000] DS:0000=20

BX=0000 CX=002B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13EB SS=1400 CS=13FC NV UP EI PL NZ NA PO NC

XOR AH,AH

-t

BX=0000 CX=002B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13EB SS=1400 CS=13FC NV UP EI PL ZR NA PE NC

SHL AX,1

-g

BX=0000 CX=002B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

DS=13EB ES=13EB SS=1400 CS=13FC IP=0003 NV UP EI PL NZ NA PO NC

13FC:0003 8ED8 MOV DS,AX

-t

AX=1400 BX=0000 CX=002B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13EB SS=1400 CS=13FC NV UP EI PL NZ NA PO NC

MOV AL,[0000] DS:0000=20 -t

BX=0000 CX=002B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13EB SS=1400 CS=13FC NV UP EI PL NZ NA PO NC

XOR AH,AH

-t

BX=0000 CX=002B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13EB SS=1400 CS=13FC NV UP EI PL ZR NA PE NC

SHL AX,1

-g

BX=0000 CX=002B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

DS=13EB ES=13EB SS=1400 CS=13FC IP=0003 NV UP EI PL NZ NA PO NC

13FC:0003 8ED8 MOV DS,AX

-t

AX=13FB BX=0000 CX=002B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13EB SS=13FB CS=13FC NV UP EI PL NZ NA PO NC

MOV AL,[0000] DS:0000=20 -t

BX=0000 CX=002B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13EB SS=1400 CS=13FC NV UP EI PL NZ NA PO NC

XOR AH,AH

-t

BX=0000 CX=002B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13EB SS=1400 CS=13FC NV UP EI PL ZR NA PE NC

SHL AX,1

-g

程序3:

DATA SEGMENT

ORG 1000H

BIN DB ?

HEX DB 6Bh

ORG 1030H

DB 00H, 01H,02H,03H,04H,05H,06H,07H,08H,09H

ORG 1040H

DB 0AH,0BH,0CH,0DH,0EH,0FH

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DA TA

START: MOV AX,DA TA

MOV DS,AX

MOV AL,HEX

MOV BX,OFFSET BIN

SUB AH,AH

ADD BX,AX

MOV DL,[BX]

MOV CL,4

SHL DL,CL

MOV AL,HEX+1

MOV BX,OFFSET BIN

XOR AH,AH

ADD BX,AX

MOV Ax,BX

OR Al,DL

MOV BIN,AL

MOV AH,4CH

INT 21H

CODE ENDS

END START

运行结果:

1505:0000 B80014 MOV

1505:0003 8ED8 MOV DS,AX

1505:0005 A00110 MOV AL,[1001]

1505:0008 BB0010 MOV BX,1000

1505:000B 2AE4 SUB AH,AH

1505:000D 03D8 ADD BX,AX

1505:000F 8A17 MOV DL,[BX]

1505:0011 B104 MOV CL,04

1505:0013 D2E2 SHL DL,CL

1505:0015 A00210 MOV AL,[1002]

1505:0018 BB0010 MOV BX,1000

1505:001B 32E4 XOR AH,AH

1505:001D 03D8 ADD BX,AX

1505:001F 8BC3 MOV AX,BX

首地址:1400

-运行前结果:

-d 1400:0,f

1400:0000 ................

.....

-

运行后结果:

-d 1400:0,f

1400:0000 ...........

单步调试:

BX=0000 CX=107A DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=13F0 ES=13F0 SS=1400 CS=1505 IP=0003 NV UP EI PL NZ NA PO NC 1505:0003 8ED8 MOV DS,AX

-T

AX=1400 BX=0000 CX=107A DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13F0 SS=1400 CS=1505 NV UP EI PL NZ NA PO NC

MOV AL,[1001] DS:1001=6B -T

BX=0000 CX=107A DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13F0 SS=1400 NV UP EI PL NZ NA PO NC

MOV BX,1000

-T

AX=146B CX=107A DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13F0 SS=1400 CS=1505 NV UP EI PL NZ NA PO NC

SUB AH,AH

-T

BX=1000 CX=107A DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13F0 SS=1400 CS=1505 NV UP EI PL ZR NA PE NC

ADD BX,AX

-

AX=006B CX=107A DX=0000 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13F0 SS=1400 CS=1505 NV UP EI PL NZ NA PO NC

MOV DL,[BX] DS:106B=32 -t

AX=006B BX=106B CX=107A SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13F0 SS=1400 CS=1505 NV UP EI PL NZ NA PO NC

MOV CL,04

-t

AX=006B BX=106B CX=1004 DX=0032 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13F0 SS=1400 NV UP EI PL NZ NA PO NC

SHL DL,CL

-t

AX=006B BX=106B CX=1004 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13F0 SS=1400 CS=1505 NV UP EI PL NZ NA PO CY

MOV AL,[1002] DS:1002=00 -t

BX=106B CX=1004 DX=0020 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13F0 SS=1400 CS=1505 NV UP EI PL NZ NA PO CY

MOV BX,1000

-

AX=0000 CX=1004 DX=0020 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13F0 SS=1400 CS=1505 NV UP EI PL NZ NA PO CY

XOR AH,AH

-t

AX=0000 BX=1000 CX=1004 DX=0020 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13F0 SS=1400 CS=1505 NV UP EI PL ZR NA PE NC

ADD BX,AX

-t

AX=0000 BX=1000 CX=1004 DX=0020 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13F0 SS=1400 CS=1505 NV UP EI PL NZ NA PE NC

MOV AX,BX

-t

BX=1000 CX=1004 DX=0020 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13F0 SS=1400 NV UP EI PL NZ NA PE NC

OR AL,DL

-t

BX=1000 CX=1004 DX=0020 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13F0 SS=1400 CS=1505 NV UP EI PL NZ NA PO NC

MOV [1000],AL DS:1000=20

-

-t

AX=1020 BX=1000 CX=1004 DX=0020 SP=0000 BP=0000 SI=0000 DI=0000

DS=1400 ES=13F0 SS=1400 CS=1505 NV UP EI PL NZ NA PO NC

MOV AH,4C

-

心得体会:

写程序时,对于有些特定的指令不太熟,有时还得借助于课本,不能脱离课本编程。应该加大力度记一些指令,及多看看一些好的程序代码,多做一些题目,来提高自身的编程能力。编程时得多注意一些中英文的符号不能换乱,学会用全部转换的功能然后转换需要转换的符号。

汇编语言程序设计 知识点 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一样,可以作为基地址

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

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

实验四循环结构汇编语言程序设计 一、实验目的 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)

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

目录 目录 (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执行,观察执行结果。 (设置存储器的值)

程序设计基础实验内容

实验指导 实验一 Visual C++开发环境使用 1.实验目的 (1)熟悉Visual C++集成开发环境。 (2)掌握C语言程序的书写格式和C语言程序的结构。 (3)掌握C语言上机步骤,了解C程序的运行方法。 (4)能够熟练地掌握C语言程序的调试方法和步骤 2. 实验内容 输入如下程序,实现两个数的乘积。 #include ; int main() { x=10,y=20 p=prodct(x,t) printf("The product is : ",p) int prodct(int a ,int b ) int c c=a*b return c } (1)在编辑状态下照原样键入上述程序。 (2)编译并运行上述程序,记下所给出的出错信息。 (3)再编译执行纠错后的程序。如还有错误,再编辑改正,直到不出现语法错误为止。3.分析与讨论 (1)记下在调试过程中所发现的错误、系统给出的出错信息和对策。分析讨论成功或失败的原因。 (2)总结C程序的结构和书写规则。 实验二数据类型、运算符和表达式 1.实验目的 (1)理解常用运行符的功能、优先级和结合性。 (2)熟练掌握算术表达式的求值规则。 (3)熟练使用赋值表达式。 (4)理解自加、自减运算符和逗号运算符 (5)掌握关系表达式和逻辑表达式的求值 2.实验内容 (1)整数相除 #include<> int main() {

int a=5,b=7,c=100,d,e,f; d=a/b*c; e=a*c/b; f=c/b*a; printf("d=%d , e=%d ,f=%d\n",d,e,f); return 0; } (2)自加、自减运算 #include<> int main() { int a=5,b=8; printf("a++=%d\n",a++); printf("a=%d\n",a); printf("++b=%d\n",++b); printf("b=%d\n",b); return 0; } (3)关系运算和逻辑运算 #include<> int main() { int a=5,b=8,c=8; printf("%d,%d,%d,%d\n",a==b&&a==c,a!=b&&a!=c,a>=b&&a>=c,a<=b&&a<=c); printf("%d,%d\n",a<=b||a>=c,a==b||b==c); printf("%d,%d,%d,%d\n",!(a==b),!(a>=b),!(a>=c),!(a<=b)); return 0; } (1)在编辑状态下输入上述程序。 (2)编译并运行上述程序。 3.分析与讨论 (1)整数相除有什么危险?应如何避免这种危险? (2)分析a++和++a的区别。 (3)条件表达式和逻辑表达式的意义是什么,它们取值如何? (4)如何比较两个浮点数相等?为什么? 实验三格式化输入输出函数的使用 1.实验目的 (1)掌握格式字符使用的方法。 (2)掌握printf()进行格式化输出的方法。 (3)掌握scanf()进行格式化输入的方法。 2.实验内容 (1)输入如下程序,观察运行结果 #include<>

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.调试过程中遇到的问题和解决的方法。

分支与循环程序设计实验报告

分支与循环程序设计实验-报告

————————————————————————————————作者: ————————————————————————————————日期:

实验名称 分支与循环程序设计实验 指导教师 罗志祥 专业班级 光电1406 姓名 段昳晖 学号 U2014***** 联系电话 137******** 一、任务要求 1. 设有8bits 符号数X 存于外部RA M单元,按以下方式计算后的结果Y 也存于外部RAM 单元,请按要求编写完整程序。 264/2 106410 X X Y X X X X ?≥? =<

选择结构程序设计

第四章择路而行---选择结构程序设计 第一节路口诀择----条件语句 一、教学目标 1、掌握选择结构程序中常用的Qbasic语句。 2、掌握选择结构程序设计方法。 3、能利用选择结构程序设计解决简单的实际问题。 二、教学重点: 1.选择结构的语句及功能 2.选择结构中程序设计方法。 三、教学方法:讲授法,对比法,分组讨论法。 四、教学时间:2课时 五、教学教程: (一)引入新课:前面我们学习了顺序结构程序设计,利用顺序结构只能设计一些较简单的程序,如果要处理复杂的问题,就需要采用另外两种基本结构:选择结构和循环结构。选择结构,是一种常用的主要基本结构,是计算机科学用来描述自然界和社会生活中分支现象的重要手段。其特性是:无论分支多寡,必择其一;纵然分支众多,仅选其一。 (二)讲述新课 l 单行条件选择语句IF 1、单行结构条件语句IF…THEN…ELSE 格式:IF <条件> THEN <语句1> [ELSE <语句2>] 功能:最简单的条件选择语句,用来进行条件判断,使语句有条件的执行。 说明: 1)当<条件>为真(非零数)时,则执行<语句1>。 2)ELSE语句可以省略。 3)当<条件>为假(零)时,而且语句中有ELSE语句则执行<语句2>。 4)IF、THEN、ELSE必须在同一行上。 2、示例A、输入x的值,计算y的值。 REM 程序名为:eg1.bas INPUT “请输入x的值:”,x IF x>=0 THEN Y=1+X ELSE Y=1-2*X PRINT "Y=";Y END 例:求一元二次方程Ax2+Bx+C=0(A<>0)的实数根。 分析:写写出程序的流程图,参考流程图来写程序。 程序清单如下: INPUT A,B,C D=B*B-4*A*C IF D<0 THEN then X1=(-B+SQR(D))/(2*A) X2=(-B-SQR(D))/(2*A) PRINT “X1=”;X1, “X2=”;X2 ELSE PRINT “此方程无实根” END

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

微机原理实验报告 实验名称汇编语言程序设计 一、实验目的 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 程序运行结果

《Python程序设计》实验3---Python基本数据类型及分支结构实验报告

**大学数学与信息工程学院 《Python程序设计》实验报告 实验名称:实验3 Python基本数据类型及分支结构 … 班级: 姓名:学号:[ 实验地点:日期: 、 一、实验目的: [实验目的和要求] 1、熟练掌握Python三种数字类型及其应用 \ 2、熟练判断条件表达式的真假 3、熟练掌握Python分支结构 二、实验环境: 1、计算机,局域网,python 软件 三、实验内容和要求:(直接将实验步骤及截图写在题目下面,结果必须截图) 1、# 2、复数z=-3+4j,用Python程序求得对应的实部和虚部并计算z的绝对值,并思考输出的绝对值代表什么含义 3、请将下列数学表达式用Python程序写出来,并运算结果 1) 4 2734 5 x +-?= 代码:~

a=2**4 b=7 c=3 d=4 e=5 [ x=(a+b-c*d)/e print(x) 2)2 131677()(mod )/x =+? 代码: | a=3**2 b=1 c=16 d=7 x=(a+b)*(c%d)/7 # print(x) 4、编写程序,根据输入的长和宽,计算矩形的面积并输出。要求:输入语句input 实现同步赋值。 lw=input('请输入矩形的长和宽,以空格分隔:') length,width=map(float,()) ~ s=length*width

print("矩形面积为:",s) 5、编写程序,用户输入一个三位以上的整数(如果不是三位数则提示输入错误),输出其百位以上的数字。例如用户输入1234,则程序输出12。(提示:使用整除运算。) 代码: [ a=eval(input('请输入一个三位以上的整数:')) b=int(a/100) if(a<99): print('输入错误') else: … print(b)

实验四-答案--选择结构程序设计讲课讲稿

实验四-答案--选择结构程序设计

实验四选择结构程序设计答案 实验时间:年月日【实验步骤】 一、程序调试练习 1、写出下列程序的运行结果: (1)ex4_1.c #include void main() { char ch; printf("input a character:"); ch=getchar(); if(ch>='A' && ch<='Z') ch=ch+32; printf("%c\n",ch); } 具体要求: ①从键盘上输入a,分析程序运行的结果。 ②从键盘上输入A,分析程序运行的结果。 ③从键盘上输入5,分析程序运行的结果。 程序运行结果: ①a ②a ③5 (2)ex4_2.c #include void main() { int x,y,z; printf("input x,y,z"); scanf("%d,%d,%d",&x,&y,&z); if(x

①从键盘上给x、y、z分别输入2,-1,2,分析程序运行的结果。 ②从键盘上给x、y、z分别输入3,5,2,分析程序运行的结果。 ③从键盘上给x、y、z分别输入-5,-3,2,分析程序运行的结果。 程序运行结果: ①z=2 ②z=3 ③z=0 (3)ex4_3.c #include main() { int x=1,a=0,b=0; switch(x) { case 0:b++; case 1:a++; case 2:a++;b++; } printf("a=%d,b=%d\n",a,b); } 程序运行结果: a=2,b=1 (4)ex4_4.c #include void main() { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0: a++; break; case 1: b++; break; } case 2: a++; b++; break; case 3: a++; b++;

汇编语言实验4-分支程序设计

汇编语言实验报告 Assembly Language Programming Lab Reports ______________________________________________________________________________ 班级: _________ 姓名:___________ 学号:___________ 实验日期:_____________ 学院: _____计算机与通信工程学院____ 专业:_______计算机科学与技术___________ 实验顺序:___实验四____ 实验名称:____________分支程序设计________________ 实验分数:_______ 考评日期:________ 指导教师: ______________________________________________________________________________ 一.实验目的 1.掌握主要的转移指令和位操作指令。 (1)无条件转移指令。Jmp理解掌握段内寻址和段间寻址方式。 (2)条件转移指令,无符号数比较转移,带符号数比较转移,cx为0转移指令(jcxz)这 些都为短转移指令,当代码过长超出-128-127的的转移范围,学会使用无条件指令 作为中间桥梁完成相应的功能。 (3)Test指令和Cmp指令。 2.掌握分支程序实现的方法。 (1)在完成一个程序的功能时,先简单列出要完成这个程序需要的步骤。 (2)根据列出的步骤画出程序框图。 (3)根据框图写代码。 3.在调试运行程序时,理解程序的加载过程。进一步掌握编辑、编译、链接、调试过程。 ______________________________________________________________________________ 二.实验环境 操作系统:windows xp 编译程序:masm 5.0 ______________________________________________________________________________ 三.实验原理 1.无条件转移指令 格式:JMP OPR 举例:JMP AA1 2.条件转移指令 格式:JZ、JNZ、JC、JNC 举例:JZ let1 3.逻辑与AND 格式:AND DST,SRC 举例:AND AL,0FH 4.循环左移,循环右移 格式:ROL、ROR 举例:ROL AX,1 ROR AL,1

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

1.汇编语言程序设计实验篇 1.1.汇编系统软件简介 Emu8086-Microprocessor Emulator是集源代码编辑器、汇编/反汇编工具以及debug 的模拟器。它能模拟一台"虚拟"的电脑运行程序,拥有独立的“硬件”,避免访问真实硬件。该软件兼容Intel的下一代处理器,包括PentiumII、Pentium4。利用该软件提供的调试工具,能够单步跟踪程序,观察程序执行过程中寄存器、标志位、堆栈和内存单元的内容。 1.1.1创建程序 https://www.doczj.com/doc/84188146.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.熟悉汇编语言程序设计结构; 2.熟悉汇编语言分支程序基本指令的使用方法; 3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法。 二、软硬件环境 1.硬件环境:微机CPU 486以上,500MB 以上硬盘,32M 以上内存; 2.软件环境:装有MASM 5.0、DEBUG 、LINK 和EDIT 等应用程序。 三、实验涉及的主要知识单元 在实际应用中,经常根据一些条件来选择一条分支执行。汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号和相减而导致的结果来进行。下面就有符号数转移指令来了解在汇编语言程序设计方法。 四、实验内容与步骤 1.实验内容 (1)编写计算下面函数值的程序: ?? ? ??<-=>=0,10,00,1x x x y 设输入数据为X 、输出数据Y ,且皆为字节变量,使用Debug 查看X 、Y 两个变量 的数据 (2)以ARRAY 为首地址的内存单元中,存放5个8位的不带符号数,找出5个数中的最大数,并将结果存入RESULT 字节单元中。 2.实验步骤 a.实验流程图 (1)计算函数值的流程图

b.编写程序 (1)计算函数值的实验代码 DATA SEGMENT X DB 12 Y DB ? DATA ENDS STACK SEGMENT STACK'STACK' DB 100H DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AL,XX CMP AL,0 ;把AX 与0比较 JGE BIGPR ;0≥AL 转入BIGPR MOV Y,0FFFFH ;0AL 则1=Y JMP EXIT EQUPR: MOV Y,0 ;0=AL 则0=Y EXIT: MOV AL,Y RET CODE ENDS END START

C语言选择结构程序设计编程题.doc

实验2 选择结构程序设计 一.实验目的: 1.掌握选择控制语句的使用方法; 2.了解C程序语句的执行过程。 二.实验内容: 1.编写程序:输入一个整数,判断该数的奇偶性。(输出相应的标志even-偶数odd-奇数,请记住这两个单词)。 2.从键盘输入的正整数,判断是否能被5和7同时整除,若是,则输出Yes;否则输出No。 3.输入一个字符,如果是大写字母改变为小写字母;如果是小写字母,则把它变为大写字母;若是其它字符则不变。 4.编写程序,对于给定的一个百分比制成绩,输出相应的五分制成绩。设:90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为’E’(用if…else…与switch 语句两种方法实现)。 5. 企业发放的奖金根据利润提成。利润(i)低于或等于10万元时,奖金可提成10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万元到40万元之间时,高于20万元的部分,可提5%;40万元到60万元之间时,高于40万元的部分,可提成3%;60万元到100万元之间时,高于60万元的部分,可提成1.5%;高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润i,求发放奖金总数。 6. 输入某年某月某日,判断这一天是这一年的第几天。 7. 输入一个字符,请判断是字母、数字还是特殊字符。 8. 身高预测: 男性成人身高=(父亲身高+母亲身高)*0.54cm 女性成人身高=(父亲身高*0.923+母亲身高)/2cm 如果喜爱体育锻炼,那么身高可增加2%;如果有良好的饮食习惯,可增加身高1.5%。键盘输入性别、父母身高、是否爱好体育锻炼、是否有良好的饮食习惯,利用给定身高预测方法对你的身高进行预测。 9. 要求用switch语句编程设计一个简单的计算器程序。要求根据用户从键盘输入的表达式。 操作数1 运算符op 操作数2 计算表达式的值。指定的算术运算符为加(+)、减(-)、乘(*)、除(/)。 在此基础上,增加如下要求: (1)如果要求程序能进行浮点数运算,程序应该如何修改?如何比较实型变量和常数0是否相等? (2)如果要求输入的算术表达式中的操作数和运算符之间可以加入任意多个空格符,那么程序如何修改? (3)如果要求连续多次算术运算,每次运算结束后,程序都给出提示: Do you want to continue(Y/N y/n)? 如果用户输入Y或y时,程序继续进行其它算术运算,否则程序才退出运行状态。那么程序如何进行修改?

第四章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.逻辑运算符两侧运算对象的数据类型( ) A.只能是0和1 B.只能是0或非0正数 C.只能是整型或字符型数据 D.可以是任何类型的数据 2.下列运算符中优先级最高的是( ) A.< B.+ C.&& D.!= 3.能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假"的表达式是( ) A.(x>=1)&&(x<=10)&&(x>=200)&&(x<=210) B.(x>=1)||(x<=10)||(x>=200)||(x<=210) C.(x>=1)&&(x<=10)||(x>=200)&&(x<=210) D.(x>=1)||(x<=10)&&(x>=200)||(x<=210)

4.表示图中坐标轴上阴影部分的正确表达式是( ) A.(x<=a)&&(x>=b)&&(x<=c) B.(x<=a)||(b<=x<=c) C.(x<=a)||(x>=b)&&(x<=c) D.(x<=a)&&(b<=x<=c 5.判断char型量ch是否为大写字母的正确表达式是() A.‘A’<=ch<=‘Z’ B.(ch>=‘A’)&(ch<=‘Z’) C.(ch>=‘A’)&&(ch<=‘Z’) D.(‘A’<=ch)AND(‘Z’>=ch) 6.设x,y,z都是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是 () A.‘x’&&‘y’ B.x<=y C.x||y+z&&!y D.!(x

7.已知x=43,ch=‘A’,y=0;则表达式(x>=y&&ch<‘B’&&!y)的值是() A.0 B.语法错误 C.1 D.“假” 8.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,则以下不能满足要求的表达式是() A.A%2==1 B.!(A%2==0) C.!(A%2) D.A%2 9.设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后的值为() A.1 B.2 C.3 D.4 10.下列运算符中优先级最低的是( )优先级最高的是( ) A.? B.&& C.+ D.!=

汇编语言程序设计

汇编语言程序设计 实验报告 实验名称上机过程及顺序结构与分支结构程序设计实验班级 学号 姓名 日期2017年10月26号 成绩 评阅人 软件学院

一、实验目的与意义 理解并熟练掌握汇编语言程序设计过程中的编辑、汇编、链接和调试等各个步骤,提高对汇编课程内容的理解和汇编语言的掌握,通过上机练习加深对课程内容的理解和掌握。通过汇编语言编制的程序上机调试、运行检验程序设计是否正确。熟悉和掌握编辑、汇编、连接和调试四个实用程序的使用方法,掌握调试程序中的几个常用命令的使用方法。熟悉其基本的指令操作,debug调试操作命令以及分支结构、顺序结构和循环结构的程序设计。 二、实验环境 操作系统:Microsoft Windows8 集成环境:Masm for Windows 上机地点:信息楼B405教室 三、实验的预习内容 预习的主要内容: 1. 使用DEBUG命令的方法; 2. 熟悉掌握从理论上定义数据的类型(即DB,DW,DD,); 3. 分支结构和顺序结构的步骤以及相关的指令; 4. 常用的标志位状态及相应的作用; 实验思路: 在对题目进行分析后,分析出解题方法,并做出与实验思路相对应的程序框图。依照程序框图的内容输入相对应的代码,最终在调试代码后,发现并解决一系列的汇编语言错误。进一步优化算法。实验之前必须了解十进制、十六进制和ASCII码之间的转换。预习查表法相关命令,掌握顺序程序的结构,从键盘输入数据的命令及显示到屏幕上的命令。 实验一: 题目1:将程序编辑、汇编、连接并通过集成环境中的debug调试,观察运行结果;用E命令修改指定地址的数据,再用G命令执行程序查看变化,用A 命令将加法指令修改成减法指令,再将其编译运行,查看寄存器值变化的异同。 题目2:分别用DB、DW和DD数据段9H,0FAH,41H,27H,编译链接之后生成exe文件,再用debug的r命令找到数据段地址,用d命令指定数据段地址,观察汇编后在机器内部对应的存储情况。 实验二: 先设置数据段地址和堆栈段地址;设置堆栈段指针;读取一个字符然后存储在AL中;用BX来存储AL中字符对应的数值;将BX中的值作为偏移地址;并在数据段中查找对应字符串;最终输出结果结束程序。 实验三: 先初始化数据段地址与堆栈段地址;设置堆栈段指针;然后将数据段中的data1放入AL中;读取数据段中的data2并判断data2是否大于0;然后读取数

汇编语言分支结构程序设计

实验七分支结构程序设计 一、实验目得 掌握条件转移指令得使用方法及指令对标志寄存器中各标志位得影响;掌握标志位与转移指令之间得关系;会用条件转移指令与无条件转移指令设计多分支结构程序;掌握设置断点调试程序得方法。 二、示例 1、内存自BUF单元开始得缓冲区连续存放着10个学生得英文分数,编程序统计其中90~ 100,60~89,60以下者各有多少人?并把90—100分人数结果存放在P1单元中、60-89分人数结果存放在P2单元中,60分以下人数结果存放在P3单元中(P1、P2、P3为数据段得单元),最后把P1、P2、P3中得数以"P1=?、P2=?、P3=?”显示在屏幕上。(注:数据以10进制显示) DATA SEGMENT BUF DB70H,58H,50H,91H,99H,62H,75H,82H,74H,60H ;定义BUF单元地址开始得缓冲区得数据 ORG 0020H ;程序执行时,将P1送到0200H内存单元 P1DB 0 ORG 0030H ;程序执行时,将P2送到0300H内存单元 P2DB0 ORG0040H P3 DB 0 ;程序执行时,将P3送到0400H内存单元 ORG 0050H ;程序执行时,将DP1送到0500H内存单元 DP1 DB’P1= $' ORG0060H ;程序执行时,将DP2送到0600H内存单元 DP2 DB'P2= $' ORG0070H ;程序执行时,将DP3送到0700H内存单元 DP3 DB'P3=$' ORG 0080H ;程序执行时,将COUNT送到0800H内存单元 COUNT DW 10 ;'$'为地址运算符,返回当前程序语句得地址偏移值 DATA ENDS;定义数据段 CSEG SEGMENT ASSUME CS:CSEG,DS:DATA PUSH DS ;将DS压入堆栈 SUB AX,AX;将AX内存器内容清空 PUSH AX START:MOV AX,DATA MOV DS,AX ;将数据传给数据段DS MOVCX,COUNT ;设置计数器CX,最多为10 MOV SI,0 ;给SI赋值为0 LP1:

分支程序的设计实验

《单片机实验》报告 实验名称分支程序设计实验 指导教师冬生 专业班级电子1103班 XXXXXX 学号 XXXXXXXXXXX 联系方式 XXXXXXXXXXX

一、任务要求 熟练掌握KeilC 环境下汇编语言程序的调试方法,加深对汇编语言指令、机器码、寻址方式等基本容的理解,掌握分支程序和简单程序的设计与调试方法,了解并行IO 口的使用 1. 设有8bits 符号数X 存于外部RAM 单元,按以下方式计算后的结果Y 也存于外部RAM 单元,请按要求编写程序。 240/22040 20X X Y X X X X ?≥? =<

相关主题
文本预览
相关文档 最新文档