川师汇编实验报告(含截图)

川师汇编实验报告(含截图)
川师汇编实验报告(含截图)

《汇编程序设计》实验报告

班级

姓名

院系

学号

指导教师

计算机科学学院

目录:

一、实验一Debug命令的使用 (3)

1.(内容)Debug程序的调入和退出 (3)

2.(步骤)Debug常用调试命令的使用 (3)

3.(扩展)MOV指令、XCHG指令、XLAT指令的调试 (5)

二、实验二基本汇编指令的使用 (7)

1.(内容)实验内容 (7)

2.(步骤) (13)

3.(扩展) (15)

三、实验三DOS环境下的汇编语言编程环境使用 (18)

1. 判断是否是闰年 (18)

四、实验四内存操作数及寻址方法 (18)

1.内存操作数及各种寻址方式使用 (18)

2.求累加和程序: (20)

3.多字节加法程序。 (22)

五、实验五数据串传送和查表程序 (25)

1.利用查表方法把DX的内容(十六进制数)转换成ASCII码 (25)

2.数据串搬家程序: (28)

3.段寄存器概念及字符串传送指令练习 (30)

六、实验六屏幕字符显示程序 (33)

七、实验七二进制加、减法编程实验 (33)

1.实验内容 (33)

2.实验步骤 (34)

八、实验八十进制数的BCD加、减法编程实验 (36)

1.实验内容 (36)

2.实验步骤 (38)

九、实验九二进制乘、除法编程实验(设计性实验) (41)

1.实验的内容 (41)

2.实验步骤 (43)

十、实验十逻辑运算编程实验(验证性实验) (45)

1.实验内容 (45)

2.实验步骤 (45)

十一、实验十一移位操作编程实验(设计性实验) (47)

十二、实验十二ASCII码表示的十进制数、二进制数和BCD的互换编程实验 (47)

十三、实验十三循环程序设计 (47)

1.实验内容 (47)

2.实验步骤 (50)

十四、实验十四分支程序设计 (53)

1.实验内容 (53)

2.实验步骤 (55)

十五、实验十五子程序设计 (57)

1.实验内容 (57)

一、实验一Debug命令的使用

1.(内容)Debug程序的调入和退出

2.(步骤)Debug常用调试命令的使用

-A

137B:0100 mov ax,20

137B:0103 mov bx,ax

137B:0105 add ax,bx

137B:0107 mov [2000],ax

137B:010A

-T=0100

AX=0020 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=137B ES=137B SS=137B CS=137B IP=0103 NV UP EI PL NZ NA PO NC 137B:0103 89C3 MOV BX,AX

-T=0103

AX=0020 BX=0020 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=137B ES=137B SS=137B CS=137B IP=0105 NV UP EI PL NZ NA PO NC 137B:0105 01D8 ADD AX,BX

-T

AX=0040 BX=0020 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=137B ES=137B SS=137B CS=137B IP=0107 NV UP EI PL NZ NA PO NC 137B:0107 A30020 MOV [2000],AX

DS:2000=000

-T

AX=0040 BX=0020 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=137B ES=137B SS=137B CS=137B IP=010A NV UP EI PL NZ NA PO NC

137B:010A 0000 ADD [BX+SI],AL DS:0020=FF

-D 2000 L2

137B:2000 40 00

修改0100处的指令mov ax,20 将AX的初始值改为10,并重新运行

-A 0100

137B:0100 mov ax, 10

137B:0103

最后一条指令执行的结果如下:

AX=0020 BX=0010 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=137B ES=137B SS=137B CS=137B IP=010A NV UP EI PL NZ NA PO NC 137B:010A 0000 ADD [BX+SI],AL DS:0010=DF

查看2000单元的值为0020H

-D 2000 l2

137B:2000 20 00

修改2000单元的值,由20h改为30h 并重新显示

-E 2000

137B:2000 20.30

-D 2000 l2

137B:2000 30 00

3.(扩展)MOV指令、XCHG指令、XLAT指令的调试

(1)MOV指令的调试

程序段:MOV AL, 55H

MOV AH, AL

MOV BX, 1000H

MOV BYTE PTR[BX], 66H

MOV WORD PTR[BX+2], 77H

MOV [BX+4], AX

(2)XCHG指令的调试

程序段:MOV AX, 0203H

MOV BX, 0405H

XCHG AX, BX

XCHG BL, BH

(3).XLAT指令的调试

用E命令从DS:200地址开始输入数据10H、20H、30H、40H、50H

用A命令输入以下程序段:

MOV BX, 200 ;将数据的首地址送给BX

MOV AL, 4用MOV ;将要查找的数据的偏移地址送给AL

XLAT

查看结果寄存器AL中的值,以及从DS:200开始的存储单元的值。

二、实验二基本汇编指令的使用

1.(内容)实验内容

(1)单步调试以下程序段,给出每条指令执行后AL的值,以及CF、ZF、SF、OF的状态。

MOV AL, 89H

ADD AL, AL

ADD AL, 9DH

CMP AL, 0BCH

SUB AL,AL

DEC AL

INC AL

AL=H,OF=1,SF=0,ZF=0,CF=1;AL=AFH,OF=0,SF=1,ZF=0,CF=0;AL=AFH,OF=0,SF=1,ZF=0,CF=1;AL=00H,OF=0,SF=0,ZF=1,CF=0;AL=FFH,OF=0,SF=1,ZF=0,CF=0;AL=00H,OF=0,SF=0,ZF=1,CF=0。

(2)编写程序段,分别完成11223344H与55667788H的加/减计算,并调试、观察结果。

加法:

减法:

(3)单步调试以下程序段,给出每条指令执行后AL的值,以及CF、ZF、SF、OF的状态。

MOV AX, 1470H

MOV BX, 3060H

AND AX, BX

OR AX, BX

XOR AX, AX

NOT AX

TEST AX,0F0F0H

AL=70H,OF=0,SF=0,ZF=0,OF=0;

AL=70H;OF=0,SF=0,ZF=0,OF=0;

AL=60H;OF=0,SF=0,ZF=0,OF=0;

AL=60H;OF=0,SF=0,ZF=0,OF=0;

AL=00H;OF=0,SF=0,ZF=1,OF=0;

AL=FFH;OF=0,SF=0,ZF=1,OF=0;

AL=FFH;OF=0,SF=0,ZF=1,OF=0;

(4)设(AX)=1234H,写出执行下列每条指令后AX寄存器的内容,并观察CF的变化。

SHL AX, 1

MOV CL, 2

SHL AX, CL

SHR AX, 1

ROL AX, 1

MOV CL, 3

ROL AX, CL

RCR AX,1

MOV CL, 2

RCR AX, CL

AX=2468H;CF=0;

AX=2468H;CF=0

AX=91A0H,CF=0;

AX=48D0H,CF=0;

AX=91A0H,CF=0;

AX=91A0H,CF=0;

AX=8D40H,CF=0;

AX=4682H,CF=0;

AX=4682H,CF=0;

AX=11A0H,CF=1;

2.(步骤)

利用单步执行命令T逐条执行指令,观察寄存器及相关状态位的值

以实验内容2中的加法为例,实现加法运算:

注:下划线部分为程序员输入的内容。

(1)-A

1373:0100 MOV AX, 3344 ;DX.AX<- 11223344H

1373:0103 MOV DX, 1122

1373:0106 ADD AX, 7788 ; DX.AX+55667788H->DX.AX

1373:0109 ADC DX, 5566

1373:010D

-T=100

AX=3344 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=1373 ES=1373 SS=1373 CS=1373 IP=0103 NV UP EI PL NZ NA PO NC 1373:0103 BA2211 MOV DX,1122

-T

AX=3344 BX=0000 CX=0000 DX=1122 SP=FFEE BP=0000 SI=0000

DI=0000

DS=1373 ES=1373 SS=1373 CS=1373 IP=0106 NV UP EI PL NZ NA PO NC 1373:0106 058877 ADD AX,7788

-T

AX=AACC BX=0000 CX=0000 DX=1122 SP=FFEE BP=0000 SI=0000 DI=0000 DS=1373 ES=1373 SS=1373 CS=1373 IP=0109 OV UP EI NG NZ NA PE NC 1373:0109 81D26655 ADC DX,5566

-T

AX=AACC BX=0000 CX=0000 DX=6688 SP=FFEE BP=0000 SI=0000 DI=0000 DS=1373 ES=1373 SS=1373 CS=1373 IP=010D NV UP EI PL NZ NA PE NC 1373:010D 0000 ADD [BX+SI],AL DS:

3.(扩展)

(1)编写程序段:将DX.AX中的双字右移一位。

(2)编写程序段:将AX寄存器的最低4位置1,最高3位清0,第7、8、9位取反,其余位不变。设AX中原来的值为0AAH。

(3)设AX=2AH,BX=30H,编写程序段计算:AX/BX,并将结果送BX.CX。

三、实验三DOS环境下的汇编语言编程环境使用

1. 判断是否是闰年

多次出现错误,最后终于还是做出来了.......逻辑方面问题较多,语言使用不够熟练。

四、实验四内存操作数及寻址方法

1.内存操作数及各种寻址方式使用

程序内容:

MOV AX,1234

MOV [1000],AX

MOV BX,1002

MOV BYTE PTR[BX],20

MOV DL,39

INC BX

MOV [BX],DL

DEC DL

MOV SI,3

MOV [BX+SI],DL

MOV [BX+SI+1],DL

MOV WORD PTR[BX+SI+2],2846

操作步骤

(1)用A命令键入上述程序,并用T命令逐条运行。

(2)每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注明是什么寻址方式。

注意D命令显示结果中右边的ASCII字符及双字节数存放法。

1).立即寻址方式。

2).直接寻址方式。

2.求累加和程序:

程序内容:

MOV BX,1000

MOV CX,10

SUB AX,AX

LOP: ADD AL,[BX]

ADC AH,0

INC BX

J: LOOP LOP

INT3

操作步骤:

汇编实验报告

XXXX大学 实验报告 课程名称汇编语言程序设计成 绩 实验学时 评语: 指导教师: 年月日 班级: 学号: 姓名: 地点: 时间:

实验一汇编语言编程实验 一、实验目的 (1)掌握汇编语言的编程方法 (2)掌握DOS功能调用的使用方法 (3)掌握汇编语言程序的调试运行过程 二、实验内容 1. 将指定数据区的字符串数据以ASCII码形式显示在屏幕上,并通过DOS功能调用完 成必要提示信息的显示。 2. 在屏幕上显示自己的学号姓名信息。 3. 循环从键盘读入字符并回显在屏幕上,然后显示出对应字符的ASCII码,直到输 入”Q”或“q”时结束。 4. 实验中使用的DOS功能调用: INT 21H AH 值功能调用参数结果 1 键盘输入并回显AL=输出字符 2 显示单个字符(带Ctrl+Break检查) DL=输出字符光标在字符后面 6 显示单个字符(无Ctrl+Break检查) DL=输出字符光标在字符后面 8 从键盘上读一个字符AL=字符的ASCII码 光标跟在串后面 9 显示字符串DS:DX=串地址, ‘$’为结束字符 4CH 返回DOS系统AL=返回码 例如,实现键盘输入并回显的完整代码: MOV AH 01H INT 21H 三、实验结果 1. 将指定数据区的字符串数据”Let us go !”以ASCII码形式显示在屏幕上,并通过 DOS功能调用完成必要提示信息的显示: 2. 在屏幕上显示自己的学号姓名信息 3.循环从键盘读入字符并回显在屏幕上,然后显示出对应字符的ASCII码,直到输 入”Q”或“q”时结束。

四、实验原理 DATA SEGMENT MES DB 'NUMBER: 03099018 ',0AH,0DH,'NAME: Feng Xiaokang',0AH,0DH,'$' CENT DB 'Let us go !','$' ENTE DB 0AH,0DH,'$' INFO DB 'Origin: ','$' ASCI DB 'ASCII : ','$' MSG1 DB 'If you want to quit please press...q/Q...',0AH,0DH,'$' MSG2 DB 0AH,0DH,'Char: $' RS DB ' ASCII: $' SD DB '' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ;存储数据 MOV DS,AX MOV DX,OFFSET MES ;显示数据 MOV AH,09H INT 21H MOV DX,OFFSET MSG1 MOV AH,09H INT 21H MOV DX, OFFSET CENT MOV SI, DX T: MOV AL,[SI] CMP AL,'$' JZ C1 AND AL,0F0H ;取高4位 MOV CL,4 SHR AL,CL CMP AL,0AH ;是否是A以上的数 JB A ADD AL,07H A: ADD AL,30H MOV DL,AL ;show character MOV AH,02H INT 21H

汇编实验报告(详细版)

计算机组成与汇编语言(实验报告) 内容: 实验一、六、七、八 院系专业:计算机学院计算机科学与技术 姓名:xxxxxxxxx 学号: 2011004xxxxx 完成时间:2012年12月1日

计算机组成与汇编语言实验报告 姓名xxxx 学号2011004xxxxx 计分 专业软件工程班级xxxx 实验日期2012年 12 月 1日实验名称实验一数制转换 实验目的 ●熟悉各种进制数据之间的相互转换方法。 ●掌握二-十进制数据的相互转换程序设计。 实验内容 1.将编写好的程序1输入、编译、连接并运行。 程序1清单 #include #include #include void main() { int i,l,s0=0,s=0; char a[17]; while(l!=16) { printf("请输入一个16位的二进制数:\n"); gets(a); l=strlen(a); for(i=0;i<16;i++) { if(a[i]!='0'&&a[i]!='1') {

printf("输入的二进制数不正确!!"); break; } } } if(a[15]=='1') s++; for(i=1;i<16;i++) { if(a[15-i]=='1') s+=(1<

说明:如果不是16位二进制则会提示错误。 2.将编写好的程序2输入、编译、连接并运行。 程序2清单 #include #include void main() { int t0,t1,t2,t3,i,j; int a[16]; printf("请输入一个十进制数:"); scanf("%d",&t0); t1=t0; for(i=0;i<16;i++) { t2=t1/2; if(t2>1) a[i]=t1%2; else if(t1==1) { a[0]=1; for(i=1;i<16;i++) a[i]=0; } else if(t1==2) { a[i]=0; a[i+1]=1; for(j=i+2;j<16;j++)

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

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

汇编实验报告

南华大学 实验名称:汇编语言程序设计实验 学院:计算机学院 专业班级:本2010 电气信息类03班 学号:20104030342 姓名:谢志兴 指导教师:刘芳菊 日期:2012 年 6 月10 日

实验一DEBUG的熟悉 一、实验目的 (1)学习使用DEBUG的命令; (2)使用DEBUG命令在数据段中查看程序运行的结果; (3)利用DEBUG运行简单的程序段。 二、实验内容 1)输入程序观察寄存器变化 使用DEBUG命令,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器的内容变化。注意用T命令执行时,CS: IP寄存器的内容。 MOV AX, 4E20 ADD AX, 1416 MOV BX, 2000 ADD AX, BX MOV BX, AX ADD AX, BX MOV AX, 001A MOV BX, 0026 ADD AL, BL ADD AH, BL ADD BH, AL MOV AH, 0 ADD AL, BL ADD AL, 9C 2)输入下面的程序,这是一个两个数相与的程序。结果存放在MSG2单元中,偏移地址为?值为多少? DSEG SEGMENT MSG1 DW 7856H, 2038H MSG2 DW? DSEG ENDS CSEG SEGMENT ASSUME CS: CSEG, DS: DSEG

START: MOV AX, DSEG MOV DS, AX MOV AX, MSG1 AND AX, MSG1+2 MOV MSG2, AX MOV AL, 0 MOV AH, 4CH INT 21H CSEG ENDS END START 程序的跟踪执行操作 在DOS下直接输入文件主名就可以执行文件了,有的程序会显示结果,可能执行后什么结果都没有,是因为程序中没有显示命令。那么如何查看程序的运行结果呢? 程序执行过程的跟踪操作步骤如下: (1)在DOS下输入:DEBUG 文件名.EXE (2)在DEBUG提示符下输入U命令 如果程序中有数据段,可以看到反汇编后第一句可执行语句为: A地址:B地址MOV AX, K地址如:1261:0000 MOV AX, 1260 其中:K地址就是数据段的段寄存器内容,A地址为代码段段寄存器地址,B地址为程序第一条指令的偏移地址。 (3)可以用T命令单步执行指令,执行到MOV AH, 4CH时结束,也可以用G命令执行整个程序,输入:G=B地址(如:G=0000) (4)用D命令查看程序执行后数据段的变化 输入:D K地址:0 (如:D1260:0)

汇编实验报告..

合肥工业大学计算机与信息学院 实验报告 课程:汇编语言程序设计专业班级: 学号: 姓名:

实验一Debug程序的使用 一.实验目的 1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。 2、掌握8086/8088的寻址方式及多字节数据的处理方法。 二.实验内容 1、利用DEBUG程序中的“E”命令,将两个多字节数“003F1AE7H”和“006BE5C4H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。 2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H 单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。要求: 本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。 三.实验过程和程序 1、启动DOS操作系统 2、运行https://www.360docs.net/doc/8a11645588.html,程序(若当前盘为C) C:>DEBUG↙ – ;(“–”为DEBUG提示符,仅当屏幕出现该提示符后,才可输入DEBUG命令) 3、用“A”命令编辑和汇编源程序 –A ↙ 186E:0100 MOV AX,[0200]↙ 186E:0103 MOV BX,[0202]↙ 186E:0107 ADD AX,[0204]↙ 186E:010B ADC BX,[0206]↙ 186E:010F MOV [0208],AX↙ 186E:0112 MOV [020A],BX↙ 186E:0116 ↙ 4、用“U”命令反汇编验证源程序 –U CS:0100↙ 186E:0100 A10002 MOV AX,[0200] 186E:0103 8B1E0202 MOV BX,[0202] 186E:0107 03060402 ADD AX,[0204] 186E:010B 131E0602 ADC BX,[0206] 186E:010F A30802 MOV [0208],AX 186E:0112 891E0A02 MOV [020A],BX 186E:0116 – 注意:

汇编语言实验报告——累加

《汇编语言》实验报告 ——累加器制作 2014级计算机科学与工程学院 学号: 姓名 一、实验要求: 1.显示 INPUT N :,提示用户输入数字字串 2.检测输入字串的合法性,非法给出提示 3.将输入数字字串转化为数值,存入变量n 4.累加1~n ,存入变量sum 5.以十进制显示sum 二、流程图: 开始 输入 判断是否为回车 判断是否为数字 是 转化为数值,将堆栈中 的高位数字乘10然后与低位数字相加,放入堆 栈 否 显示“error ” 结束 否 是 判断cx=0 否 将CX加到A X中 是 得出sum的值 将结果除以10并将余数存入堆栈,累计位数cx,直至商为0 将堆栈中的数字依次输出显示,直至cx=0

三、源代码: DATAS SEGMENT str1 db "Input N:","$" str2 db "sum=","$" str3 db 0ah,"error","$" n dw 0 sum dw 0 DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS MOV DS,AX LEA dx,str1;输出提示符 mov ah,9 int 21h input: mov ah,01;输入数字 int 21h cmp al,0dh;判断是否为回车 jz step1 cmp al,"0";判断字符合法性 jb error cmp al,"9" ja error sub al,"0";转化为ASCII码 mov ah,0;此段将高位乘10 push ax mov ax,n shl ax,1 push ax mov cl,2 shl ax,cl

计算机基础与综合编程实验报告word文档

《计算机基础与综合编程实验》报告 学院计算机科学与技术学院 专业计算机类 班级 姓名 指导教师 日期

1 实验目的 通过迭代式开发,深入掌握C语言的文件、链表、结构体、动态内存管理等技术,开发实现一个计费管理软件。 2 系统功能与描述 1.添加卡与查询卡的操作 (1)添加卡信息。 ①介绍 添加卡信息时,将添加的卡信息保存到工程目录下的card.ams文件。 ②输入 a、输入菜单项编号1实现“添加卡” b、添加卡信息时输入的卡信息 c、保存卡信息的文件路径 ③处理 a、获取保存卡信息的文件路径。 b、获取添加的卡信息。卡信息包括:卡号、密码、开卡金额、卡状态、开卡时间、截止时间、最后使用时间、使用次数、累积金额。 c、将每个卡信息组装成一条字符串,一张卡的每个信息间用“##”分隔。 d、将保存的卡信息的字符串写到工程目录下的card.ams文件末尾。 ④输出 a、保存成功,则显示添加的卡信息。 b、保存失败,则提示添加卡信息失败。 (2)查询卡信息:

①介绍 从工程目录下的card.ams文件中,读取并解析卡信息,将卡信息显示到界面中。 ②输入 a、输入菜单项编号2实现“查询卡” b、card.ams文件中的卡信息 ③处理 a、获取保存卡信息的文件路径。 b、逐行读取该文件中的卡信息并解析。 c、将将解析结果保存到内存中,在界面上显示读取出来的卡信息。 ④输出 a、读取失败,提示没有该卡的信息。 b、读取成功,则在界面输出卡号,状态,余额,累计使用,使用次数,上次使用时间,一共六个信息。 2.上机: ①介绍 根据用户输入的卡号和密码,判断该卡能否进行上机。更新可以上机卡的状态。 ②输入 a、输入菜单项编号3,实现“上机功能” b、输入卡号和密码 c、链表和文件中添加过的卡信息 ③处理 a、执行上机操作时,从卡信息文件中获取卡信息,添加到链表中。 b、以卡号和密码为条件,遍历链表中的卡信息,找到与输入条件相符的卡信息。 c、如果找到,以列表方式显示该卡的上机信息,并更新卡信息。如果未找到,就提示用户。 ④输出

川师汇编实验报告

实验编号: 2 四川师大《汇编语言》实验报告2016 年 9月 21 日 计算机科学学院 2015 级3班实验名称寻址方式实验 姓名:邓小卫学号:2015110309 指导老师:__吴贞东__ 实验成绩: 一.实验目的及要求 熟悉8086各种寻址方式 熟悉DEBUG各命令的使用方法 二.实验内容 3.2根据要求写出相应的汇编语言指令 1.把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器 2.用寄存器BX和SI的基执变址寻址方式把寄存器中的一个字节与AL寄存器的内容相 加,并把结果送到AL寄存器中。 3.用寄存器BX和位移量0B2H寄存器相对寻址方式把寄存器中的一个字和(CX)相加, 并把结果送回寄存器、 4.用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送 回该存储单元中。 5.把数0B5H与(AL)相加,并把结果送回AL中。 3.3 写出把首地址为BLOCK的字数组的第6个送到DX寄存器的指令。要求使用以下几种寻址方式: 1.寄存器间接寻址 2.寄存器相对寻址 3.基址变址寻址 3.4 现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H,(20101)=34H ,(20102)=56H,(20103)=78H,(21200)=2AH,(21203)=4CH,(21202)=B7H,(212030)=65H,试着说明下列各条指令执行完后AX寄存器的内容。 1.MOV AX,1200H 2.MOV AX,BX 3.MOV AX,[1200H] 4.MOV AX[BX] 5.MOV AX,1100[BX] 6.MOV AX,[BX][SI] 7.MOV AX,1100[BX][SI] 三.实验主要流程、基本操作或核心代码、算法片段(该部分如不够填写,请另加附页)3.2根据要求写出相应的汇编语言指令 1.把BX寄存器和DX寄存器的内容相加,结果存入DX MOV DX,5 MOV BX,5 ADD DX,BX

汇编实验报告

实验一 DOS常用命令及8088/86指令使用 实验目的 通过实验掌握下列知识: 1、DOS命令: CD,DIR,DEL,RENAME,COPY。 2、8088指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG 3、DEBUG命令: A,D,E,F,H,R,T,U。 4、BCD码,ASCII码及用十六进制数表示二进制码的方法。 5、8088寄存器: AX,BX,CX,DX,F,IP。 实验类型:验证 内容及步骤 一、DOS常用命令练习 1、开机后,切换到命令提示符窗口下,出现提示符后键入命令DIR, 查看此目录下所有文件。 2、键入命令CD..进入上级目录,再查看此目录下所有文件。 3、将一张3.5寸软盘插到 A驱动器中,用DIR命令查看盘上文件。 4、用命令 COPY https://www.360docs.net/doc/8a11645588.html, BUG 复制一个文件。 5、用命令 RENAME BUG BG 将BUG 文件改为BG。 6、用命令 DEL BG 将文件BG删除。 在操作时要注意提示信息,并按提示操作。 二、DEBUG 命令使用 1、键入 DEBUG 进入 DEBUG 控制状态,显示提示符 '- '。 2、用命令 F100 10F 'A' 将'A'的ASCII码填入内存。 3、用命令 D100 10F 观察内存中的十六进制码及屏幕右边的ASCII字符。 4、用命令 F110 11F 41 重复上二项实验,观察结果并比较。 5、用命令 E100 30 31 32 …… 3F将30H-3FH写入地址为100开始的内存单元中,再用D命令观察结果,看键入的十六进制数是什么字符的ASCII码? 6、用H命令检查下列各组十六进制数加减结果并和你的手算结果比较: (1)34H,22H (2)56H,78H (3)A5,79H (4)1284H,5678H (5)A758H,347FH 7、用R命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF和AF的内容。 8、用R命令将AX,BX内容改写为1050H及23A8H。 三、8088常用指令练习 1、传送指令 用A命令在内存100H处键入下列内容: -A 0100↙ ****:0100 MOV AX,1234↙ ****:0103 MOV BX,5678↙ ****:0106 XCHG AX,BX↙ ****:0108 MOV AH,35↙ ****:010A MOV AL,48↙

综合实验实验报告

综合实验实验报告 : 厦门大学计算机科学系级四班 一.问题描述: 算法的综合应用 问题描述: 有台不同的机器,个不同的工件。每个工件有多道工序,每道工序由指定的机器在固定的时间内完成。一道工序一旦开始处理,就不能中断。每台机器一次只能处理一道工序。一个调度就是决定每台机器上工序的处理顺序,使得机器完成所有工件的时间最短。具体的,该问题就是要求在满足()、()两个约束条件的前提下,确定每台机器上工序的顺序,使加工的时间跨度(从开始加工到全部工件都加工完所需要的时间)达到最小。其中,()表示工件约束条件:对每个工件而言,机器对它的加工路线是事先确定的;()表示机器约束条件:对每台机器而言,一次只能对一道工序进行加工。 要求: 利用所学的算法求解该问题,任给一个输入实例,能输出最短时间以及每台机器上工序的加工顺序。 能设计出一个用户界面。 二.算法思路: 原先考虑过用回溯法进行解体,解空间树是所有工件的所有工序的一棵排列树,但这样如果没有好的剪枝函数是不可能实现的,因为这样实现的话时间复杂度将是(^),其中为机器数,为工件数,题目能用的剪枝函数的设计是每个工件的加工次序是有要求的,个人预测需要用到线性规划的内容,最后没有如此实现。 本程序使用贪心算法实现,程序所有的工件所有的工序保存在一个二维数组中,并且维护一个指针,该指针每次走动一个工序时间,这样的一次走动将产生个工序需要加工,其中为工件数目,将这个工件放到相应的个机器上,在个机器按照加工时间递增排序,之所以选择递增排序,是想让每个工序尽可能快的通过他所需要的机器,即可以让该机器上的工序可以更快的加工,也可以让他之后的工序可能更快的在其他机器上进行加工,当然这样的设计只是直观上的说明,并不能得到最优解。 程序中维护的数据结构如下图所示,共有两个,一个用来保存所有工件的所有工序,另一个用来表示机器加工工序。 在图一中共有六个工件~以及每个工件有个工序,图上方的箭头表示移动的指针,每个移动一个工序,由于图一中的数组元素结构体设计如下: { 机器节点定义 ; 当前的加工的最后时间 *; 维护一个工件链表 }; 因此对于每个可以加工的工序,可以直接链入图二中的链表中不需要另外申请空间。

汇编实验报告

汇编语言程序设计 实验报告 学号:100511530 班级:电气信息类1005 姓名:陆淑琴 指导老师:李诗高

实验一、汇编语言上机的基本过程及环境 【实验目的】 (1)熟悉汇编语言的编辑、汇编、连接及调试的全过程,重点掌握使用DEBUG调试程序的方法。 (2)了解汇编语言的程序结构。 【实验内容】 (1)在数据段中定义两个数(数据自拟,包含有正数和负数),要求编写程序分别计算出这两个数的和、差、积、商,并用Debug的相关命令查询计算结果(包括对CF,OF,SF,ZF的影响)。 (2)首先对AX,BX,CX寄存器赋初值(数据自拟),再将AX寄存器的中间八位,BX的低四位和CX的高四位拼接成一个新的字,并把结果存入偏移地址为0000H的存储单元。其中BX的低四位作为结果字的高四位,CX的高四位作为结果字的低四位。并用Debug的相关命令查询内存单元的结果字。 源代码: DA TA SEGMENT val1 DW 1000h val2 DW 2000h maxv DW ? DA TA ENDS STACK SEGMENT STACK 'STACK'

DB 100H DUP(?) STACK ENDS CODE SEGMENT 'CODE' ASSUME CS:CODE, DS:DATA,SS:STACK .386 MAIN: MOV AX, DATA; MOV DS, AX PUSH val1 PUSH val2 CALL MAX ; POP maxv ;栈顶返回值出栈 MOV AX, 4c00H INT 21H MAX PROC PUSH BP ;执行该指令前堆栈情况 MOV BP, SP ;执行后堆栈情况 MOV AX, [BP+4] CMP AX, [BP+6] JA EXIT MOV AX, [BP+6] EXIT: MOV [BP+6], AX ;用栈顶返回值 POP BP RET 2 ;执行后堆栈情况 MAX ENDP CODE ENDS END MAIN 【实验步骤】 (1)用编辑软件(记事本、UltraEdit等)编辑一个扩展文件名为ASM的汇编语言源程序。 (2)用汇编程序MASM汇编上述的汇编语言源程序,形成目标代码文件。(扩展名为OBJ) (3)用连接程序LINK连接目标代码文件,形成可执行文件。(扩展名为EXE)(4)用DEBUG32调试可执行文件,观察执行结果,以验证其正确性。

数学实验综合实验报告

一、实验目的: 1、初步认识迭代,体会迭代思想的重要性。 2、通过在mathematica 环境下编写程序,利用迭代的方法求解方程的根、线性方程组的解、非线性方程组的解。 3、了解分形的的基本特性及利用mathematica 编程生成分形图形的基本方法, 在欣赏由mathematica 生成的美丽的分形图案的同时对分形几何这门学科有一个直观的了解。从哲理的高度理解这门学科诞生的必然性,激发读者探寻科学真理的兴趣。 4、从一个简单的二次函数的迭代出发,利用mathematica 认识混沌现象及其所 蕴涵的规律。 5、.进一步熟悉Mathematic 软件的使用,复习总结Mathem atic 在数学作图中的应用,为便于研究数学图像问题提供方便,使我们从一个新的视角去理解数学问题以及问题的实际意义。 6、在学习和运用迭代法求解过程中,体会各种迭代方法在解决问题的收敛速度上的异同点。 二、实验的环境: 学校机房,mathematica4环境 三、实验的基本理论和方法: 1、迭代(一)—方程求解 函数的迭代法思想: 给定实数域上光滑的实值函数)(x f 以及初值0x 定义数列 1()n n x f x +=,Λ,3,2,1,0=n , (1) n x ,Λ,3,2,1,0=n ,称为)(x f 的一个迭代序列。 (1)方程求根 给定迭代函数)(x f 以及初值0x 利用(1)迭代得到数列n x ,Λ,3,2,1,0=n .如果数列收敛到某个*x ,则有 )(**x f x =. (2)

即*x 是方程)(x f x =的解。由此启发我们用如下的方法求方程0)(=x g 的近似解。 将方程0)(=x g 改写为等价的方程 )(x f x =, (3) 然后选取一初值利用(1)做迭代。迭代数列n x 收敛的极限就是方程0)(=x g 的解。 为了使得迭代序列收敛并尽快收敛到方程0)(=x g 的某一解的条件是迭代函数)(x f 在解的附近的导数将的绝对值尽量小,因此迭代方程修订成 x x f x h x )1()()(λλ-+== (4) 选取λ使得|)(|x h '在解的附近尽量小. 为此, 我们可以令 ,01)()(=-+'='λλx f x h 得 ) (11 x f '-= λ. 于是 1 )()()(-'-- =x f x x f x x h . 特别地,如果取x x g x f +=)()(, 则可得到迭代公式 .,1,0,) () (1Λ='- =+n x g x g x x n n n n (5) (2)线性方程组的数值解的迭代求解理论与矩阵理论 给定一个n 元线性方程组 ??? ??=++=++, ,1 111111n n nn n n n b x a x a b x a x a ΛΛΛΛΛΛΛΛΛΛΛ (6) 或写成矩阵的形式

汇编实验报告

XI`AN TECHNOLOGICAL UNIVERSITY 实验报告

西安工业大学实验报告 一、实验目的 1、学习和掌握利用TD-TIPE连机软件调试汇编程序。 2、了解可编程并行接口芯片8255的内部结构、工作方式、初始化编程及应用。 二、实验原理 基本输入输出实验。编写程序,使8255的A口为输出,B口为输入,完成拨动开关到数据灯的数据传输。要求只要开关拨动,数据灯的显示就改变。 三、实验步骤、数据记录及处理 1.步骤: (1)硬件测试; (2)获得端口地址; (3)写出源程序, 2.源代码 (1)程序一 SSTACK SEGMENT STACK DW 32 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE

START: MOV DX, 0646H MOV AL, 90H OUT DX, AL AA1: MOV DX, 0640H IN AL, DX CALL DELAY MOV DX, 0642H OUT DX, AL JMP AA1 DELAY: PUSH CX MOV CX, 0F00H AA2: PUSH AX POP AX LOOP AA2 POP CX RET CODE ENDS END START (2)程序二 SSTACK SEGMENT STACK DW 32 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE START: MOV DX, 0646H MOV AL, 90H OUT DX, AL AA1: MOV DX, 0640H IN AL, DX

汇编程序调试实验报告

微机原理与接口技术 作 业 班级: 目录 一、........................................................... 实验目的:2 二、............................................................. 实验环境2 三、............................................................. 实验过程3 (一)................................................. 基础知识储备3

(二)............................................. 汇编语言程序设计3

(三)汇编程序调试 (3) 四、............................................................. 调试实例4 (一)....................................................... 实例一4 (二)....................................................... 实例二6 (三)....................................................... 实例三9 (四)....................................................... 实例四12五、............................................................. 实验总结15 (一)..................................................... 实验收获15 (二)..................................................... 实验感悟16 一、实验目的: 汇编语言是一种用助记符表示的程序设计语言。用汇编语言编写的源程序生成的目标 代码短,占内存少,执行速度快,适合于系统软件、实时控制软件、I/O接口驱动等程序设计。通过本次实验,熟练掌握汇编程序的调试,深入了解MAS汇编语言及其程序设计方法。 、实验环境 EDIT编辑器、MASME编程序、LINK连接程序、TD调试程序

《程序技术基础》实验报告

《程序技术基础》课程实验指导课程代码:070050 开课学期:4 开课专业:信管类 总学时/实验学时:64/32 总学分/实验学分:4/2 一、课程简介 数据结构是计算机各专业的重要技术基础课。在计算机科学中,数据结构不仅是一般程序设计的基础,而且是编译原理、操作系统、数据库系统及其它系统程序和大型应用程序开发的重要基础。数据结构课程主要讨论各种主要数据结构的特点、计算机内的表示方法、处理数据的算法以及对算法性能的分析。通过对本课程的系统学习使学生掌握各种数据结构的特点、存储表示、运算的原理和方法,学会从问题入手,分析研究计算机加工的数据结构的特性,以便为应用所涉及的数据选择适当的逻辑结构、存储机构及其相应的操作算法,并初步掌握时间和空间分析技术。另一方面,本课程的学习过程也是进行复杂程序设计的训练过程,通过对本课程算法设计和上机实践的训练,还应培养学生的数据抽象能力和程序设计的能力。 二、实验的地位、作用和目的 数据结构是一门实践性较强的基础课程,本课程实验主要是着眼于原理和应用的结合,通过实验,一方面能使学生学会把书上学到的知识用于解决实际问题,加强培养学生如何根据计算机所处理对象的特点来组织数据存储和编写性能好的操作算法的能力,为以后相关课程的学习和大型软件的开发打下扎实的基础。另一方面使书上的知识变活,起到深化理解和灵活掌握教学内容的目的。

三、报告与考核 每个实验都要求学生根据上机内容写出实验报告,报告要求包括以下七个方面的内容: 1.实验目的; 2.实验内容; 3.实验要求; 4.算法设计; 5.详细程序清单; 6.程序运行结果; 7.实验心得体会。

汇编语言程序设计实验报告三(子程序设计实验)

汇编语言程序设计实验报告三(子程序设计实验) 一、实验目的 1、掌握主程序与子程序之间的调用关系及其调用方法。 2、掌握子程序调用过程中近程调用与远程调用的区别。 3、熟练掌握码型变换的程序。 二、实验内容 1、从键盘输入二位非压缩BCD数,存入AX寄存器中,编程实现将其转换为二进制 数,并在屏幕上显示。要求码型转换程序用远程子程序编写,字符显示用近程子程序编写。数据可循环输入,遇‘00’结束。 三、实验准备 1、预习子程序设计的基本方法,根据实验内容要求编写出实验用程序。 2、熟悉键盘输入和字符显示的程序段的编制。 四、实验步骤 1、编辑、汇编源程序,生成可执行文件。 2、执行程序,检查输入、输出结果,看是否正确。如不正确,用DEBUG检查,修改 源程序,再汇编、运行,直到程序正确为止。 3、用DEBUG的T命令或P命令跟踪程序的执行,观察在远程和近程调用过程中,堆 栈的变化情况。 五、实验报告要求 1、分析近程调用和远程调用的主要区别。用DEBUG命令观察执行过程有何不同。 2、分析实验结果及所遇到的问题的解决方法。 主程序流程图 转换子程序TRAN流程图

七、程序清单 STA SEGMENT STACK ’STACK’ DB 100 DUP(0) STA ENDS GSAG SEGMENT PARA ‘CODE’ ASSUME CS:CSAG MAIN PROC FAR STRA T: PUSH DS SUB AX,AX PUSH AX REV: MOV AH,1 INT 21H MOV BL,AL INT 21H MOV AH,AL MOV AL,BL CMP AX,3030H JE ENDTRAN CALL NEAR PTR TRAN CALL FAR PTR CON MOV AL,0DH CALL FAR PTR DISP MOV AL,0AH CALL FAR PTR DISP MOV AL,0AH CALL FAR PTR DISP JMP REV ENDTRAN: RET MAIN ENDP TRAN PROC NEAR AND AX,0F0FH MOV BL,AL MOV BL,AL MOV CL,3 SHL AL,CL MOV CL,1 SHL BL,CL ADD AL,BL ADD AL,AH RET TRAN ENDP CSAG ENDS CSBG SEGMENT PARA’CODE’ ASSUME CS:CSBG

程序设计综合实验报告册

西南交通大学程序设计综合实验 实验地点: 实验学期: 学生班级: 学生学号: 学生姓名: 任课教师:龚勋 信息科学与技术学院 2012年4月

实验一:ATM机用户操作界面、业务逻辑编写 ●实验目的及内容 1、根据ATM的工作流程编写用户界面,掌握文本用户菜单的编写方法; 2、根据ATM的工作流程编写业务罗杰,掌握搭建一个完整的应用系统的方法及软件编程思想。 ●实验要求 1、除提示用户输入的数字外,界面上不能响应、出现任何其他用户输入; 2、每个菜单界面独立显示,不要出现多组菜单重叠显示的现象; 3、每个业务逻辑可以多次执行,直到用户选择退出业务。 ●实验步骤及核心代码 void main() { int bExit=0; char in; //控制语言的选择 while(!bExit) { MainMenu(); in=getch(); system("cls"); switch(in) { .....语言选择} } } void MainMenu() {......} void LanguageMenu(int t) {

int cExit=0; char in; while(!cExit) { if(t==1) { ...... //显示中文功能选择菜单 in=getch(); system("cls"); switch(in) { 中文功能函数的选择} } else { 同上,只需将中文函数改为英文函数} } } //中文的查询函数 void Query1() { printf("======================\n") printf(“此账户有%.2f元\n",sum); //对sum已初始化system("pause"); system("cls"); } //中文的存钱函数 void Deposit1(float *p) { float x; printf("================================\n"); printf(" 输入您要存的数目:"); scanf("%f",&x); *p+=x; system("pause"); system("cls"); } //中文的取钱函数 void WithDraw1(float *p) { float y; int a=1; printf("====================================\n"); printf("输入您要取的数目: "); while(a) { scanf("%f",&y); if(y>sum)

汇编实验报告一

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

一、实验目的与意义 1、掌握汇编语言程序设计的基本方法和技能; 2、熟练掌握使用全屏幕编辑程序EDIT编辑汇编语言源程序; 3、熟练掌握宏汇编程序MASM的使用; 4、熟练掌握连接程序LINK的使用; 5、学习数据传送及算数和逻辑运算指令的用法; 6、掌握分支程序的结构; 7、掌握分支程序的设计、调试方法; 8、熟悉在PC机上建立、汇编、连接、调试和运行8086汇编语言程序; 二、实验环境 操作系统:Windows XP 调试软件:Edit Plus 3,MASM 5.0 上机地点:综合楼311 三、实验的预习内容 (1)熟悉上机练习过程和伪指令实验 实验预习内容:在实验前,充分熟悉Edit Plus 3的环境以及配置方法,熟悉各种debug 的常用指令:U、D、T、P、G、A、E及R命令的使用和含义,了解数据传送指令和算数以及逻辑运算指令的用法,在理论上了解数据的存储情况以及DD,DB,DW伪指令的用法和含义。 实验思路:按照书上的程序打入代码,进行汇编、连接和运行程序查看此时程序的运行情况,之后进入debug界面,分别使用U、D、T、P、G、A、E及R命令等常用指令,可查看此时的程序的执行状况以及此时寄存器的存储情况以及对于内存的使用情况。 程序一流程图:

程序二流程图: (2)顺序结构程序设计实验 实验预习内容:在实验前了解十进制,十六进制和ASCII 码之间的转换,了解如何从键盘中输入字符和回车换行,以及在屏幕中显示的汇编指令。 实验思路:从键盘中输入要计算的数字,将其进行平方运算,利用计算得到数字,了解十进制数字、十六进制数字与其对应ASCII 码的转换方法,将数字显示到屏幕上。 程序流程图: (3)分支程序设计实验 实验预习内容:在实验前了解分支结构的特点,明白跳转指令和程序转移指令的使用

实验报告总结(精选8篇)

《实验报告总结》 实验报告总结(一): 一个长学期的电路原理,让我学到了很多东西,从最开始的什么都不懂,到此刻的略懂一二。 在学习知识上面,开始的时候完全是老师讲什么就做什么,感觉速度还是比较快的,跟理论也没什么差距。但是之后就觉得越来越麻烦了。从最开始的误差分析,实验报告写了很多,但是真正掌握的确不多,到最后的回转器,负阻,感觉都是理论没有很好的跟上实践,很多状况下是在实验出现象以后在去想理论。在实验这门课中给我最大的感受就是,必须要先弄清楚原理,在做实验,这样又快又好。 在养成习惯方面,最开始的时候我做实验都是没有什么条理,想到哪里就做到哪里。比如说测量三相电,有很多种状况,有中线,无中线,三角形接线法还是Y形接线法,在这个实验中,如果选取恰当的顺序就能够减少很多接线,做实验就应要有良好的习惯,就应在做实验之前想好这个实验要求什么,有几个步骤,就应怎样安排才最合理,其实这也映射到做事情,不管做什么事情,就应都要想想目的和过程,这样才能高效的完成。电原实验开始的几周上课时间不是很固定,实验报告也累计了很多,第一次感觉有那么多实验报告要写,在交实验报告的前一天很多同学都通宵了的,这说明我们都没有合理的安排好自己的时间,我就应从这件事情中吸取教训,合理安排自己的时间,完成就应完成的学习任务。这学期做的一些实验都需要严谨的态度。在负阻的实验中,我和同组的同学连了两三次才把负阻链接好,又浪费时间,又没有效果,在这个实验中,有很多线,很容易插错,所以要个性仔细。 在最后的综合实验中,我更是受益匪浅。完整的做出了一个红外测量角度的仪器,虽然不是个性准确。我和我组员分工合作,各自完成自己的模块。我负责的是单片机,和数码显示电路。这两块都是比较简单的,但是数码显示个性需要细致,由于我自己是一个粗心的人,所以数码管我检查了很多遍,做了很多无用功。 总结:电路原理实验最后给我留下的是:严谨的学习态度。做什么事情都要认真,争取一次性做好,人生没有太多时间去浪费。 实验报告总结(二): 在分子生物学实验室为期两个月的实习使我受益匪浅,我不仅仅学习到了专业知识,更重要的是收获了经验与体会,这些使我一生受用不尽,记下来与大家共勉: 1.手脚勤快,热心帮忙他人。初来匝道,不管是不是自己的份内之事,都就应用心去完成,也许自己累点,但你会收获很多,无论是知识与经验还是别人的称赞与认可。 2.多学多问,学会他人技能。学问学问,无问不成学。知识和经验的收获能够说与勤学好问是成正比的,要记住知识总是垂青那些善于提问的人。 3.善于思考,真正消化知识。有知到识,永远不是那么简单的事,当你真正学会去思考时,他人的知识才能变成你自己的东西。 4.前人铺路,后人修路。墨守陈规永远不会有新的建树,前人的道路固然重要,但是学会另辟蹊径更为重要。

相关文档
最新文档