微机原理与汇编语言试验3循环程序设计试验讲解_第1页
微机原理与汇编语言试验3循环程序设计试验讲解_第2页
微机原理与汇编语言试验3循环程序设计试验讲解_第3页
微机原理与汇编语言试验3循环程序设计试验讲解_第4页
微机原理与汇编语言试验3循环程序设计试验讲解_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微机原理与汇编语言实验报告姓名xxx学号xxxxxx专业班级计科 x 班课程名称微机原理与汇编语言实验日期2014.10.22实验名称循环程序设计实验成绩一、实验目的1、掌握循环程序的设计方法。2、掌握比较指令、转移指令和循环指令的使用方法。3、进一步掌握调试工具的使用方法。二、实验内容1、实验原理(1) 键盘输入的十进制数如 368 在计算机中是以 33H,36H, 38H 形式存放的,如何将它们转换为 一个二进制数 101110000B ,以便对累加循环的循环次数进行控制是本程序首先要解决的问题(2) 累加结果为一个 16 位的二进制数,为了显示结果,必需把它们转换为十进制数2 、实验步骤

2、(1)流程图(2)实验源码.model small.stack ; 定义堆栈段 .data ; 定义数据段inf1 db Please input a number(1-627):$inf2 db 0ah, 0dh, 1+2+$ibuf db 7, 0, 6 dup(0)obuf db 6 dup(0).codestart: mov ax, data mov ds, axmov dx, offset inf1; 将屏幕输入的十进制数 ( 存放于 ibuf) 数存储于 ax 中mov ah, 09h int 21h mov dx, offset ibuf mov ah, 0Ah int 21h

3、mov cl, ibuf+1 mov ch, 0 mov si, offset ibuf+2 mov ax, 0 loop1: mov dx, 10 mul dx and byte ptr si, 0Fh add al, siadc ah, 0 inc si loop loop1mov cx, ax;mov ax, 0 mov bx, 1loop2: add ax, bx inc bx loop loop2mov di, offset obuf+6 ; 存于 obufmov byte ptr di, $ mov bx, 10loop3: mov dx, 0 div bx add dl, 30h

4、 dec di mov di, dl or ax, ax jnz loop3 dec di mov di, =mov dx, offset inf2 ; mov ah, 09h int 21h mov cl, ibuf+1 ; mov ch, 0 mov si, offset ibuf+2 loop4: mov dl, siadd dl, 30h inc si mov ah, 02h int 21h loop loop4 mov dx, di mov ah, 09h int 21h计算 1+2+3+.+n将 ax 中的二进制数转换为十进制数并以ascii 的形式结果输出显示 nmov ax,

5、4c00hint 21hend start实验习题 1 源码:; multi-segment executable file template.model small ; 定义程序的存储模式 (small 表示小型模式 ) .stack ; 定义堆栈段.data ; 定义数据段inf1 db 0ah, 0dh, 1+2+$除了六位数字外还要有一个 =号obuf1 db 6 dup(0) obuf2 db 7 dup(0) ;.codestart: mov ax, data mov ds, axmov dx, offset inf1mov ah, 09hint 21h输出 1+2+mov ax,

6、 0计算 1+2+3+.+nmov bx, 1 loop1: add ax, bxinc bxcmp ax, 60000 jbe loop1push axpush bx pop cxmov di, offset obuf1+5; 将 cx 二进制数转换为十进制数并以 ascii 的形式存于 obuf1 mov byte ptr di, $ mov ax, cx mov bx, 10loop2: mov dx, 0 div bx add dl, 30h dec di mov di, dl or ax, ax jnz loop2mov dx, di ; 输出 n mov ah, 09h int 2

7、1hpop ax mov di, offset obuf2+6; 将 ax 中的二进制数转换为十进制数并以ascii 的形式存于 obuf2mov byte ptr di, $ mov bx, 10loop3: mov dx, 0 div bx add dl, 30h dec di mov di, dlor ax, ax jnz loop3 dec dimov di, =输出结果mov dx, di mov ah, 09h int 21hmov ax, 4c00h int 21hend start 实验习题 2 源码:; multi-segment executable file templa

8、te.model small ; 定义程序的存储模式 (small 表示小型模式 ) .stack ; 定义堆栈段 .data ; 定义数据段inf1 db Please input six num:, 0ah, 0dh, $ inf2 db sum:$obuf0 db 0ah, 0dh, $ibuf db 5, 0, 4 dup(0)obuf db 6 dup(0).codestart: mov ax, data mov ds, axmov dx, offset inf1 ; 输出提示信息 mov ah, 09hint 21hmov bx, 6 ; loop1: mov dx, offset

9、 ibufmov ah, 0Ah设置外层循环次数int 21hmov cl, ibuf+1 ;mov ch, 0mov si, offset ibuf+2mov ax, 0 loop2: mov dx, 10 ;mul dx设置内层循环次数将屏幕输入的十进制数 ( 存放于 ibuf) 转化为二进制数存储于 ax 中and byte ptrsi, 0Fh add al, si adc ah, 0 inc si loop loop2 push ax ; mov dx, offset obuf0 ;将结果入栈保存 回车换行4mov ah, 09hint 21h dec bx cmp bx, 0 jn

10、z loop1 mov cx, 6mov ax, 0 loop3: pop bxadd ax, bxloop loop3 mov di, offset obuf+5; 将 ax 中的二进制数转换为十进制数并以ascii 的形式存于 obufmov byte ptr di, $ mov bx, 10loop4: mov dx, 0div bx add dl, 30h dec di mov di, dl or ax, ax jnz loop4mov dx, offset inf2; 输出提示信息mov ah, 09hint 21h mov dx, di mov ah, 09h int 21hmov

11、 ax, 4c00h int 21hend start实验习题 3 源码:; multi-segment executable file template.(small 表示小型模式 ).model small ; 定义程序的存储模式.stack; 定义堆栈段.data ; 定义数据段inf db Please input a num(0-65535):$ inf2 db 0ah, 0dh, The num of 1:$ ibuf db 6, 0, 5 dup(0) obuf db 6 dup(0).codestart: mov ax, datamov ds, axmov es, axmov

12、ah, 09h ; 输出提示信息 Please input a num: mov dx, offset infint 21hmov ah, 0Ah; 接收一个无符号十进制整数(小于65536)mov dx, offset ibufint 21h mov ax, 0ax 中mov cl, ibuf+1;将屏幕输入的十进制数 ( 存放于 ibuf) 转化为二进制数存储于mov ch, 0mov si, offset ibuf+2loop1: mov dx, 10mul dxand byte ptrsi, 0Fhadd al, siadc ah, 0inc siloop loop1mov bx, 0

13、 loop2: shr ax, 1adc bx, 0 cmp ax, 0 jnz loop2mov ax, bxmov di, offset obuf+5;将ax 中的二进制数转换为十进制数并以 ascii 的形式存于 obuf mov byte ptr di, $ mov bx, 10loop3: mov dx, 0mov ah, 09hmov dx, offset inf2 int 21hmov ah, 09hmov dx, di int 21hdiv bx add dl, 30h dec di mov di, dl or ax, ax jnz loop3输出提示信息 The num of

14、 1:将统计结果在屏幕上显示出来mov ax, 4c00hint 21hend start实验习题 4 源码:; multi-segment executable file template.model small ; 定义程序的存储模式 (small 表示小型模式 ).stack; 定义堆栈段.data; 定义数据段N equ 5ibuf db 4, 0, 3 dup(0)inf1 db Please input N num(0-255):, 0ah, 0dh, $inf2 db Sort:, 0ah, 0dh, $buf db N dup(0)obuf2 db 4 dup(0)obuf d

15、b 0ah, 0dh, $.codestart: mov ax, datamov ds, axmov dx, offset inf1 ; 输出提示信息mov ah, 09hint 21hmov di, offset bufmov bx, N;loop1: mov dx, offset ibufmov ah, 0Ahint 21h mov cl, ibuf+1 mov ch, 0mov si, offset ibuf+2设置外层循环次数设置内层循环次数mov ax, 0loop2: mov dx, 10 ; 将屏幕输入的十进制数 ( 存放于 ibuf) 转化为二进制数存储于 mul dxand

16、byte ptrsi, 0Fhadd al, siinc siloop loop2mov di, alinc dimov dx, offset obuf ; 回车换行mov ah, 09hint 21hdec bxcmp bx, 0jnz loop1ax 中mov bx, N-1比较大小mov cx, bx mov dx, bx mov di, offset buf loop3: mov si, di mov al, di inc si loop4: cmp si, al jbe loop5 mov al, si mov ah, di mov si, ah mov di, al loop5:

17、inc si loop loop4 dec dx mov cx, dx inc di dec bx cmp bx, 0 jne loop3mov dx, offset inf2 ; 输出提示信息 mov ah, 09h int 21h; 结果输出 mov cx, N mov si, offset bufloop6: mov di, offset obuf2+3;将 buf 中的二进制数转换为十进制数并以 ascii 的形式存于 obuf2, 并输出 mov byte ptr di, $ mov bx, 10 mov al, si mov ah, 0loop7: mov dx, 0 div bx

18、 add dl, 30h dec di mov di, dl or ax, ax jnz loop7 mov dx, di mov ah, 09h int 21h mov dx, offset obuf mov ah, 09h int 21h inc si loop loop6mov ax, 4c00hint 21h( 2)实验习题 1程序流程图:93)实验习题 210e-匚uuoJasole-nE4亠I +OE=Lly AIJdu二*C-EEE4P srKOsumajgQ-nbullJnn0HHWrrnr-lr-lrlr.卜EIIblEIINlU|T|O1 Q1knPU-s 锂A-00寸 6

19、1:IE呈1+En匸X -M-Hnd 匚flCXJAfggicxir-ooi_nr-o- IgwJagL-lEE-nEE f三、实验总结1 )通过本次实验我掌握循环程序的设计方法,掌握比较指令、转移指令和循环指令的使用方法,进 一步掌握了调试工具的使用方法。2)在实验过程中我也遇到过许多困难,我觉的最大的困难时汇编难于调试,特别是代码写的很多的 时候,某处的错误很难能够查的出来。我的办法是每写一段程序就调试一下是否是正确的,比如说本 次的实验大致可分为五个功能片段,第一个是输出信息,第二个是接受屏幕上的数字串,第三个是将 数字串转化为二进制数,第四是累加求和,第五是将二进制数转化为十进制数形式的数字串。可以用 分开来调试的方法,通过一条功能后在进行下一条功能的书写与调试工作。另外书写注释也是非常重 要的,只有这样才能利于后来的阅读。3)本次实验中经常会遇到寄存器不够用的情况,因为cx用于计数, dx 有时会用于存储向屏幕输出字符串的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论