文档库 最新最全的文档下载
当前位置:文档库 › 汇编第七次上机实验

汇编第七次上机实验

汇编第七次上机实验
汇编第七次上机实验

汇编第七次上机实验

班级:姓名:学号:

实验时间:2012年12月7日

题目:

1.编写一段程序,使汇编程序根据SIGN的值分别产生不同的指令。如果SIGN=0,则用字节变量DIVD中的无符号数除以字节变量SCALE;如果SIGN=1,则用字节变量DIVD中的带符号数除以字节变量SCALE,结果都存放在字节变量RESULT中。

2.试编写宏定义SUMMING,要求求出双字数组中所有元素之和,并把结果保存下来。该宏定义的哑元应为数组首址ARRAY,数组长度COUNT和结果存放单元RESULT。

一、设计过程

1.第一题比较简单,主要是根据SIGN的值选择汇编IDIV或DIV指令。由于除法指令目的操作数最少位数为16,所以要将DIVD在AX中扩展为16位。根据分析,写出代码,完整代码见附录

2.第二题应该在数据段中定义一个双字数组、存储数组大小的字单元和存储数组之和的双字单元。对于SUMMING宏定义,是一个循环过程,由于是双字加法,必须用ADD和ADC 指令将AX中低位字和DX中高位字相加。其流程如下图1所示。完整代码见附录。

图1 第二题流程图

二、程序调试

1.第一题

建立源程序文件,在命令提示符下对源程序进行汇编。对出现的语法错误进行修改,直到汇编通过,如图2所示。然后进行连接,提示无堆栈段警告如图3,可以忽略。这时已经

生成了可执行文件。

图2 汇编通过

图3 连接结果

程序的数据段如下图4所示。当SIGN=0时,在调试模式下,使程序停止在返回DOS之前,这时用d命令查看存储器中的数据段如图5。由于-100的补码为9C,看作无符号数为156,其与50整除,结果应为3,显然图5中的结果(第3个字节)与理论相符。当SIGN=1时,重新汇编连接,在调试模式下查看结果如图6,得到结果为-2与理论相符。综上,程序一满足题目要求。

图4 第一题数据段

图5 SIGN=0时的结果

图6 SIGN=1时的结果

2.第二题

建立源程序文件,在命令提示符下对源程序进行汇编。对出现的语法错误进行修改,直到汇编通过,如图7所示。然后进行连接,提示无堆栈段警告如图8,可以忽略。这时已经生成了可执行文件。

图7 汇编通过

图8 连接结果

程序的数据段如图9所示。在调试模式下,使程序停止在返回DOS之前,用d命令查看存储器中的数据段,如图10所示。由于数据段包含10个双字单元(原始数据)、1个字单元(数组中数据个数)和1个双字单元(数据之和),所以第3行第11个字节开始的4个字节为结果,图10中显示为55与理论相符。所以程序二满足题目要求。

图9 第二题数据段

图10 第二题调试结果

实验总结:

题目一主要考查条件汇编,根据SIGN的值选择汇编不同的代码,分别执行无符号数和有符号数的除法。题目二考查带哑元的宏定义过程,在宏定义SUMMING中完成对双字数组中的所有元素求和并保存下来的要求。在宏展开时要将数组首地址、数组长度和结果存放单元地址传递给哑元。

通过这次实验,我初步掌握了条件汇编和带参数的宏汇编过程的设计方法,对宏汇编的知识有了更深的认识。同时,我熟悉了除法和加法等指令,对改正程序的语法错误也更加熟练了。只有通过上机才能对所学的理论有更深的认识,所以我以后一定会多加练习,在练习中收获更多的编程经验。

附录:完整代码

汇编实验报告(详细版)

计算机组成与汇编语言(实验报告) 内容: 实验一、六、七、八 院系专业:计算机学院计算机科学与技术 姓名: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) 实验一利用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执行,观察执行结果。 (设置存储器的值)

2020年汇编实验报告

实验三算术运算与代码转换程序设计 一、实验目的 1)掌握算术运算程序的设计方法。 2)掌握代码转换程序的设计方法。 3)进一步掌握各种程序结构。 4)熟练掌握和使用用DEBUG调试程序。 二、实验内容 1)编制两个多字节整数加法和减法程序,并将结果按十六进制形式显示在屏幕上。 2)编制程序实现二进制定点数与十进制数的ASCII码串之间转换,并将结果显示在屏幕上。 3)编写程序计算从键盘输入两个不超过四位的十进制数的和、差、积、商,并以十进制形式输出。 4)写程序把从键盘输入的四位十六进制数转换为压缩的BCD码,并显示输出。 5)编写一通用过程用来将十进制数(从键盘输入)转换为P(从键盘输入)进制数。 三、实验设备 PC机一台 四、实验步骤 1) 按程序流程图编制实验程序。 2) 输入源程序。 3) 汇编、连接程序,执行程序,检查结果。

4) 程序的执行可用DEBUG的G命令,也可用T命令单步跟踪执行。 5) 用D命令检查执行结果。 六、源程序 实验一 DA TA SEGMENT NUM1 DB 22H,33H,44H,55H,66H,77H NUM1L DB 6H NUM2 DB 22H,22H,22H,22H NUM2L DB 4H OUTCOME1 DB 10H DUP(0) OUTCOME2 DB 10H DUP(0) N DB 0H DA TA ENDS STACK1 SEGMENT PARA STACK DW 20H DUP(0) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA,SS:STACK1 START:MOV AX,DATA MOV DS,AX MOV CH,0 MOV SI,OFFSET NUM1 MOV DI,OFFSET NUM2 MOV AH,NUM1L MOV AL,NUM2L CMP AH,AL JAE CHA XCHG SI,DI XCHG AH,AL CHA:SUB AH,AL MOV CL,AL CLC MOV BX,OFFSET OUTCOME1 LOP1:MOV AL,[DI] PUSH CX MOV CL,[SI] ADC CL,AL MOV [BX],CL INC BX INC SI INC DI POP CX

实验一基础汇编语言程序设计

实验一基础汇编语言程序设计 实验目的 1.学习和了解TEC-XP十六位机监控命令的用法; 2.学习和了解TEC-XP十六位机的指令系统; 3.学习简单的TEC-XP十六位机汇编程序设计。 实验内容 1.使用监控程序的R命令显示/修改寄存器内容、D命令显示存储器内容、E命令修改存储器内容; 2.使用A命令写一小段汇编程序,U命令反汇编刚输入的程序,用G命令连续运行该程序,用T、P命令单步运行并观察程序单步执行情况。 3.学习联机使用TEC-XP教学试验系统和仿真终端软件。 实验要求 在使用该教学机之前,应先熟悉教学机的各个组成部分及其使用方法。 实验步骤 1.关闭电源,将大板上的COMl口与PC机的串口相连; 2.接通电源,在PC机上运行PCEC.EXE文件,设置所用PC机的串口为“l”或“2”,其它的设置一般不用改动,直接回车即可; 3.置控制开关为001110(连续、内存读指令、组合逻辑、16位、联机),开关拨向上方表示“1”,拨向下方表示“0”,“X”表示任意。其它实验相同; 4.按一下“RESET”按键,再按一下“START”’按键,主机上显示: 5.用R命令查看寄存器内容或修改寄存器的内容 1.用R命令查看寄存器或修改寄存器内容 1)在命令行提示符状态下输入: R↙;显示寄存器的内容 注:寄存器的内容在运行程序或执行命令后会发生变化。

2)在命令行提示符状态下输入: R R0↙;修改寄存器R0的内容,被修改的寄存器与所赋值之间可以无空格, 也可有—个或数个空格 主机显示: 寄存器原值:xxxx 在后面输入新的值0036 再用R命令显示寄存器内容,则R0的内容变为0036。 2.用D命令显示存储器内容 在命令行提示符状态下输入: D 2000↙ 会显示从2000H地址开始的连续128个字的内容; 连续使用不带参数的D命令,起始地址会自动加128(即80H)。

计算机汇编上机实验报告

实验报告 、实验编号: 二、实验题目:顺序程序设计 三、实验类型:必做 四、实验目的: 1.了解汇编语言的程序结构。 2.理解汇编语言中由源程序文件到可执行文件的过程。 五、实验内容和步骤: 1、实验内容: 编程实现:当 X=5 时,求 Y=3X4+5X3+6X2+4X+2. 2、实验步骤: (1)首先对al.asm进行汇编连接生成 a1.exe文件。 (2)进行DEBUG程序并装入要调试的程序 a1.exe 女口: DEBUG a1.exe ;进入 DEBUG 并装配 a1.exe (3)反汇编,确定每条指令的地址。 -U ;从当前地址进行反汇编 —U200 ;从CS: 200处开始反汇编 反汇编可以确定断点地址,如:把断点地址设置在0120H处,则可以打入以下命令 (4)G命令来设置断点。 —G120 此时程序在0120H处停下,并显示出所有寄存器以及各标志位的当前值,在最后一行还给出下一条将要执行的指令的地址、机器语言和汇编语言,程序员可以从显示的内容来以解程序运行是否正确。 (5)观察数据段的内容,即观察内存的内容 —D DS: 0000 ;从数据段的0单元开始显示128个字节。 —D DS: 0000 0001;从数据段的0单元、1单元显示2个字节。 (6)退出DEBUG命令 —Q 六、实验结果: 145A:001E 83C002 ADD AX,+02 -u 145A:0021 A30100 MOV [0001],AX 145A:0024 B44C MOV AH,4C 145A:0026 CD21 INT 21 145A:0028 7509 JNZ 0033 145A:002A E83F26 CALL 266C 145A:002D 8946E8 MOV [BP-18],AX 145A:0030 E80D97 CALL 9740 145A:0033 F6065C3601 TEST BYTE PTR [365C],01 145A:0038 7405 JZ 003F

汇编实验三:分类统计字符个数

一、实验目的 学习用汇编语言编写设计分支循环程序 二、实验要求 程序接收用户键入的一行字符(字符个数不超过80个,该字符串用回车符结束),并按字母、数字及其它字符分类计数,然后将结果存入以letter、digit和other为名的存储单元中。 三、实验提示 (1)程序可0AH功能调用把键入字符直接送到缓冲区中,然后再逐个取出分类计数。也可01H功能调用在接收字符后先分类计数再存入缓冲区中。 (2)程序需要进入debug运行并查看计数结果。 四、实验程序 datarea segment string db 80 db ? db 80 dup(?);定义字符串string,长度为80 letter db 0 ;定义存储单元letter digit db 0 ;定义存储单元digit other db 0 ;定义存储单元other datarea ends case segment main proc far assume cs:case, ds:datarea start: mov ax, datarea mov ds, ax lea dx, string mov ah, 0ah int 21h lea di, string + 2 ;输入一行字符,依次将每个字符存入字符串string中 sub ch,ch mov cl, string + 1 add dx, 2 check: ;将每个字符进行分类 mov al, [di] cmp al, 0dh

je exit ;字符串以回车符结束,若进行分类的字符是回车符,则跳转至exit,退出程序 cmp al, 30h ;与ASCII码中的0,即30h比较 jb o ;小于30h的,为其他类型字符,则跳转至o,在other块进行操作 cmp al, 39h ;与ASCII码中的9,即39h比较 jna d ;不大于39h的,结合不小于30h的,则跳转至d,在digit块进行操作 ja loro ;剩下的为字母或者其他类型 loro: cmp al, 41h ;与ASCII码中的A,即41h比较 jb o ;小于41h的,结合大于39h的,则跳转至o,在other块进行操作 cmp al, 7ah ;与ASCII码中的z,即7ah比较 ja o ;大于7ah的,则条钻至o,在other块进行操作 cmp al, 5ah ;与ASCII码中的Z,即5ah比较 jna l ;不大于5ah的,结合大于41h的,则跳转至l,在letter块进行操作 cmp al, 61h ;与ASCII码中的a,即61h比较 jnb l ;不小于61h的,结合不大于7ah的,则跳转至l,在letter块进行操作 jb o ;小于61h的,结合大于5ah的,则跳转至o,在other块进行操作 l: inc letter ;属于letter类型,则letter增1 inc di jmp check ;返回继续比较下一个字符 d: inc digit ;属于digit类型,则digit增1 inc di jmp check o: inc other ;属于other类型,则other增1 inc di jmp check exit: ;输出letter,digit,other类型的计数结果 mov ah, 02 mov dl, 0dh int 21h mov dl, 0ah int 21h mov dl, 4ch int 21h mov dl, 3ah int 21h mov dl, 0 int 21h xor ax, ax

汇编实验报告..

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

实验一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.wendangku.net/doc/6e8268720.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 – 注意:

实验一熟悉汇编语言上机环境.pdf

实验一熟悉汇编语言上机环境 一、实验目的 熟悉在微机上建立、汇编、连接、调试和运行汇编语言程序的全过程。 二、实验要求 1.仔细阅读本实验教程的第一章和第二章; 2.学会使用EDIT建立汇编语言源程序文件; 3.学会使用MASM将汇编语言源程序编译为目标程序的两种方法; 4.学会使用LINK将目标程序连接为可执行程序的两种方法; 5.学会使用DEBUG中的U、D、G命令。 三、实验举例 【例3.1】 编辑、汇编、连接、执行下列程序,观察实验结果。 【程序功能】该程序的功能是利用BIOS功能调用,从键盘上接收若干个字符,并将它们的ASCII码与键盘扫描码以十六进制的形式显示出来,当按下+键时,停止程序的执行。 【步骤一】 用EDIT编辑源程序,并以EXAM1.ASM为文件名存入磁盘。 程序清单如下: SSEG SEGMENT STACK STK DB 80H DUP(?) SSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,SS:SSEG HTOA PROC NEAR ;该子程序的功能是将AL内容转换为ASCII码 AND AL,0FH CMP AL,10 JC HTOA1 ADD AL,07 HTOA1: ADD AL,30H RET HTOA ENDP BHTOA PROC NEAR ;该子程序的功能是将AL内容转换为ASCII码 PUSH CX MOV CH,AL MOV CL,04 SHR AL,CL CALL HTOA MOV AH,AL MOV AL,CH CALL HTOA POP CX RET BHTOA ENDP DISASC PROCN EAR ;该子程序的功能是在光标处显示AL中的字符 PUSH AX

计算机汇编上机实验报告

实验报告 1 二、实验题目:顺序程序设计 三、实验类型:必做 四、实验目的: 1.了解汇编语言的程序结构。 2.理解汇编语言中由源程序文件到可执行文件的过程。 五、实验内容和步骤: 1、实验内容: 编程实现:当X=5时,求Y=3X4+5X3+6X2+4X+2. 2、实验步骤: (1)首先对a1.asm进行汇编连接生成a1.exe文件。 (2)进行DEBUG程序并装入要调试的程序a1.exe。 如:DEBUG a1.exe;进入DEBUG并装配a1.exe (3)反汇编,确定每条指令的地址。 -U ;从当前地址进行反汇编 -U200;从CS:200处开始反汇编 反汇编可以确定断点地址,如:把断点地址设置在0120H处,则可以打入以下命令 (4)G命令来设置断点。 -G120 此时程序在0120H处停下,并显示出所有寄存器以及各标志位的当前值,在最后一行还给出下一条将要执行的指令的地址、机器语言和汇编语言,程序员可以从显示的内容来以解程序运行是否正确。 (5)观察数据段的内容,即观察内存的内容 -D DS:0000;从数据段的0单元开始显示128个字节。 -D DS:00000001;从数据段的0单元、1单元显示2个字节。 (6)退出DEBUG命令 -Q 六、实验结果: 145A:001E 83C002 ADD AX,+02 -u 145A:0021 A30100 MOV [0001],AX 145A:0024 B44C MOV AH,4C 145A:0026 CD21 INT 21 145A:0028 7509 JNZ 0033 145A:002A E83F26 CALL 266C 145A:002D 8946E8 MOV [BP-18],AX 145A:0030 E80D97 CALL 9740 145A:0033 F6065C3601 TEST BYTE PTR [365C],01 145A:0038 7405 JZ 003F

汇编语言上机实验汇总

汇编语言程序设计的实验环境及实验步骤 知识提要: 1、汇编语言源程序编写好以后, (1) 编辑源程序(生成 .ASM (2) 汇编源程序(.ASM → .OBJ (3) 连接目标程序(.OBJ → .EXE (4) 调试可执行程序(使用调试程序Debug 调试生成的.EXE 文件) (5) 运行程序输出结果。 2、 Windows 环境下的汇编语言集成编程环境的使用 实验一 汇编语言上机实验(一) 一、实验要求和目的 1、掌握汇编语言程序设计的基本方法和技能; 2、熟练掌握使用全屏幕编辑程序EDIT 编辑汇编语言源程序; 3、熟练掌握宏汇编程序MASM 的使用; 4、熟练掌握连接程序LINK 的使用。 二、软硬件环境 1、硬件环境:微机CPU 486以上,500MB 以上硬盘,32M 以上内存; 2、软件环境:装有MASM 、DEBUG 、LINK 等应用程序。 三、实验内容与步骤 1、实验内容 编写程序,判断一个年份是否是闰年。 2、实验步骤 汇编语言程序设计上机过程如图1.1所示。 图1.1 汇编语言程序上机过程 (一)用编辑程序EDIT 建立汇编语言源程序文件(ASM 文件)

建议源程序存放的目录名为MASM中,MASM子目录在D盘的根目录下。 可以在DOS模式下用编辑程序EDIT.EXE建立汇编语言源程序文件ABC.ASM,注意文件名的扩展名必须是.ASM。也可以在Windows 2000或者在Windows XP环境下鼠标单击“开始”→“运行”,在“运行”中输入“CMD”进入DOS模式,运行EDIT软件,例如:C:\documents and settings\administrator>cd\ *进入C盘根目录 C:\>d: *进入D盘 D:\>md masm *在D盘创建MASM文件夹D:\>cd masm *进入MASM文件夹 D:\masm>edit run.asm *建立run源文件 进入EDIT的程序编辑画面时,编写程序,判断一个年份是否是闰年的汇编语言源程序,输入汇编语言源程序如下: DATA SEGMENT INFON DB 0DH,0AH,'Please input a year: $' Y DB 0DH,0AH,'This is a leap year! $' N DB 0DH,0AH,'This is not a leap year! $' W DW 0 BUF DB 8 DB ? DB 8 DUP(?) DATA ENDS STACK SEGMENT 'stack' DB 200 DUP(0) STACK ENDS CODE SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODE START: MOV AX,DATA MOV DS,AX LEA DX,INFON MOV AH,9 INT 21H LEA DX,BUF MOV AH,10 INT 21H MOV CL, [BUF+1] LEA DI,BUF+2 CALL DATACATE CALL IFYEARS JC A1 LEA DX,N MOV AH,9 INT 21H JMP EXIT A1: LEA DX,Y MOV AH,9 INT 21H EXIT: MOV AH,4CH INT 21H DATACATE PROC NEAR

重庆大学汇编实验报告3

《汇编语言程序设计》实验报告 年级、专业、班级姓名 实验题目实验3:汇编程序的循环结构的使用 实验时间2013年4月15 实验地点DS1421 实验成绩实验性质□验证性 设计性□综合性教师评价: □算法/实验过程正确;□源程序/实验内容提交□程序结构/实验步骤合理;□实验结果正确;□语法、语义正确;□报告规范; 其他: 评价教师签名: 一、实验目的 通过一个排序算法,来熟悉和掌握利用汇编语言实现循环处理能力的程序。 二、实验项目内容 1 编写一个整数数组内的元素排序的程序 2 需要排序数组大小为10个DW的整数 3 按照从低到高输出这10个数字 4 要求撰写必要程序模块设计图和主要的流程 三、实验过程或算法(源程序) assume cs:code,ds:data data segment dw 1234h,2a45h,345bh,45c7h,5678h,4321h,5432h,6543h,7654h,0d765h table db '0123456789abcde' data ends stack segment db 32 dup(0) stack ends code segment start: mov ax,data mov ds,ax

mov di,0 mov ax,stack mov ss,ax mov sp,32 mov cx,9 s0: mov ax,ds:[si] push cx s1: add si,2 cmp ax,ds:[si] jb change s2: loop s1 xchg ax,ds:[si] xchg ax,ds:[di] mov si,0 mov di,0 pop cx loop s0 mov ax,data mov ds,ax mov si,0 call show mov ax,4c00h int 21h change: mov ax,ds:[si] mov di,si jmp s2 show: push es push di push ax push bx push cx push dx mov ax,0b800h mov es,ax mov di,160*12+2*10 mov cx,10 show1: push cx

实验3-汇编语言程序上机过程

实验3 汇编语言程序上机过程 3.1 实验目的 (1)掌握常用工具软件EDIT,MASM,和LINK的使用。 (2)伪指令:SEGMENT ,ENDS,ASSUME,END, OFFSET,DUP. (3)利用INT 21H的1号功能实现键盘输入的方法。 (4)了解.EXE和.COM文件的区别及用INT 21H 4C号功能返回系统的方法。 3.2 实验类型 验证型实验 3.3 实验内容 data segment message DB 'THIS IS A SAMPLE PROGRAM OF KEY AND DISPLAY' DB 0DH, 0AH, 'PLEASE STRIKE THE KEY!', 0DH, 0AH,'$' data ends stack segment PARA STACK'STACK' DB 50 DUP(?) stack ends code segment assume CS:COE, DS:DATA, SS:STACK start: mov ax, data mov ds, ax mov dx, OFFSET MESSAGE mov ah, 9 INT 21h ; add your code here AGAIN: MOV AH,1 INT 21H CMP AL,61H JE ND CMP AL,61H JC ND CMP AL,74H JA ND AND AL,11011111B ND: MOV DL,AL MOV AH,2 INT 21H JMP AGAIN EXIT: MOV AH,4CH INT 21H CODE ENDS END START

汇编语言上机实验

汇编语言程序设计的实验环境及实验步骤 知识提要: 1、汇编语言源程序编写好以后,必须经过下列几个步骤才能在机器上运行: (1) 编辑源程序(生成.ASM文件) (2) 汇编源程序(.ASM → .OBJ) (3) 连接目标程序(.OBJ → .EXE ) (4) 调试可执行程序(使用调试程序Debug调试生成的.EXE文件) (5) 运行程序输出结果。 2、Windows环境下的汇编语言集成编程环境的使用 实验一汇编语言上机实验(一) 一、实验要求和目的 1、掌握汇编语言程序设计的基本方法和技能; 2、熟练掌握使用全屏幕编辑程序EDIT编辑汇编语言源程序; 3、熟练掌握宏汇编程序MASM的使用; 4、熟练掌握连接程序LINK的使用。 二、软硬件环境 1、硬件环境:微机CPU 486以上,500MB以上硬盘,32M以上内存; 2、软件环境:装有MASM、DEBUG、LINK等应用程序。 三、实验内容与步骤 1、实验内容 编写程序,判断一个年份是否是闰年。 2、实验步骤 汇编语言程序设计上机过程如图1.1所示。 图1.1 汇编语言程序上机过程 (一)用编辑程序EDIT建立汇编语言源程序文件(ASM文件)

建议源程序存放的目录名为MASM中,MASM子目录在D盘的根目录下。 可以在DOS模式下用编辑程序EDIT.EXE建立汇编语言源程序文件ABC.ASM,注意文件名的扩展名必须是.ASM。也可以在Windows 2000或者在Windows XP环境下鼠标单击“开始”→“运行”,在“运行”中输入“CMD”进入DOS模式,运行EDIT软件,例如:C:\documents and settings\administrator>cd\ *进入C盘根目录 C:\>d: *进入D盘 D:\>md masm *在D盘创建MASM文件夹D:\>cd masm *进入MASM文件夹 D:\masm>edit run.asm *建立run源文件 进入EDIT的程序编辑画面时,编写程序,判断一个年份是否是闰年的汇编语言源程序,输入汇编语言源程序如下: DATA SEGMENT INFON DB 0DH,0AH,'Please input a year: $' Y DB 0DH,0AH,'This is a leap year! $' N DB 0DH,0AH,'This is not a leap year! $' W DW 0 BUF DB 8 DB ? DB 8 DUP(?) DATA ENDS STACK SEGMENT 'stack' DB 200 DUP(0) STACK ENDS CODE SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODE START: MOV AX,DATA MOV DS,AX LEA DX,INFON MOV AH,9 INT 21H LEA DX,BUF MOV AH,10 INT 21H MOV CL, [BUF+1] LEA DI,BUF+2 CALL DATACATE CALL IFYEARS JC A1 LEA DX,N MOV AH,9 INT 21H JMP EXIT A1: LEA DX,Y MOV AH,9 INT 21H EXIT: MOV AH,4CH INT 21H DATACATE PROC NEAR

汇编器实验报告doc

汇编器实验报告 篇一:汇编实验报告 实验一(1)熟悉汇编语言程序调试环境及顺序程序设计 一、实验目的及要求: 1.学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。 2.学会使用EDIT、MASM、LINK、DEBUG等软件工具。 3.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。 二、熟悉汇编语言程序调试环境 1.汇编语言源程序的建立 本例中给出的程序是要求从内存中存放的10个无符号字节整数数组中找出最小数,将其值保存在AL寄存器中。设定源程序的文件名为ABC。 DATA SEGMENT BUFDB 23H,16H,08H,20H,64H,8AH,91H,35H,2BH,7FH CN EQU $-BUF DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: PUSH DS

XOR AX,AX PUSH AX MOVAX,DATA MOV DS,AX MOV BX,OFFSET BUF MOV CX,CN DEC CX MOV AL,[BX] INC BX LP:CMP AL,[BX] JBE NEXT MOV AL,[BX] NEXT: INC BX DEC CX JNZ LP MOV AH,4CH INT 21H CODE ENDS END START 键入以下命令: C:\>EDIT ABC.ASM 此时屏幕的显示状态如图1所示。

1 图1 用EDIT编辑ABC.ASM程序窗口 程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出源程序进行修改。 2.将源程序文件汇编成目标程序文件 一般情况下,MASM汇编程序的主要功能有以下3点:(1)检查源程序中存在的语法错误,并给出错误信息。 (2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。 (3)若程序中使用了宏指令,则汇编程序将展开宏指令。 源程序建立以后,在DOS状态下,采用宏汇编程序MASM 对源程序文件进行汇编,其操作过程如图2所示。 图2 MASM宏汇编程序工作窗口 汇编过程的错误分警告错误(Warning Errors)和严重错误(Severe Errors)两种。其中警告错误是指汇编程序认为的一般性错误;严重错误是指汇编程序认为无法进行正确汇编的错误,并给出错误的个数、错误的性质。这时,就要对错误进行分析,找出原因和问题,然后再调用屏幕编辑程序加以修改,修改以后再重新汇编,一直到汇编无错误为止。 3.用连接程序生成可执行程序文件

8086软硬件实验报告(微机原理与接口技术上机实验)

实验一实验环境熟悉与简单程序设计 实验目的 (1)掌握DEBUG调试程序的使用方法。 (2)掌握简单程序的设计方法。 实验内容 编程将BH中的数分成高半字节和低半字节两部分,把其中的高半字节放到DH中的低4位(高4位补零),把其中的低半字节放到DL中的低4位(高4位补零)。如: BH=10110010B 则运行程序后 DH=00001011B DL=00000010B 实验准备 (1)熟练掌握所学过的指令。 (2)根据实验内容,要求预先编好程序。 实验步骤 (1)利用DEBUG程序输入、调试程序。 (2)按下表要求不断地修改BH的内容,然后记录下DX的内容。 实验报告 (1)给出程序清单。 (2)详细说明程序调试过程。

程序: CODE SEGMENT START : MOV BH,00111111B MOV AL,BH MOV CL,4 SHR AL,CL MOV DH,AL MOV AL,BH AND AL,00001111B MOV DL,AL MOV CL,0 CODE ENDS END START

实验二简单程序设计 实验目的 (3)掌握DEBUG调试程序的使用方法。 (4)掌握简单程序的设计方法。 实验内容 试编写一个汇编语言程序,要求实现功能:在屏幕上显示:Hello world My name is Li Jianguo 参考程序如下:(有错) data segment out1 db 'Hello world' ax db 'My name is Li Jianguo' data ens code segment assume cs:code;ds:data lea dx,out1 mov ah,2 int 21h mov dl,0ah mov ah,2

汇编语言实验报告

汇编语言实验报告 专业: 班级: 姓名: 学号: 2011年12月14日

目录 实验1 利用DEBUG调试汇编语言程序段 (3) 实验2 初级程序的编写与调试实验(一) (11) 实验3 初级程序的编写与调试实验(二) (20) 实验4 汇编语言程序上机过程 (28) 实验5 分支程序实验 (33) 实验6 循环程序实验 (40) 实验7 子程序实验 (45)

实验1 利用DEBUG调试汇编语言程序段一.实验目的 1.熟悉DEBUG有关命令的使用方法; 2.利用DEBUG掌握有关指令的功能; 3.利用DEBUG运行简单的程序段。 二.实验内容 1.进入和退出DEBUG程序; 1)开始—运行,输入cmd,点确定进入命令窗口 2)在命令窗口中输入dubug进入debug程序 3)进入debug窗口后,输入q命令退出debug 2.学会DEBUG中的 1)D命令(显示内存数据D 段地址:偏移地址) 例1:-D100 ;显示DS段, 0100开始的128个节内容

说明: 指定要显示其内容的内存区域的起始和结束地址,或起始地址和长度。 ① D SEGREG[起始地址] [L 长度] ;显示SEGREG段中(缺省内默认为DS), 以[起始地址] (缺省内为当前的偏移地址),开始的[L 长度] (缺省内默认为128)个字节的内容. ② D SEGREG[段地址:偏移地址] ;显示SEGREG段中(缺省内默认为DS), [段地址:偏移地址] 开始的[L 长度] (缺省内默认为128)个字节内容 -D ;默认段寄存器为DS,当前偏移地址(刚进入debug程序偏移地址为0100H) -D DS:100 ;显示DS段, 0100H开始的128个字节内容 -D CS:200 ;显示CS段, 0200H开始的128个字节内容 -D 200:100 ;显示DS段, 0200:0100H开始的128个字节内容 -D 200 ;显示DS段, 0200H开始的128个字节内容

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

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

99223344H = xxxxxxxxH

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

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

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

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

实验三 汇编数据寻址的方法

实验三汇编数据寻址的方法(2学时)实验目的 通过实验掌握下列知识: 1、DEBUG命令:G,N,W,L及Q。 2、8086系统中数据在内存中的存放方式和内存操作数的几种寻址方式。 3、8086指令:INC,DEC,LOOP,INT 3,INT 20H,寄存器SI,DI。 4、8086汇编语言伪操作:BYTE PTR,WORD PTR。 5、求累加和程序和多字节加减法程序。 实验类型:验证 实验内容和步骤 一、内存操作数及各种寻址方式使用 程序内容: 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 操作步骤 一、内存操作数及各种寻址方式使用 程序内容: 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字符及双字节数存放法。 思考:有关指令中BYTE PTR及WORD PTR伪操作不加行不行?试一试。

汇编语言上机试验指导

作实验2 【1】.有空加作实验【4】(1). 实验2 算术及位串处理程序 【1】.在数据段预先存放16个十六进制数的ASCII码,把BX中的四位十六进制数,从左到右用查表的方法找到对应数位的ASCII码,并取出显示出来。 要求见书: 参考程序: data segment asc db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h db 41h,42h,43h,44h,45h,46h data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov cl,4 rol bx,cl mov si,bx and si,0fh mov dl,[asc+si] mov ah,2 int 21h rol bx,cl mov si,bx and si,0fh mov dl,[asc+si] mov ah,2 int 21h mov ah,4ch int 21h code ends end start 【2】用字符串处理指令编制程序,处理字符串的比较和查找,显示结果。 要求:(1) 字符串的比较程序中,一个字符串在数据段定义,另一个字符串在程序执行时从键盘输入,必须定义键盘缓冲区。并指出不相等的位置。 参考书上例3.51,题目改为MESS2 定义为从键盘输入缓冲区,键盘输入缓冲区定义: mess2 DB 9,?,9 DUP(?) 例3.51 在数据段中有一个长度为19的字符串MESS1,在附加段中有一个长度为19的字符串MESS2,比较它们是否相等。若相等显示‘Y’,否则显示‘N’。编制程序如下所示。

福建农林大学_汇编实验三_分支循环程序设计详解

福建农林大学计算机与信息学院实验报告 系:计算机专业:计算机科学与技术年级:2014 姓名学号:实验室号__ 计算机号 实验时间:2016-10-29指导教师签字:刘庆连成绩: 实验三分支循环程序设计 1.实验目的 (1)学习调试程序,查找逻辑错误; (2)学习分支语句的编程和调试; (3)学习循环语句的编程和调试。 2.实验内容 1)有10个数,统计正数的个数,存放在变量M中中。经过汇编后,形成EXE文件。在DEBUG中,先用G=0命令执行程序,用D命令查看M单元的内容,会发现结果不正确。用单步执行命令T=0,单步执行程序,查找程序中的逻辑错误,注意每一次循环中AL 寄存器中值的变化是否正确?(AL寄存器中存放正数的个数) DSEG SEGMENT MSG DB 4, -2, -6, 0, 5, 67, 8, -3, 5, 6 M DB ? DSEG ENDS CSEG SEGMENT ASSUME CS: CSEG, DS: DSEG START: MOV AX, DSEG MOV DS, AX MOV CX, 10 MOV AL, 0 LEA SI, MSG L1: MOV BL, [SI] CMP BL, 0 JBE NEXT INC AL NEXT: INC SI

LOOP L1 MOV M, AL MOV AL, 0 MOV AH, 4CH INT 21H CSEG ENDS END START 2)数据段中是一组无符号数,将最小数存放在M单元中。按上题方法查找一处逻辑错误。 DSEG SEGMENT MSG DB 13, 15, 7, 25, 24 M DB ? DSEG ENDS CSEG SEGMENT ASSUME CS: CSEG, DS: DSEG START: MOV AX, DSEG MOV DS, AX MOV CX, 4 MOV AL, MSG MOV SI, OFFSET MSG+1 L1: CMP AL, [SI] JB NEXT MOV AL, [SI] NEXT: LOOP L1 MOV M, AL MOV AL, 0 MOV AH, 4CH INT 21H CSEG ENDS END START 3)编程:在首地址为BUF开始的内存单元中存有10个字节数,求其中0的个数,并将结果存于RESULT中。 4)编程:∑ - =* = 8 1 i i i B A Y,Ai,Bi为字节型无符号数,分别存于NUM1和NUM2开始的连续存储单元中,结果存于REST单元中。

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