好文档 - 专业文书写作范文服务资料分享网站

微机原理与汇编语言实验循环程序设计实验

天下 分享 时间: 加入收藏 我要投稿 点赞

微机原理与汇编语言 实

姓 名 课程名称 实验名称 xxx 学 号 验

xxxxxx 报告

专业班级 实验日期 成 绩 计科x班 2014.10.22 微机原理与汇编语言 循环程序设计实验 一、实验目的 1、掌握循环程序的设计方法。

2、掌握比较指令、转移指令和循环指令的使用方法。 3、进一步掌握调试工具的使用方法。 二、实验内容 1、实验原理

(1)键盘输入的十进制数如368在计算机中是以33H,36H,38H形式存放的,如何将它们转换为一个二进制数101110000B,以便对累加循环的循环次数进行控制是本程序首先要解决的问题

(2)累加结果为一个16位的二进制数,为了显示结果,必需把它们转换为十进制数 2、实验步骤 (1)流程图 (2)实验源码

开始 .model small

.stack ;定义堆栈段 从键盘输入一个十进制数,并将其转.data ;定义数据段 换为二进制数,存放在AX中 inf1 db \ inf2 db 0ah, 0dh, \

累加循环次数送CX(MOV CX,AX) ibuf db 7, 0, 6 dup(0) AX清0(AX中存放累加和) obuf db 6 dup(0) BX送1(BX存放每次循环累加的数, 每循环一次,BX值加1) .code

ADD AX,BX start: mov ax, @data INC BX mov ds, ax

N

(CX)-1=0 mov dx, offset inf1

;将屏幕输入的十进制数(存放于ibuf)转化为二进制Y 数存储于ax中

累加和(在AX中)转换为十进制数并 mov ah, 09h

显示 int 21h

mov dx, offset ibuf

结束 mov ah, 0Ah

素、、 int 21h

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, [si]

adc ah, 0 inc si loop loop1

mov cx, ax ;计算1+2+3+...+n mov ax, 0 mov bx, 1 loop2: add ax, bx inc bx loop loop2

mov di, offset obuf+6 ;将ax中的二进制数转换为十进制数并以ascii的形式存于obuf

mov byte ptr [di], '$' mov bx, 10 loop3: mov dx, 0 div bx

add dl, 30h 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 ;显示n mov ch, 0

mov si, offset ibuf+2 loop4: mov dl, [si] add dl, 30h inc si

mov ah, 02h int 21h loop loop4 mov dx, di mov ah, 09h int 21h

mov ax, 4c00h int 21h end start

实验习题1源码:

; multi-segment executable file template.

.model small ;定义程序的存储模式(small表示小型模式) .stack ;定义堆栈段

.data ;定义数据段

inf1 db 0ah, 0dh, \ obuf1 db 6 dup(0)

obuf2 db 7 dup(0) ;除了六位数字外还要有一个=号 .code

start: mov ax, @data mov ds, ax

mov dx, offset inf1 ;输出 1+2+......+ mov ah, 09h int 21h

mov ax, 0 ;计算1+2+3+...+n mov bx, 1 loop1: add ax, bx inc bx

cmp ax, 60000 jbe loop1

push ax ;将最终结果备份入栈 push bx ;将n备份

pop cx

mov di, offset obuf1+5

;将cx二进制数转换为十进制数并以ascii的形式存于obuf1 mov byte ptr [di], '$' mov ax, cx mov bx, 10 loop2: mov dx, 0 div bx

add dl, 30h dec di

mov [di], dl or ax, ax jnz loop2

mov dx, di ;输出n mov ah, 09h int 21h

pop ax

mov di, offset obuf2+6

;将ax中的二进制数转换为十进制数并以ascii的形式存于obuf2 mov byte ptr [di], '$' mov bx, 10 loop3: mov dx, 0 div bx

add dl, 30h dec di

mov [di], dl

or ax, ax jnz loop3 dec di

mov [di], '='

mov dx, di ;=输出结果 mov ah, 09h int 21h

mov ax, 4c00h int 21h end start

实验习题2源码:

; multi-segment executable file template.

.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) .code

start: mov ax, @data mov ds, ax

mov dx, offset inf1 ;输出提示信息 mov ah, 09h int 21h

mov bx, 6 ;设置外层循环次数 loop1: mov dx, offset ibuf mov ah, 0Ah int 21h

mov cl, ibuf+1 ;设置内层循环次数 mov ch, 0

mov si, offset ibuf+2 mov ax, 0

loop2: mov dx, 10 ;将屏幕输入的十进制数(存放于ibuf)转化为二进制数存储于ax中 mul dx

and byte ptr[si], 0Fh add al, [si] adc ah, 0 inc si

loop loop2

push ax ;将结果入栈保存

mov dx, offset obuf0 ;回车换行

mov ah, 09h int 21h

dec bx cmp bx, 0 jnz loop1

mov cx, 6

mov ax, 0 loop3: pop bx add ax, bx loop loop3

mov di, offset obuf+5

;将ax中的二进制数转换为十进制数并以ascii的形式存于obuf mov byte ptr [di], '$' mov bx, 10 loop4: mov dx, 0 div bx

add dl, 30h dec di

mov [di], dl or ax, ax jnz loop4

mov dx, offset inf2 ;输出提示信息 mov ah, 09h int 21h mov dx, di mov ah, 09h int 21h

mov ax, 4c00h int 21h end start

实验习题3源码:

; multi-segment executable file template.

.model small ;定义程序的存储模式(small表示小型模式) .stack ;定义堆栈段

.data ;定义数据段

inf db \ inf2 db 0ah, 0dh, \ ibuf db 6, 0, 5 dup(0) obuf db 6 dup(0) .code

start: mov ax, @data

微机原理与汇编语言实验循环程序设计实验

微机原理与汇编语言实姓名课程名称实验名称xxx学号验xxxxxx报告专业班级实验日期成绩计科x班2014.10.22微机原理与汇编语言循环程序设计实验一、实验目的1、掌握循环程序的设计方法。2、掌握比较指令、转移指令和循环指令的使用方法。3、进一步掌握调试工具的使用方法。二
推荐度:
点击下载文档文档为doc格式
3x4gj5j3tv2teb88j4i568ub00wtn20063b
领取福利

微信扫码领取福利

微信扫码分享