汇编实验报告3分支循环程序设计

合集下载

实验3 循环与子程序汇编语言程序设计实验

实验3 循环与子程序汇编语言程序设计实验
11
六、执行到 5!,r2=1!+2!+3!+4!+5!=153=0x99
汇编程序代码:
4、 选做:利用 1 题中找最大数的方法,对内存中 19、21、4、33、51、16、72、28、39,2 的 10 个数据进行选择法升序排序。
5、 选做:用递归调用方法求 n!,n=6。 一、调试状态
12
二、执行 STRAT,开始给定义的寄存器赋值,然后跳转到 LOOP 子程序执行
分析:寄存器 r5 的值是 0x78,即是:1*2*3*4*5=120 汇编程序代码
9
3、 编写子程序调用程序 p3xxxx3.s,求 1!+2!+3!…+5!;其中子程序完成求 n!任务, 主程序完成求阶乘和的任务。
一、开始调试,执行 STRAT,给寄存器赋值,然后跳转到 LOOp 子程序执行
二、开始执行,r0=r0+1=1+1=2,同时 r3=r0*r1=2*1=2,如下面的图中的寄存器显示
分析:上面的图显示,r0=1,r1=1 三、开始执行 1*2
分析:上面的图显示:r0 自加 1,r0=2,r1=1 四、下面的图显示,r1*r0=r3=1*2=3
五、把 1*2=2 的值赋给 R1,
13
六、r0=2+1=3
七、R1*R0=2*3=6,值送到寄存器 R3 存放,r3=6
八、r0 自加 1 成 4,R0=4,R2=6
3
五、
分析:上面的图显示,寄存器 r0 的值是 0x28,即是 2*16+8=40=19+21 六、
分析:上面的图显示,寄存器 r0 的值是 0x2c, 即是 2*16+12=44=19+21+4 七、

汇编语言程序设计(三循环)

汇编语言程序设计(三循环)
1.实验目的:
掌握汇编语言开发环境,熟练掌握循环程序结构及编程方法,掌握冒泡排序算法。
2.实验内容:
⑴采用冒泡排序方法对给定的数据进行排序,使之成为升序数列,调试,检查结果; ⑵使用交换标志,优化冒
3.实验用设备仪器及材料:
link.exe连接2.obj文件,生成可执行文件2.exe.
⑶用DEBUG调用2.exe文件,格式为DEBUG 2.EXE ⑷用D命令观察内存单元值
⑸用U命令观察源程序
⑹用G命令运行程序 ⑺用T命令单步执行程序 ⑻用R命令观察或修改寄存器内的值
5.实验报告: ① 同学要对本次实验课的内容加以总结,并写出自己对本次 实验的体会和收获。 ② 实验报告格式: 实验名称 实验材料 实验步骤 实验总结
硬件:计算机 软件:DEBUG调试软件。
4.实验要求:
⑴要求编写一个把十个数,依次从小到大升序排列的循环程序。 ⑵写出使用Debug命令调入程序段运行,并查看程序运行过程及标志位值的变化。 ⑶总结汇编源程序从编写到执行的过程。写出用DEBUG调试并运行可执行文件的过程, 查看验证执行结果。
5.实验步骤: ⑴用文件编辑器编写汇编语言程序(如:记事本),并以asm为后缀命名, 如:2.asm ⑵运行masm编译器进入dos,调入所编写的汇编程序,生成2.obj,然后用
结果呐
问题:
本程序选出的最大值是哪一个? 仔细观察数据在存储单元内的存储情况。 观察各寄存器内数据的变化。 指出运算结果存放的地址及数值。
实验参考程序:
data segment buf dw 3,-4,6,7,9,2,-8,-10,20,0 data ends code segment assume cs:code,ds:data start:mov ax,data mov ds,ax mov cx,10 dec cx lop1:mov dx,cx mov bx,0 lop2:mov ax,buf[bx] cmp ax,buf[bx+2] jge lop3 xchg ax ,buf[bx+2] mov buf[bx],ax lop3:add bx,2 dec cx jne lop2 mov cx ,dx loop lop1 mov ah,4ch int 21h code ends end start

汇编实验2-循环程序设计-实验报告

汇编实验2-循环程序设计-实验报告

汇编实验2-循环程序设计-实验报告一、实验目的1、了解循环程序设计的方法2、理解汇编语言中循环指令的使用3、掌握汇编语言中常用的循环结构二、实验原理1、循环指令循环指令是计算机中常用的一种控制结构,其作用是重复执行一定的操作。

在汇编语言中,常用的循环指令有LOOP、LOOPE、LOOPNE等,具体功能如下:(1)LOOP:重复执行指定次数的操作;(2)LOOPE:执行操作直到CX寄存器为0或ZF寄存器为1;(3)LOOPNE:执行操作直到CX寄存器为0或ZF寄存器为0。

LOOP指令的语法格式如下:LOOP label其中,label表示循环的目标地址。

2、循环结构循环结构是计算机程序设计中常用的一种结构,其基本形式包括:while、do...while、for等。

在汇编语言中,常用的循环结构有以下两种:(1)无限循环结构:该结构适用于需要不停顿地进行某项操作的情况,底层逻辑基于测试指令;(2)计数器循环结构:该结构适用于需要循环指定次数的情况,底层逻辑基于循环指令。

三、实验内容1、使用循环指令实现计算1~10的和;2、使用循环结构实现计算1~10的和。

四、实验步骤1、使用循环指令实现计算1~10的和。

(1)将计数器初始化为10,即MOV CX,10;(2)将累加器初始化为0,即MOV AX,0;(3)将当前计数器值加到累加器中,即ADD AX,CX;(4)将计数器减1,即DEC CX;(5)判断计数器是否为0,若不为0,则执行第3步;若为0,则跳转到计算结果的部分。

2、使用循环结构实现计算1~10的和。

(1)将计数器初始化为10,即MOV CX,10;(2)将累加器初始化为0,即MOV AX,0;(3)将当前计数器值加到累加器中,即ADD AX,CX;(4)将计数器减1,即DEC CX;(5)判断计数器是否为0,若不为0,则执行第3步;若为0,则跳转到计算结果的部分。

五、实验结果(1)使用循环指令实现计算1~10的和MOV CX,10MOV AX,0LOOP label1ADD AX,CXDEC CXJNZ label1label1:MOV sum,AX(2)使用循环结构实现计算1~10的和MOV CX,10MOV AX,0label2:ADD AX,CXDEC CXJNZ label2MOV sum,AX六、实验总结本次实验实现了两种不同的循环方式,分别使用了循环指令和循环结构。

汇编语言程序设计实验报告二(分支循环程序实验)

汇编语言程序设计实验报告二(分支循环程序实验)

汇编语言程序设计实验报告二(分支循环程序实验)一、实验目的1、掌握分支程序、循环程序的设计方法。

2、熟悉DEBUG程序的使用方法。

3、掌握汇编语言程序的编辑、汇编、连接以及调试过程。

二、实验内容1、编写一程序,将内存中某一区域的数据传送到另一个区域中(要求用循结构,不考虑数据块重叠问题)。

2、编写一程序,将内存中某一区域的数据传送到另一区域(要求考虑数据块重叠问题)。

三、实验准备1、预习数据传送指令,熟悉分支和循环程序设计方法。

2、预习DEBUG调试程序的使用方法。

3、根据实验内容要求,编写好实验源程序。

四、实验步骤1、用QE或其它编辑软件,在计算机上编辑源程序,使其正确无误。

2、汇编、连接源程序,产生.EXE可执行文件。

3、运行程序。

(1) 进入DEBUG。

打入DEBUGT MYPROG.EXE。

MYPROG为所编程序的文件名。

(2) 先用G命令连续剧连续执行程序,程序执行完毕后,观察运行结果。

如果执行后是对的,说明程序编写是正确的,如果结果不对,说明程序有错误,则执行下一步。

(3) 检查程序。

在程序中设置若干断点,以便杳出错误所在。

(4) 采用单步命令T或执行程序,观察各寄存器和存储单元内容,以便找到错误之处。

五、实验报告要求1、列出程序清单,并给出程序流程图。

2、总结实现数据传送的几种方法,指出它们的区别。

开始3、分析实验中所遇到的一些问题,分析错误原因。

4、说明本实验中是如何使用DEBUG进行调试的。

CX、SI、DI置初值六、流程图勤开始设置增量方式CX、SI、DI置初值保存SI内容AL [SI] SI SI+源块长度[DI] AL N SI>DIYSI SI+1 恢复SI内容恢复SI内容DI DI+1CX CX-1 设置减量方式N CX=0, SI指向源块末尾DI指向目的块末尾Y结束 [DI] [SI]题一流程图 N 传完了吗, 书馆 Y结束题二流程图七、程序清单题一程序清单:STACK SEGMENT STACK ‘STACK’DB 100 DUP(0)STACK ENDSDATA SEGMENT PARA ‘DATA’SOUR DB 0、1、2、3、4、5、6、7、8、9 DEST DB 10 DUP(,)DB ‘$’DATA ENDSSEGMENT PARA‘CODE’ASSUME CS:CODEMAIN PROC FARSTART: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV CX,10MOV SI,offset SOURMOV DI, offset DESTAGAIN: MOV AL,[SI]MOV [DI],ALINC SIIN DILOOP AGAINMOV DX,offset DESTMOV AH,09HINT 21HRETMAIN ENDPCODE ENDSEND START题二程序清单:DATA SEGMENT PARA ‘DATA’STRG DB ‘ABCDEFGHIJKLMNOP’STG1 EQU STRG+4STG2 EQU STHG+8STRSE EQU 6DATA ENDSSTACK SEGMENT PARA ‘CODE’DB 100 DUP(0) STACK ENDSCODE SEGMENT PARA ‘CODE’ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK PROC FARSTART: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV ES,AXMOV CX,STRSEMOV SI,OFFSET STG1MOV DI,OFFSET STG2CLDPUSH SIADD SI,STRSE-1CMP SI,DIPOP SIJL MOVESTDADD SI,STRSE-1ADD DI,STRSE-1 MOVE: REP MOVSB RETMAIN ENDPCODE ENDSEND START。

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

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

福建农林大学计算机与信息学院实验报告系:计算机专业:计算机科学与技术年级:2014姓名学号:实验室号__ 计算机号实验时间:2016-10-29指导教师签字:刘庆连成绩:实验三分支循环程序设计1.实验目的(1)学习调试程序,查找逻辑错误;(2)学习分支语句的编程和调试;(3)学习循环语句的编程和调试。

2.实验内容1)有10个数,统计正数的个数,存放在变量M中中。

经过汇编后,形成EXE文件。

在DEBUG中,先用G=0命令执行程序,用D命令查看M单元的内容,会发现结果不正确。

用单步执行命令T=0,单步执行程序,查找程序中的逻辑错误,注意每一次循环中AL 寄存器中值的变化是否正确?(AL寄存器中存放正数的个数)DSEG SEGMENTMSG DB 4, -2, -6, 0, 5, 67, 8, -3, 5, 6M DB ?DSEG ENDSCSEG SEGMENTASSUME CS: CSEG, DS: DSEGSTART: MOV AX, DSEGMOV DS, AXMOV CX, 10MOV AL, 0LEA SI, MSGL1: MOV BL, [SI]CMP BL, 0JBE NEXTINC ALNEXT: INC SILOOP L1MOV M, ALMOV AL, 0MOV AH, 4CHINT 21HCSEG ENDSEND START2)数据段中是一组无符号数,将最小数存放在M单元中。

按上题方法查找一处逻辑错误。

DSEG SEGMENTMSG DB 13, 15, 7, 25, 24M DB ?DSEG ENDSCSEG SEGMENTASSUME CS: CSEG, DS: DSEGSTART: MOV AX, DSEGMOV DS, AXMOV CX, 4MOV AL, MSGMOV SI, OFFSET MSG+1L1: CMP AL, [SI]JB NEXTMOV AL, [SI]NEXT: LOOP L1MOV M, ALMOV AL, 0MOV AH, 4CHINT 21HCSEG ENDSEND START3)编程:在首地址为BUF开始的内存单元中存有10个字节数,求其中0的个数,并将结果存于RESULT中。

汇编实验三--分支循环程序设计

汇编实验三--分支循环程序设计

福建农林大学金山学院实验报告系:专业:计算机科学与技术年级: 08 姓名:学号:实验课程:汇编语言实验室号:_______ 实验设备号:实验时间:指导教师签字:成绩:实验三分支循环程序设计1.实验目的和要求1、学习调试程序,查找逻辑错误;2、学习分支语句的编程和调试;3、学习循环语句的编程和调试。

2.实验环境实验的硬件环境是:IBM—PC机及其兼容机实验的软件环境是:操作系统:DOS 2.0以上;调试程序:;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引用程序:CREF.EXE(可有可无)。

3.实验内容及实验数据记录1.有10个数,统计正数的个数,存放在变量M中中。

经过汇编后,形成EXE文件。

在DEBUG中,先用G=0命令执行程序,用D命令查看M单元的内容,会发现结果不正确。

用单步执行命令T=0,单步执行程序,查找程序中的逻辑错误,注意每一次循环中AL寄存器中值的变化是否正确。

(AL寄存器中存放正数的个数)DSEG SEGMENTMSG DB 4, -2, -6, 0, 5, 67, 8, -3, 5, 6M DB ?DSEG ENDSCSEG SEGMENTASSUME CS: CSEG, DS: DSEGSTART: MOV AX, DSEGMOV DS, AXMOV CX, 10MOV AL, 0LEA SI, MSGL1: MOV BL, [SI]CMP BL, 0JBE NEXTINC ALNEXT: INC SILOOP L1MOV M, ALMOV AL, 0MOV AH, 4CHINT 21HCSEG ENDSEND START2.数据段中是一组无符号数,将最小数存放在M单元中。

按上题方法查找一处逻辑错误。

DSEG SEGMENTMSG DB 13, 15, 7, 25, 24M DB ?DSEG ENDSCSEG SEGMENTASSUME CS: CSEG, DS: DSEGSTART: MOV AX, DSEGMOV DS, AXMOV CX, 4MOV AL, MSGMOV SI, OFFSET MSG+1L1: CMP AL, [SI]JB NEXTMOV AL, [SI]NEXT: LOOP L1MOV M, ALMOV AL, 0MOV AH, 4CHINT 21HCSEG ENDSEND START3.编程:在首地址为BUF开始的内存单元中存有10个字节数,求其中0的个数,并将结果存于RESULT中。

微机原理实验报告-分支程序设计

微机原理实验报告-分支程序设计

实验三 分支程序设计一、实验要求和目的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 ENDSSTACK SEGMENT STACK'STACK' DB 100H DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX MOV AL,XX CMP AL,0 ;把AX 与0比较JGE BIGPR ;0≥AL 转入BIGPR MOV Y,0FFFFH ;0<AL 则1-=Y JMP EXIT BIGPR: JE EQUPR ;0=AL 转入EQUPR MOV Y,1 ;0>AL 则1=Y JMP EXIT EQUPR: MOV Y,0;0=AL 则0=YEXIT: MOV AL,Y RET CODE ENDS END START(2)查找最大值的实验代码 DATA SEGMENT ARRAY DB 2,1,4,5,3 RESULT DB ? DATA ENDSSTACK SEGMENT STACK'STACK' DB 100H DUP(?) STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX LEA B X,ARRAY MOV AL,[BX] ;ARRAY 第一个数存入BXMOV CX,5 ;置循环次数 LOP: INC BX ;指针变量增1 CMP AL,[BX] ;比较AL 中数与[BX]的大小JAE L1;][BX AL ≥转入L1 MOVAL,[BX];][BX AL <则][BX AX ← L1: LOOP LOP;执行循环LOP 程序MOV RESULT,AL MOV AH,4CH INT 21H CODE ENDS END STARTc.对程序进行debug 调试,观察中间结果 (1)计算函数值的调试 1.反汇编内容①MOV AL,XX 反汇编后变成MOV AL,[0000],即XX 为数据段第一个存储单元的内容,数据段的起始偏移地址为0000。

汇编语言程序设计上机实验报告(实验三)-循环程序设计

汇编语言程序设计上机实验报告(实验三)-循环程序设计

汇编语言程序设计上机实验报告(实验三)一、实验题目、内容及要求:一、实验题目、内容及要求:题目:循环程序设计内容:编写一程序,要求从键盘接收一个4位十六进制数,在终端上显示与它等值的二进制数。

二进制数。

要求:实验前要作好充分准备,包括程序清单、调试步骤、调试方法,对程序结果的分析等。

本实验要求在EDIT 下编写完整的汇编语言程并生成可执行文件运行。

下编写完整的汇编语言程并生成可执行文件运行。

二、实验时间及地点二、实验时间及地点日期:日期: 2011/11/21 节次:节次: 7.8 地点:地点:电子实验楼二楼电子机房电子实验楼二楼电子机房 三、实验目的三、实验目的通过本实验掌握DOS 系统功能调用功能,掌握循环程序设计的方法;学会编写循环结构程序。

构程序。

简述在实验过程中遇到的问题和解决的方法:简述在实验过程中遇到的问题和解决的方法:1、问题:遇到死循环解决方法:程序显示disp 中发现执行int int 21h 21h 会修改al 的值,避免这种情况的方法就是使用堆栈段。

2、问题:调试中出现no data segment 解决方法:start 开始时没有将数据段的IP 地址赋给dx 。

data segment 3、问题:可执行,结果为乱码解决方法:数据划分比较的粗,没有系统的将数据系统划分。

系统划分:<30h other 30h-39h num 39h-41h other 41h-46h big zi mu 46h-61h other 61h-67h small zi mu >67h other 运行结果:(要求用“抓图软件”抓程序的运行结果)(要求用“抓图软件”抓程序的运行结果)结果分析及实验体会:结果分析及实验体会:1、结果0001001000110100是十六进制数1234转化而来。

十六进制数通过ASCII码对照转换为二进制数。

A~F----- -57hA~ f----- -57h0~9 ------ -37h2、学习应用了循环指令并了解了其特点:A、循环指令不影响标志位B、其功能为使寄存器CX的值减1,如果结果不等于0,则循环至标号,否则顺序执行。

循环和分支程序设计(实验报告)

循环和分支程序设计(实验报告)

实验二 循环和分支程序设计学号 201216008 姓名 孙坤 专业 电子信息科学与技术 成绩【实验目的】(1) 熟悉上机实验流程、调试及查看实验结果。

(2) 熟悉汇编语言编程环境,DOS 调用应用;(3) 编写循环和分支程序,并调试;【实验内容及步骤】1、 实验要求:从键盘输入一系列字符,以回车符结束,编程统计其中数字字符的个数(不超过100个) 提示:程序首先调用DOS 功能的1号功能,从键盘输入字符。

为得到字符串,可以采用循环结构,连续输入。

在输入的过程中通过判断是否是回车来结束输入。

其中回车的ASII 码(0DH )。

数字的0的ASII 码(30H )9的(39H )流程图:Next1函数:Next 函数:Exit函数:2、实验内容:实验程序:dataseg segmentmess1 db'Please input',13,10,'$' mess2 db'Ouput',13,10,'$' dataseg endscodeseg segmentassume ds:dataseg, cs:codeseg main procstart:mov ax,datasegmov ds,axmov bx,0lea dx,mess1mov ah,09hint 21hloop3:mov ah,01 int 21hcmp al,0dh jz output cmp al,'0' jnl loop1 jmp loop3loop1:cmp al,'9' jng loop2 jmp loop3loop2:inc bx jmp loop3 output:mov dx,13 mov ah,02h int 21hmov dx,10int 21hlea dx,mess2 mov ah,09hint 21hmov dx,13mov ah,02h int 21hmov dx,10mov ah,02h int 21hmov ax,bxmov cl,10div clmov bh,ahadd al,30h mov dl,almov ah,02h int 21hmov al,bhmov dl,almov ah,02h int 21hmov ax,4c00h int 21hmain endpcodeseg endsend start3、实验结果:【实验心得与体会】通过本次实验,首先我加深了对DOS功能调用的使用,对循环结构及分支程序进行了编写,有了更清晰的认识。

微机原理汇编实验-分支、循环及子程序设计实验

微机原理汇编实验-分支、循环及子程序设计实验

微机原理汇编实验-分支、循环及子程序设计实验学生实验报告实验课程名称:微机原理汇编实验开课实验室:年月日年级、专业、班学号姓名成绩实验项目名称分支、循环及子程序设计实验指导教师教师评语一、实验目的1.学习分支程序、循环结构程序的设计和调试方法。

2.学习子程序的定义和调试方法。

3.掌握分支、循环、子程序等程序的基本结构。

二、实验原理使用MASM汇编语言设计工具,设计简单的汇编语言程序并进行运行调试,以便掌握汇编语言设计、编写、调试和运行程序的方法。

三、实验仪器、材料1.软件MASM5.02.PC微机一台四、实验步骤1.输入程序并检查无误,经汇编、连接后生成.EXE文件。

2.使用DEBUG命令运行以上程序。

3.反复试几组数,考察程序的正确性。

五、实验源代码;-------------------------------------------------;程序名:Lab201;功能:实现对NUM中 -128~127; 的数进行负数统计;备注:负数的个数存放在BL中并在屏幕输出;-------------------------------------------------DSEG SEGMENT;定义需要统计的各个数值,数据值不能大于127,不能小于-128 NUM DB -100,-100,1,-100,30,-10,127,89,-128,20;统计数据的个数LENG EQU ($-NUM)DSEG ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DSEGSTART: MOV AX,DSEGMOV DS,AXMOV CX,LENGMOV BX,0000HMOV AX,DSEGMOV DS,AXMOV SI,OFFSET NUMAGAIN:MOV DL,[SI]CMP DL,0000HJL LITTELJMP BIGLITTEL:INC BL ;程序结束返回DOSADD SI,1LOOP AGAINJMP FINISHBIG:ADD SI,1LOOP AGAINJMP FINISH;---------------------------------- ;子程序名:TRANNUM;功能:将数值转换为数字; 字符输出;入口参数:DL;出口参数:无;---------------------------------- TRANNUM PROC NEARMOV AL,DLXOR AH,AHMOV CX,2MOV DL,10TRAN1:DIV DLXCHG AH,ALADD AL,'0'PUSH AXXCHG AH,ALMOV AH,0LOOP TRAN1MOV CX,2TRAN2:POP DXCALL DISPLAYLOOP TRAN2RETTRANNUM ENDP;----------------------------------;子程序名:DISPLAY;功能:将单个字符显示输出;入口参数:DL;出口参数:无;----------------------------------DISPLAY PROC NEARMOV AH,02HINT 21HRETDISPLAY ENDPFINISH:MOV DL,BLCALL TRANNUM ;调用子程序:TRANNUM MOV AH,4CH ;程序结束返回DOSINT 21HMAIN ENDPCODE ENDSEND START六、实验过程原始记录(数据图表、计算等)1、打开命令提示符:输入cmd2、输入:cd G:/asm/tos3、输入:G:5、输入:masm lab2016、输入:link lab2017、输入:lab201七、实验结果分析从程序代码分析,所给数值中有5个负数,运行程序后输出结果为05,说明程序能够实现其统计负数个数的功能。

汇编(循环、分支、子程序)实验报告

汇编(循环、分支、子程序)实验报告
1.设计:
分别为十个成绩、成绩总个数、分段的5个区间申请内存单元,初始化数据段;将AX,BX,CX压栈,保留原始数据。选取第一个成绩,存入AX中,该数据除以10,得到商存入BX,判断商的所属区间,给所属区间加1,继续下一个,循环直到十个全部判断结束,pop出栈,得到属于各区间的成绩个数,程序结束。
2.源程序清单
2.源程序清单
datasegment
xdw 1ah
ydw 0ah
zdw 01h
maxdw ?
dataends ;数据段定义
codesegment
assume ds: data, cs: code
start:
mov ax, data
mov ds, ax ;初始化数据段
mov ax, x
cmp ax, y
《汇编语言程序设计》实验报告
实验名循环、分支、子程序设计实验室实验楼实验日期2014-06-09
一、实验目的及要求
1.熟悉命令格式,功能,加强对指令系统的理解
2.编写简单循环、选择、子程序的结构程序
3.单步跟踪调试,观察寄存器的变化和指令执行的结果
二、实验环境
硬件环境:一台微型计算机
软件环境:windows xp,debug环境,masm
2.源程序清单
datarea segment;定义数据段
buffer db 80 dup(?) ;预申请了以buffer为首地址的内存单元
flag db ?
datarea ends
prognam segment;定义编码段
main proc far
assume cs:prognam,ds:datarea
(5).初始数据段
(6).分别将AX,BX,CX,SI压栈,保留初始数据,

汇编实验三报告

汇编实验三报告

汇编语言程序设计实验报告班级:计科1班学号:姓名:实验日期 2015.10.26 成绩实验三循环程序设计采用循环程序设计,结合分支程序设计,从键盘输入无符号的字节数组array,进行从大到小排序后,显示排序后的数组各元素。

程序框图:程序清单:DATA SEGMENTARRAY DB 5 DUP(?)COUNT EQU ($-ARRAY)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV CX,COUNT /输入数的个数送CX寄存器LEA SI,ARRAY /取数组的首地址LL3:PUSH CX /CX压栈MOV BX,0 /BX寄存器清零MOV CH,2 /循环次数为2MOV CL,4 /每次移位数为4LL2:SHL BX,CL /BX逻辑左移4位MOV AH,1 /从键盘输入一个字符(1号功能)INT 21HSUB AL,30H /AL-30HCMP AL,0AH /如果AL<0AHJB LL1 /则转至LL1SUB AL,7LL1:OR BL,ALDEC CHJNZ LL2 /≠0则转至LL2MOV [SI],BLMOV DL,20H /显示一个空格MOV AH,2 /显示一个字符(2号功能)INT 21HADD SI,1 /SI+1POP CX /CX出栈DEC CXJNE LL3 /≠0则转至LL3MOV DL,0AH /换行MOV AH,2 /2号功能INT 21HMOV DL,0DH /回车MOV AH,2 /2号功能INT 21HMOV CX,COUNT-1L2:MOV DI,CXLEA SI,ARRAYL:MOV AL,[SI]CMP AL,[SI+1] /如果AL<[SI+1]JNB L1 /则转至L1XCHG AL,[SI+1]MOV [SI],ALL1:INC SI /SI+1DEC DIJNZ LDEC CXJNZ L2MOV CX,COUNTLEA SI,ARRAYLLLL:PUSH CX /CX入栈MOV BL,[SI]MOV CH,2MOV CL,4LLL2:ROL BL,CL /BL循环左移4位MOV DL,BLAND DL,0FH /DL˄0FADD DL,30H /DL+30HCMP DL,3AH /如果DL<3AHJB LLL1 /则转至LLL1ADD DL,7LLL1:MOV AH,2INT 21HDEC CHJNZ LLL2MOV DL,20H /显示空格MOV AH,2INT 21HINC SI /SI+1POP CXDEC CXJNZ LLLLMOV AH,4CHINT 21HCODE ENDSEND START运行结果:运行结果图排序前的内存图排序后的内存图实验总结:。

分支与循环程序设计实验

分支与循环程序设计实验

一. 实验目的及实验环境实验目的:实验目的:1、掌握分支程序的设计方法。

、掌握分支程序的设计方法。

2、掌握宏定义及宏调用的基本方法。

、掌握宏定义及宏调用的基本方法。

3、了解小写和大写字母的ASCII 码表示及其转换方法。

了解数字及其它字符在的ASCII 码表示方法。

码表示方法。

4、掌握循环程序的设计方法。

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

5、掌握比较指令、转移指令和循环指令的使用方法。

6、进一步掌握调试工具的使用方法、进一步掌握调试工具的使用方法 实验环境:实验环境:80x86系列微型计算机一台以及进行汇编语言程序设计所必需的编程工具(文本编辑器、(文本编辑器、ASM.EXE ASM.EXE ASM.EXE、、LINK.EXE LINK.EXE、、DEBUG.EXE DEBUG.EXE)) 二. 实验内容 1、 从键盘输入一字符,判断该字符是小写字母、大写字母、数字或其它字符。

若输入为小写字母,显示“若输入为小写字母,显示“You Input a Lowercase Letter You Input a Lowercase Letter You Input a Lowercase Letter!!”;若输入为大写字母,写字母,显示显示显示““You Input a Uppercase Letter Letter!!”; 若输入为数字,若输入为数字,显示显示“You Input a Digit Input a Digit!!”; 若输入为其它字符,显示“若输入为其它字符,显示“You Input Other Letter You Input Other Letter You Input Other Letter!!”。

2、计算1+2+……n=?n=?,其中,其中n 通过键盘输入。

要求在屏幕上提供如下信息:上提供如下信息:Please input a number(1~627): ;出现此信息后通过键盘输入一个小于628的无符号整数1+2+1+2+……..n=sum ;其中n 为用户输入的数,为用户输入的数,sum sum 为所求的累加和为所求的累加和 程序运行情况如下图所示(说明:图中所运行程序允许累加和不大于一个32位二进制数所能表示的范围)。

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

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

实验3 分支和循环程序设计实验目的:熟练掌握分支和循环结构的设计方法,熟悉跳转和循环指令的使用方法。

实验要求:按照要求编写程序,调试运行。

实验内容:1、编写程序实现下面的算法:ifthenlowerCount+1;elseif(ch≥’A’) and (ch≤’Z’)thenupperCount+1elseotherCount+1;endifendif其中ch调用ReadChar输入,lowerCount, upperCount和otherCount的值用WriteUDecByte显示。

源代码.386.model flat,stdcallinclude\masm32\include\io32.inc.stack 4096.datalowercount Byte ?uppercount Byte ?othercount Byte ?prompt1 byte "Input a string(if(#)end)",0dh,0ah,0prompt2 byte "output the number",0dh,0ah,0prompt3 byte "the lowercount number:",0dh,0ah,0prompt4 byte "the uppercount number:",0dh,0ah,0prompt5 byte "the othercount number:",0dh,0ah,0buf byte 80 dup(?).codestart:writestring prompt1 readstring buflea edi,bufagain:mov al,[edi]cmp al,'#'jz donecmp al,'A'jb othercmp al ,'Z'jbe uppercmp al,'a'jb othercmp al,'z'jbe lowerjmp otherlower: inc lowercount inc edijmp againupper:inc uppercount inc edijmp againother: inc othercount inc edijmp againdone:writestring prompt2 writecrlfwritestring prompt3 writeUDecByte lowercount writecrlfwritestring prompt4 writeUDecByte uppercount writecrlfwritestring prompt5 writeUDecByte othercount retend start实验结果结果1结果22、编写程序从键盘输入一系列有符号数,找出其中的最大数和最小数,显示运行结果。

汇编实验报告--循环程序设计实验

汇编实验报告--循环程序设计实验

实验三循环程序设计实验学生姓名:何茂杰学号:2010305104 专业班级:计算机本科一班指导老师:文远熔实验日期:实验成绩:一、实验目的1.掌握循环程序的设计方法;2.学会针对不同的问题,选用不同的组织循环的方法;3.进一步熟悉利用DEBUG程序修改参数的方法,并检查和验证结果的正确性。

二、实验内容1.计算y=x!X为8位无符号数Y为16位无符号数2.计算z=x+y其中x,y为5字节压缩BCD码,x,y,z的存放地址自定。

3. y=x/32,要求得商的整数和小数,x为四字节无符号数三、实验环境PC微机DOS操作系统或Windows 操作系统四、实验要求1.编写实验内容要求的两个程序;2.写出调试以上程序,即修改程序参数,检查结果的操作方法;3.熟悉源程序汇编、连接命令的使用方法即要回答的内容。

五、主要实验步骤一.算法过程1.分析算法思想2.根据算法分析3.编写程序测试,记录结果4.分析结果5总结二.对.EXE文件进行调试运行。

(1)用DEBUG调试运行,学会修改BL内容的方法;(2)对DSPKEY.EXE键入不同的字符,分别进行调试;(3)在MS-DOS下运行这两个.EXE文件。

六.心得体会实验让我了解了循环程序设计的应用。

让我明白如何应用循环程序设计。

源代码:code segmentassume cs:code,ds:codeorg 100hstart:push cspop dspush cspop esQ0:lea dx,Tipsmov ah,9int 21hQ1:mov ah,0int 16hcmp al,1bhjz exitcmp al,'0'jb Q1cmp al,'8'ja Q1mov ah,0ehint 10hsub al,30h;'0'or al,aljnz Q2mov ax,1 ;0!=1 jmp Q4Q2:mov ah,0 mov cx,axmov al,1xor dx,dxQ3:mul cxloop Q3Q4:cldlea di,Result add di,2lea bp,Table mov cx,5Q5:xor dx,dx div word ptr [bp] or al,30hstosbmov ax,dxadd bp,2loop Q5lea dx,Result mov ah,9int 21hjmp Q0exit:mov ah,4chint 21hcode endsend start。

汇编实验报告:汇编程序的汇编及运行_顺序程序设计_分支循环程序设计_子程序设计_dos功能调用

汇编实验报告:汇编程序的汇编及运行_顺序程序设计_分支循环程序设计_子程序设计_dos功能调用

福建农林大学东方学院信息工程类实验报告课程名称:汇编语言*名:***系:计算机系专业:电子信息工程年级:2010学号:1050302103指导教师:职称:2012年 6 月17 日福建农林大学东方学院信息工程类实验报告系:计算机系专业:电子信息工程年级: 10 姓名:廖少兵学号: 1050302103 实验课程:汇编语言实验室号:_______ 实验设备号:实验时间:指导教师签字:成绩:实验一汇编程序的汇编及运行1.实验目的和要求1、熟悉汇编程序的汇编、连接、执行过程2、生成LST文件,查看LST文件3、生成OBJ文件,修改语法错误4、生成EXE文件5、执行2.实验的原理和主要仪器设备IBM—PC机及其兼容机实验的软件环境是:操作系统:DOS 2.0以上;调试程序:;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引用程序:CREF.EXE(可有可无)。

3.实验内容及实验数据记录1、将数据段输入,取名1.txt,保存在MASM文件夹下。

生成LST文件,(不必连接、运行)用EDIT查看1.LST文件。

试回答:DA1,DA2的偏移量分别是多少?COUNT的值为多少?DA TA SEGMENTORG 20HNUM1=8NUM2=NUM1+10HDA1 DB ‘IBM PC’DA2 DB 0AH, 0DHCOUNT EQU $-DA1DATA ENDSEND2、输入有错误的文件,修改错误语句。

(MASM没有出现错误即可。

不必连接、运行。

)DA TA SEGMENTV AR1 DB 0, 25, ODH, 300V AR2 DB 12H, A4H, 6BHV AR3 DB ’ABCDEF’V AR4 DW 1234H, 5678HV AR5 DW 10H DUP(?)DATA ENDSCODE SEGMENTASSUME CS: CODE, DE: DA TABEING MOV AX, DA TAMOV DS, AXLEA SI, V AR5MOV BX, OFFSET V AR2MOV [SI], 0ABHMOV AX, V AR1+2MOV [BX], [SI]MOV V AR5+4, V AR4MOV AH, 4CHINT 21HCODE ENDSEND START3、输入正确的程序,汇编、连接、运行STACKS SEGMENT STACKDW 128 DUP(?)STACKS ENDSDATAS SEGMENTSTRING DB ‘WELCOME!’, 13, 10, ‘$’DATAS ENDSCODES SEGMENTASSUME CS: CODES, DS: DATASSTART:MOV AX, DA TASMOV DS, AXLEA DX, STRINGMOV AH, 9INT 21HMOV AH, 4CHINT 21HCODES ENDSEND START4.操作方法及实验步骤编写各代码并存储为源程序asm文件,对其进行汇编、连接。

汇编-循环与分支程序设计

汇编-循环与分支程序设计

汇编-循环与分支程序设计循环与分支程序设计----------1.引言在汇编语言中,循环和分支是编写和优化程序中常用的技术。

循环用于重复执行一段代码,而分支用于根据条件跳转到不同的代码段。

本文将介绍如何在汇编语言中实现循环和分支以及如何优化这些代码段。

2.循环程序设计2.1.while循环在汇编语言中,while循环可以使用条件跳转指令(如jmp、jz、jnz等)来实现。

以下是一个简单的while循环的汇编代码示例:.datacount db 10.codemn procmov al, 0loop_start:cmp al, countjge loop_end。

循环内容inc aljmp loop_startloop_end:。

循环结束后的代码2.2.for循环在汇编语言中,for循环可以使用计数器和条件跳转指令来实现。

以下是一个简单的for循环的汇编代码示例:.datacount db 10.codemn procmov al, 0loop_start:cmp al, countjge loop_end。

循环内容inc aljmp loop_startloop_end:。

循环结束后的代码mn endp3.分支程序设计3.1.if语句在汇编语言中,if语句可以通过条件跳转指令来实现。

以下是一个简单的if语句的汇编代码示例:.dataflag db 1.codecmp flag, 1jne else。

if语句的真正内容jmp endifelse:。

else语句的内容endif:。

if语句结束后的代码mn endp3.2.switch语句在汇编语言中,switch语句可以通过多个条件跳转指令来实现。

以下是一个简单的switch语句的汇编代码示例:.datacase db 2.codemn proccmp case, 1je case1cmp case, 2je case2jmp case_defaultcase1:。

汇编-循环与分支程序设计精简版范文

汇编-循环与分支程序设计精简版范文

汇编-循环与分支程序设计汇编-循环与分支程序设计循环程序设计在汇编语言中,循环可以通过使用跳转指令来实现。

常见的循环结构有while循环、do-while循环和for循环。

while循环while循环是最基本的循环结构,它的语法形式如下:while(condition)statement其中,condition是一个条件表达式,通常使用比较指令(如CMP)来判断。

如果条件满足,则执行循环体中的语句,然后判断条件,如果仍然满足,则执行循环体,直到条件不满足为止。

do-while循环do-while循环与while循环的区别在于,执行循环体中的语句,然后再判断条件是否满足。

它的语法形式如下:dostatementwhile(condition)for循环for循环是一种特殊的循环结构,它的语法形式如下:for(initialization; condition; update)statement其中,initialization用于初始化循环控制变量,condition 用于判断循环是否继续,update用于更新循环控制变量的值。

for 循环的执行顺序是:先执行initialization,然后判断condition 是否满足,如果满足则执行循环体中的语句,然后执行update,判断condition,以此类推,直到condition不满足为止。

分支程序设计分支是程序中常用的一种控制结构,它可以根据条件的不同执行不同的代码块。

if语句if语句是一种最基本的分支结构,它的语法形式如下:if(condition)statement1elsestatement2其中,condition是一个条件表达式,如果满足则执行statement1,否则执行statement2。

switch语句switch语句是一种多分支结构,它的语法形式如下:switch(expression){case value1:statement1;break;case value2:statement2;break;default:statementN;}switch语句对expression进行求值,然后根据求值结果的值与各个case后面的value进行比较,如果匹配成功,则执行对应的statement,否则执行default后的statement。

汇编程序设计分支与循环混合结构程序设计实验报告_图文_百.

汇编程序设计分支与循环混合结构程序设计实验报告_图文_百.

《汇编语言程序设计》实验报告实验六分支与循环混合结构程序设计实验目的1、掌握利用 .IF 语句实现分支程序的设计方法;2、掌握利用 .REPEAT 语句实现循环程序的设计方法;3、掌握 DIV 指令的使用特点;4、掌握地址表的定义和使用方法。

实验内容实现成绩单的分等级统计功能, 在数据段中有成绩单的定义, 并包含有若干个分数, 程序根据成绩单数据的个数循环分别统计个分数段成绩的个数, 最后输出个等级段的分数个数。

要求:成绩单数据少于 100字节,输出的每个档次统计值按两位数显示。

实验步骤1、编辑下列程序 :.model small.stack.dataHAN DB 42,62,68,70,79,82,85,90,95,99,66,88,78,90,98,200 ;成绩单count equ $-han ;记录数据个数MEM DB 6 dup(0 ;分别用于存放各分数段成绩的个数scoree db 10,13,'Score "E" count is:$' ;定义各分数段的提示信息scored db 10,13,'Score "D" count is:$'scorec db 10,13,'Score "C" count is:$'scoreb db 10,13,'Score "B" count is:$'scorea db 10,13,'Score "A" count is:$'scoreo db 10,13,'Score "Other" count is:$'table dw scoreo,scoree,scored,scorec,scoreb,scorea ;定义地址表.code.startupMOV CX,countmov si,0begin: ;统计各个分数段的成绩个数.if han[si]<60add mem[1],1.elseif han[si]>=60 && han[si]<=69add mem[2],1.elseif han[si]>=70 && han[si]<=79add mem[3],1.elseif han[si]>=80 && han[si]<=89add mem[4],1.elseif han[si]>=90 && han[si]<=99add mem[5],1.elseadd mem[0],1.endifinc siloop beginmov cx,6.repeat ;开始循环mov si,cxdec siadd si,si ;计算地址表中对应地址项与提示信息的对应关系 mov dx,table[si] mov ah,9int 21h ;显示提示信息xor ah,ahmov si,cxMOV al,mem[si-1] ;读出统计好的一个数值(此处只能处理 99以下的 mov bl,10 div bl ;ax/10mov mem[si-1],ah ;AH为余数是个位 , 暂时存放回该内存单元mov dl,AL ;al为商是十位add dl,30h ;转换为 ASCII 码MOV AH,2INT 21H ;以十进制形式显示十位MOV AH,2mov dl,mem[si-1]add dl,30hINT 21H ;再显示个位.untilcxz ;CX自动减 1, 减到 0结束循环.exit 0END图 6-1 编辑程序图 6-2 汇编成功2、程序汇编通过后,运行程序察看输出结果。

汇编实验3 分支程序实验

汇编实验3 分支程序实验

贵 州 大 学 实 验 报 告 纸系 别电科系班 级电科091姓 名学号课 程 名 称 微型计算机技术成 绩 评 定教师签名实 验 时 间2011年11月 27日一.实验题目:分支程序实验二.实验内容:1、编写一个程序,显示AL 寄存器中的两位十六进制数。

2、编写一个程序,判别键盘上输入的字符;若是0-9字符,则显示之;若为A-Z 或a-z 字符,均显示“c”;若是回车字符<CR>(其ASCII 码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入。

三.实验目的:1、掌握分支程序的设计方法。

2、掌握利用DEBUG 修改参数、检查结果的方法。

3、掌握汇编语言源程序的编辑、汇编、连接及调试过程。

四.实验步骤:1、用EDIT 或其它编辑软件,编写.ASM 源程序,例如HEXASC.ASM 及DSPKEY.ASM 。

以上分别是HEXASC.ASM 及DSPKEY.ASM 源程序代码。

2、对其进行汇编及连接,产生.EXE 文件。

如下分别为HEXASC 、DSPKEY 程序汇编、连接过程。

3、对.EXE 文件进行调试运行。

(1)用DEBUG调试运行,学会的方法。

修改修改AL 内容:从上图可知实现了对AL 修改,把AL=00改为了AL=55.(2)对DSPKEY.EXE 键入不同的字符,分别进行调试。

键入数字时:键入字母时:(3)在MS-DOS下运行这两个.EXE文件。

五.实验总结1、通过此次实验学习及掌握分支程序的设计方法。

2、通过此次实验掌握利用DEBUG修改参数、检查结果的方法。

3、通过此次实验掌握汇编语言源程序的编辑、汇编、连接及调试过程。

4、但在此次实验前未熟练练习编写源程序,对编程序要求未能达到。

贵州大学实验报告附页贵州大学实验报告附页贵州大学实验报告附页。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

福建农林大学金山学院实验报告
系:机电与信息工程系专业:电子信息工程年级:2009级
姓名:黄健学号: 092230012 实验课程:汇编语言
实验室号:____1#605____实验设备号: H1 实验时间: 2011.05.16 指导教师签字:成绩:
实验三分支循环程序设计
1.实验目的和要求
1、学习调试程序,查找逻辑错误;
2、学习分支语句的编程和调试;
3、学习循环语句的编程和调试。

2.实验环境
实验的硬件环境是:
IBM—PC机及其兼容机
实验的软件环境是:
操作系统:DOS 2.0以上;调试程序:;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;
交叉引用程序:CREF.EXE(可有可无)。

3.实验内容及实验数据记录
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单元中。

4.算法描述及实验步骤
1.编写源程序:用edit或记事本输入各段,并存储成源程序,扩展名为.ASM
2.对源程序进行汇编、连接
(1)在dos状态下,进入masm目录
(2)命令:masm文件名
(3)在系统出现的提示中输入:
Object filename[.obj]:按回车键。

Source listling[nul.lst]:输入:文件主名,生成.lst文件,也可以不生成,直接按回车键。

.lst文件用于查看编译为目标文件的过程中产生的中间结果。

Cross-reference[nul.crf]:按回车键。

(4)如果系统没有提示出错。

那么汇编过程就完成了。

如果提示错误则应用edit 打开源文件进行修改,然后在重复(2)和(3)步骤。

(5)输入:link文件主名
Run file [.exe]: 按回车键
List file[nul.map]: 按回车键
Libraries[.lib]:按回车键
(6)没有提示错误,汇编过程就结束了,产生了.Exe可执行文件。

如果出现“no stack segment”的错误警告,不用理会。

3.执行程序:在dos提示符下直接文件主名就可以执行文件了。

程序执行后,有的会显示结果,有的可能执行后什么结果也没有,是因为程序中没有显示命令。

5.调试过程
1.
分析错误原因:由于题目中给出的数字4, -2, -6, 0, 5, 67, 8, -3, 5, 6,实际只有6个正数,所以上述的程序有误,且因为这几个数其中含有有符号数,要把程序中的JBE NEXT
改为JLE NEXT
改正后:
2.
分析错误原因:由于没有使SI指向下一个字符的指令,所以要在NEXT: LOOP L1前加指令INC SI。

改正后如图:
3.编程并运行后结果为如图:
6. 实验结果
1.M中的结果为6
2.修改程序后得到正确的试验结果
3.编写程序并运行,实验结果与实际十个字节数中的0个数一致。

7. 总结
通过本次的上机操作我掌握了学习调试程序,查找逻辑错误的方法,和分支语句的编程和调试,也学习了循环语句的编程和调试的步骤。

在本次上机实际操作的过程中遇到的一些细节问题在老师的耐心指导与纠正下基本掌握了,希望经过下次的上机操作弄够充分理解并运用。

附录:
3. DSEG SEGMENT
BUF D B 4, 0, 0, 0, 5, 67, 8, -3, 5, 6
RESULT DB ?
DSEG ENDS
CSEG SEGMENT
ASSUME CS: CSEG, DS: DSEG START: MOV AX, DSEG
MOV DS, AX
MOV CX, 10
MOV AL, 0
LEA S I, BUF
L1: MOV BL, [SI]
CMP BL, 0
JNZ NEXT
INC AL
NEXT: INC SI
LOOP L1
MOV result, AL
MOV AL, 0
MOV AH, 4CH
INT 21H
CSEG ENDS
END START。

相关文档
最新文档