汇编语言程序设计上机实验报告(实验三)-循环程序设计
- 格式:doc
- 大小:45.00 KB
- 文档页数:5
汇编实验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) 掌握循环程序的设计方法;(3) 熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。
二、实验内容1.已知以BUF为首地址的字存储区中存放着8个有符号二进制数,是编写程序将其中大于等于0的数依次送BUF1为首地址的字存储区中,小于0的数依次送以BUF2为首地址的字存储区中。
同时将大于等于0的数的个数送A字变量,将小于0数的个数送B字变量。
2.设STR字符串是以0结尾。
试编写一个把字符串中的所有大写字母改为小写字母的程序并将转换后的字符串显示输出。
3.试编程从自然数1开始累加,直到累加和大于5050为止,统计被累加的自然数的个数,并把统计的个数送入COUNT单元,累加和送入TOTAL单元。
三、算法描述流程图实验内容1、2、3的流程图分别为图1、图2、图3。
图1 图2 图3四、实验步骤1.已知以BUF为首地址的字存储区中存放着8个有符号二进制数,是编写程序将其中大于等于0的数依次送BUF1为首地址的字存储区中,小于0的数依次送以BUF2为首地址的字存储区中。
同时将大于等于0的数的个数送A字变量,将小于0数的个数送B字变量。
1)输入源程序:DATA SEGMENTBUF DW 23,123,-12,-210,45,0,90,-453BUF1 DW 8 DUP(0)BUF2 DW 8 DUP(0)A DW ?B DW ?DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART: MOV AX, DATAMOV DS, AXLEA BX, BUFLEA SI, BUF1LEA DI, BUF2MOV A,0MOV B,0MOV CX,8L0: MOV AX,[BX]CMP AX,0JGE L1MOV [DI],AXADD DI,2INC BJMP NEXTL1: MOV [SI],AXADD SI,2INC ANEXT: ADD BX,2LOOP L0MOV AH, 4CHINT 21HCODE ENDSEND START2)运行程序。
一、实验目的1. 理解循环程序设计的基本原理和方法。
2. 掌握不同编程语言中循环结构的实现方式。
3. 学会使用循环程序解决实际问题。
二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.8.03. 编程工具:PyCharm三、实验内容1. 循环结构的基本概念循环结构是程序设计中的一种常见结构,用于重复执行一段代码。
在Python中,常见的循环结构有while循环、for循环和嵌套循环。
2. while循环while循环是一种基于条件的循环结构,当条件满足时,循环体中的代码会被重复执行。
实验示例:```pythoni = 0while i < 5:print(i)i += 1```3. for循环for循环是一种基于迭代对象的循环结构,通常用于遍历列表、元组、字符串等可迭代对象。
实验示例:```pythonfor i in range(5):print(i)```4. 嵌套循环嵌套循环是指在循环体内部再嵌套一个循环结构。
实验示例:```pythonfor i in range(3):for j in range(3):print(f"i={i}, j={j}")```5. 循环控制语句循环控制语句用于改变循环的执行流程,包括break、continue和pass。
实验示例:```pythonfor i in range(5):if i == 3:breakprint(i)```6. 循环程序解决实际问题(1)计算1到100的偶数之和```pythonsum = 0for i in range(1, 101):if i % 2 == 0:sum += iprint(sum)```(2)判断一个整数是否为水仙花数```pythonnum = int(input("请输入一个整数:")) temp = numsum = 0while temp > 0:digit = temp % 10sum += digit 3temp //= 10if sum == num:print(f"{num}是水仙花数")else:print(f"{num}不是水仙花数")```四、实验总结通过本次实验,我对循环程序设计有了更深入的了解。
实验三分支、循环程序设计实验一、实验目的1.掌握分支程序的结构。
2.掌握分支程序的设计、调试方法。
3. 掌握循环结构程序设计、调试方法的方法。
二、实验设备TDN86/88教学实验系统一台。
三、实验内容及步骤1.已知有一个长x个字的数据块,存放在以0202H:1000H开始的存储区域内。
试编写一个完整的汇编语言程序,将该数据块复制到以0202H:1008H开始的存储区内。
(根据x的大小,判断从首地址,还是末地址传送)实验步骤:(1)输入程序并检查无误,经汇编、连接后装入系统。
(2)在0202H:1000H开始的X个单元中依次存入数据,即:E0202:1000↙,并输入01、02、03、04、05、06、07、08……。
(3)G=0000:2000↙,运行以上程序(4)D0202:1008↙,显示结果为:01、02、03、04、05、06、07、08……。
(5)反复试几组数,考察程序的正确性。
2.在ADDR开始的单元中存放着一个字,将字中1的个数存入COUNT单元中。
算法:要测出1的个数就应逐位比较,可根据最高有效位是否为1来计数,然后用移位的方法把各位数逐次移到最高位去。
可以用测试字是否为0来作为结束条件,这样可缩短程序的执行时间,对不同的字循环次数不同,因此采用当型循环结构。
实验步骤(1)编制实验程序输入程序并检查无误,经汇编、连接后装入系统。
(2)用U0000:2000查看 MOV AX,XXXX(DATA)语句,即得到数据段段地址DS=XXXX用E命令EXXXX:0000↙,输入数据39,A3(3)G=0000:2000↙,运行实验程序。
(4)D XXXX:0002↙,显示应为结果________。
(5)反复试几组数,考察程序的正确性。
3.在当前数据段(DS决定),偏移地址为DATAB开始的顺序20个单元中,存放着某班80名同学某门考试的成绩。
编写程序统计大于等于90分;80-89分;70-79分;60-69分;小于60分的人数各位多少,并将结果放在同一数据段,偏移地址为BTRX开始的顺序单元中。
汇编上机实验报告实验目的:通过进行汇编语言上机实验,掌握汇编语言的基本语法和编程技巧,培养汇编程序设计能力。
实验内容:实验一:汇编程序的简单输入输出1.编写一个汇编程序,要求从键盘输入两个整数,然后将其相加,并将结果输出到屏幕上。
2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。
实验二:汇编程序的条件跳转1.编写一个汇编程序,要求从键盘输入一个整数,判断其是否大于10,若是,则将其打印到屏幕上;否则,将其乘以5并打印到屏幕上。
2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。
实验三:汇编程序的循环1.编写一个汇编程序,要求计算1到10的累加和,并将结果打印到屏幕上。
2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。
实验四:汇编程序的数组操作1.编写一个汇编程序,要求定义一个长度为10的数组,并将数组中的值初始化为0,然后利用循环将数组中的每一个元素加1,并将每个元素的值打印到屏幕上。
2. 利用调试器(如DOSBox或emu8086)执行并调试程序,观察程序运行过程和实际输出结果。
实验结果:实验一:汇编程序的简单输入输出编写的汇编程序通过键盘输入两个整数,实现了相加并将结果输出到屏幕上的功能。
程序运行正常,输出结果与预期一致。
实验二:汇编程序的条件跳转编写的汇编程序通过键盘输入一个整数,根据条件判断,实现了将输入数大于10时打印在屏幕上,否则将其乘以5并打印在屏幕上的功能。
程序运行正常,输出结果与预期一致。
实验三:汇编程序的循环编写的汇编程序通过循环计算1到10的累加和,并将结果打印在屏幕上。
程序运行正常,输出结果与预期一致。
实验四:汇编程序的数组操作编写的汇编程序通过定义一个长度为10的数组,并将数组中的值初始化为0,利用循环将数组中的每一个元素加1,并将每个元素的值打印到屏幕上。
汇编语言程序设计上机实验报告(实验三)一、实验题目、内容及要求:一、实验题目、内容及要求:题目:循环程序设计内容:编写一程序,要求从键盘接收一个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,则循环至标号,否则顺序执行。
汇编语言程序设计实验报告三(子程序设计实验)汇编语言程序设计实验报告三(子程序设计实验)实验目的掌握主程序与子程序之间的调用关系及其调用方法。
掌握子程序调用过程中近程调用与远程调用的区别。
熟练掌握码型变换的程序。
实验内容从键盘输入二位非压缩BCD数,存入AX寄存器中,编程实现将其转换为二进制数,并在屏幕上显示。
要求码型转换程序用远程子程序编写,字符显示用近程子程序编写。
数据可循环输入,遇‘00’结束。
实验准备预习子程序设计的基本方法,根据实验内容要求编写出实验用程序。
熟悉键盘输入和字符显示的程序段的编制。
实验步骤编辑、汇编源程序,生成可执行文件。
执行程序,检查输入、输出结果,看是否正确。
如不正确,用DEBUG检查,修改源程序,再汇编、运行,直到程序正确为止。
用DEBUG的T命令或P命令跟踪程序的执行,观察在远程和近程调用过程中,堆栈的变化情况。
实验报告要求分析近程调用和远程调用的主要区别。
用DEBUG命令观察执行过程有何不同。
分析实验结果及所遇到的问题的解决方法。
程序流程图开始TRAN程序标准序开始读入十进制数据放AX中AXAXAND0F0FH是00?YBLALN调用转换子程序结束AL左移3位回车、换行BL左移1位于ALAL+BL主程序流程图ALAL+AHRET转换子程序TRAN流程图程序清单STASEGMENTSTACK’STACK’DB100DUP(0)STAENDS GSAGSEGMENTPARA‘CODE’ASSUMECS:CSAG MAINPROCFARSTRAT:PUSHDSSUBAX,AXPUSHAXREV:MOVAH,1INT21HMOVBL,ALINT21HMOVAH,ALMOVAL,BLCMPAX,3030H JEENDTRAN CALLNEARPTRTRAN CALLFARPTRCON MOVAL,0DH CALLFARPTRDISP MOVAL,0AH CALLFARPTRDISP MOVAL,0AH CALLFARPTRDISP JMPREV ENDTRAN:RET MAINENDP TRANPROCNEAR ANDAX,0F0FHMOVBL,ALMOVBL,ALMOVCL,3SHLAL,CLMOVCL,1SHLBL,CLADDAL,BLADDAL,AHRETTRANENDPCSAGENDS CSBGSEGMENTPARA’CODE’ASSUMECS:CSBG CONPROCFARPUSHAXMOVCL,4 SHRAL,CL ADDAL,30H CMPAL,39H JBECON2 ADDAL,7CON2:PUSHAX MOVAL,0DH CALLFARPTRDISP MOVAL,OAH CALLFARPTRDISP POPAX CALLFARPTRDISP POPAX ANDAL,0FHADDAL,30H CMPAL,39H JBECON1ADDAL,7CON1:CALLFARPTRDISP RETCONEDNP DISPPROCFAR PUSHBXMOVBX,0MOVAH,14INT10HPOPBXRETDISPENDPCSBGENDS ENDSTART。
汇编语言程序设计实验报告班级:计科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. 常见的循环结构在实际编程中,常见的循环结构包括`for`循环、`while`循环和`do-while`循环。
3.1 `for`循环`for`循环是一种在已知循环次数的情况下使用的循环结构。
它由三个部分组成:循环变量初始化、循环条件和循环递增或递减操作。
以下是`for`循环的语法示例:markdownfor (初始化; 条件; 递增或递减) {// 循环体}3.2 `while`循环`while`循环是一种在未知循环次数的情况下使用的循环结构。
它只由循环条件组成,循环体会根据循环条件的真假决定是否执行。
以下是`while`循环的语法示例:markdownwhile (条件) {// 循环体}3.3 `do-while`循环`do-while`循环是一种至少执行一次循环体的循环结构。
它由循环体和循环条件组成,循环体会先执行一次,然后根据循环条件的真假决定是否继续执行。
以下是`do-while`循环的语法示例:markdowndo {// 循环体} while (条件);4. 循环程序设计的应用循环程序设计在实际编程中有广泛的应用,常用于处理重复性任务和迭代计算等场景。
以下是几个常见的循环应用实例:4.1 计算累加和markdownint sum = 0;for (int i = 1; i <= 100; i++) {sum += i;}4.2 查找数组中的最大值markdownint array = {10, 5, 8, 3, 20};int max = array[0];for (int i = 1; i < array.length; i++) { if (array[i] > max) {max = array[i];}}4.3 打印九九乘法表markdownfor (int i = 1; i <= 9; i++) {for (int j = 1; j <= i; j++) {System.out.print(i + \。
实验三循环程序设计实验学生姓名:何茂杰学号: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。
汇编语言程序设计实验
实验三循环程序设计
班级:姓名:学号:得分:
一. 实验目的:
二. 实验内容:
1.编程实现:从一个字节字符串中查找字符‘#’,如果查到则将其偏移地址送
到存储单元addr中,否则将0送到addr中。
2.编程实现:统计存储下列给定字符串的数据块中所有的“0”位的个数,并将
统计的结果送入COUNT存储单元。
“十七大的主要议程是:听取和审议党的十六届中央委员会的报告,审议中央纪
律检查委员会的工作报告,审议并通过《中国共产党章程(修正案)》,选举党
的十七届中央委员会,选举中央纪律检查委员会。
”
三. 实验仪器: PC 机
四. 实验步骤:
五.实验心得:。
.合肥工业大学计算机与信息学院实验报告课程:汇编语言程序设计专业班级:****************学号:**********姓名:*****目录实验一··3实验二··7实验三··12实验四··22实验一Debug程序的使用一.实验目的1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。
2、掌握8086/8088的寻址方式及多字节数据的处理方法。
二.实验内容1、利用DEBUG程序中的“E”命令,将两个多字节数“003F1AE7H”和“006BE5C4H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。
2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H 单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。
要求:本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。
三.实验过程和程序实验内容一:e ds:0200 E7 1A 3F 00e ds:0204 C4 E5 6B 00实验内容二:(1)直接寻址方式MOV AX,[0200]MOV BX,[0202]ADD AX,[0204]ADC BX,[0206]MOV [0208],AXMOV [020A],BX(2)寄存器间接寻址方式MOV SI,0200HMOV DI,0204HMOV BX,0208HMOV AX,[SI]MOV DX,[SI+2]ADD AX,[DI]ADC DX,[DI+2]MOV [BX],AXMOV [BX+2],DX四.实验结果(包括必要的截图)实验内容一:输入数据:显示数据:实验内容二:(1)直接寻址方式程序段编辑:反汇编:运行:结果在DS:0208 单元中为00AB00ABH(2)寄存器间接寻址方式程序段编辑:反汇编:运行:结果高字存放在dx中,低字存放在ax中(结果为00AB00ABh)五.实验体会通过本实验,实践debug程序中的命令,并在debug下调试运行汇编语言源程序。
微机原理与汇编语言实验实验三循环程序设计实验一实验目的1、掌握循环程序的设计方法。
2、掌握比较指令、转移指令和循环指令的使用方法。
3、进一步掌握调试工具的使用方法。
二实验预习要求1、复习比较指令、条件转移指令和循环指令。
2、复习循环程序的结构、循环控制方法等知识。
3、读懂“三实验内容”中给出的将十进制数转换为二进制数以及将二进制数转换为十进制数的程序。
4、根据“三实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。
5、从“四实验习题”中任选一道题目,编写源程序,以便上机调试。
三实验内容计算1+2+……n=?,其中n通过键盘输入。
要求在屏幕上提供如下信息:Please input a number(1 627): ;出现此信息后通过键盘输入一个小于628的无符号整数1+2+…..n=sum;其中n为用户输入的数,sum为所求的累加和程序运行情况如下图所示(说明:图中所运行程序允许累加和不大于一个32位二进制数所能表示的范围)。
1、编程指导(1)键盘输入的十进制数如368在计算机中是以33H,36H,38H形式存放的,如何将它们转换为一个二进制数101110000B,以便对累加循环的循环次数进行控制是本程序首先要解决的问题。
将键盘输入的十进制数转换为二进制数的程序清单如下:.model small.stack.dataINF1 DB "Please input a number (0-65535):$"IBUF DB 6,0,6 DUP(?).codeSTART: MOV AX, @dataMOV DS, AXMOV DX, OFFSET INF1MOV AH, 09HINT 21HMOV DX, OFFSET IBUF ;键入一个十进制数(<65535)MOV AH, 0AHINT 21HMOV CL, IBUF+1 ;十进制数的位数送CXMOV CH, 0MOV SI, OFFSET IBUF+2 ;指向输入的第一个字符(最高位)MOV AX, 0 ;开始将十进制数转换为二进制数AGAIN: M OV DX, 10 ;((0⨯10+a4) ⨯10+…) ⨯10+a0MUL DXAND BYTE PTR [SI], 0FHADD AL, [SI]A DC AH, 0I NC SILOOP AGAINMOV AH, 4CHINT 21HEND START本程序功能:从键盘接收一个无符号十进制整数(小于65535),将其转换为二进制数,转换结果存在AX寄存器中。
汇编语言上机实验报告汇编语言上机实验报告引言:汇编语言是一种底层的计算机语言,通过使用汇编语言,我们可以更加深入地了解计算机的运行原理和底层机制。
本次实验旨在通过上机实践,掌握汇编语言的基本语法和编程技巧,同时加深对计算机底层的理解。
实验目的:1. 学习汇编语言的基本语法和指令集;2. 掌握汇编语言的程序设计和调试方法;3. 加深对计算机底层原理的理解。
实验环境:本次实验使用的是Windows操作系统,并安装了MASM汇编语言开发工具。
实验过程:1. 实验一:Hello World程序我们首先编写一个简单的Hello World程序,用于验证汇编语言的环境是否正常。
通过使用MASM工具,我们可以将源代码汇编成可执行文件,并在命令行中运行。
该程序的功能是在屏幕上输出"Hello World"。
```assembly.model small.stack 100h.datamsg db 'Hello World$'.codemain procmov ah, 09hlea dx, msgint 21hmov ah, 4chint 21hmain endpend main```通过编译、链接和运行,我们可以在屏幕上看到"Hello World"的输出。
2. 实验二:计算两个数的和在这个实验中,我们将学习如何编写一个简单的加法程序。
我们定义两个变量a和b,并将其值相加,然后将结果输出到屏幕上。
```assembly.model small.stack 100h.dataa db 10b db 20sum db ?.codemain procmov al, aadd al, bmov sum, almov ah, 09hmov dl, sumadd dl, 30hint 21hmov ah, 4chint 21hmain endpend main```在屏幕上,我们可以看到输出结果为"30",即10加20的和。