文档库 最新最全的文档下载
当前位置:文档库 › 中国石油大学(华东)微机原理实验程序

中国石油大学(华东)微机原理实验程序

中国石油大学(华东)微机原理实验程序
中国石油大学(华东)微机原理实验程序

2-1

data segment

data ends

code segment

assume cs:code,ds:data

start:

mov ax,data

mov ds,ax

mov cx,10

mov si,-1

next:

inc si

mov ds:[si],si ;段超越前缀

loop next

mov ax,4c00h

int 21h

code ends

end start

2-2

data segment

x db -78,127,-128,-125,88

y db 32,-43,76,95,1

s db 5 dup(?)

data ends

code segment

assume ds:data,cs:code

start:

mov ax,data

mov ds,ax ;ds=数据段段基址

mov cx,5 ;送循环次数5次

mov si,-1

next: inc si

mov al,[si+x] ;寄存器相对寻址方式

mov bl,[si+y]

add al,bl ;相加后结果送al

mov [si+s],al ;和送s单元

loop next

mov ax,4c00h

int 21h

code ends

end start

2-3

data segment

x db 57h,90h,12h,34h,67h

y db 13h,57h,90h,24h,68h

s db 5 dup(?)

data ends

code segment

assume ds:data,cs:code

start:clc

mov ax,data

mov ds,ax ;将data与ds关联

mov cx,5

mov si,5

next: dec si

mov al,[si+x] ;寄存器相对寻址

mov dl,[si+y]

adc al,dl

daa

mov [si+s],al

loop next

mov ax,4c00h

int 21h

code ends

end start

3-1

data segment

x db 85,77,126,-1,-43,37,-128,11,-19,13

data ends

extra segment

y db 10 dup(?)

extra ends

code segment

assume ds:data,cs:code,es:extra start:mov ax,data

mov ds,ax

mov ax,extra

mov es,ax

mov cx,9

L1: mov dx,cx

mov si,-1

call order

order proc near

L2: inc si

mov al,x[si]

cmp al,x[si+1];al大时,交换,al小时跳转

js count

xchg al,x[si+1]

mov x[si],al

count:loop L2 ;判断内循环次数,即第一个数需要比较的次数

mov cx,dx

loop L1

ret

order endp

mov ah,4ch

int 21h

code ends

end start

4-1

stack segment 'stack'

sa db 100 dup(?)

top label word

stack ends

code segment

assume ss:stack,cs:code start:mov ax,stack

mov ss,ax

mov ax,top

mov sp,ax

mov cx,5

input:mov ah,1

int 21h

push ax

loop input

mov ah,2

mov dl,0dh

int 21h

mov dl,0ah

int 21h

mov cx,5 output:pop dx

int 21h

loop output

mov ah,4ch

int 21h

code ends

end start

4-2

data segment

buff db 50

db ?

db 50 dup('$')

data ends

code segment assume cs:code,ds:data start:mov ax,data

mov ds,ax

lea dx,buff

mov ah,0ah

int 21h

mov ah,2

mov dl,0dh

int 21h mov dl,0ah

int 21h

lea dx,buff+2

mov ah,09h int 21h

mov ah,4ch

int 21h code ends

end start

6-1

CODE SEGMENT ASSUME CS:CODE START:MOV CX,3 LP1:MOV SI,8

MOV DX,280H MOV AL,01H LP2:OUT DX,AL

CALL DELAY

SHL AL,1

DEC SI

JNZ LP2

LOOP LP1

MOV DX,280H MOV AL,00H

OUT DX,AL

MOV AH,4CH

INT 21H DELAY PROC NEAR PUSH CX

MOV BX,600

FOR1:MOV CX,0FFFFH FOR2:LOOP FOR2

DEC BX

JNZ FOR1

POP CX

RET

DELAY ENDP

CODE ENDS

END START

6-2

CODE SEGMENT ASSUME CS:CODE START:MOV SI,3 LP: MOV DX,280H MOV AL,01H

OUT DX,AL

CALL DELAY

MOV DX,280H

MOV AL,00H

OUT DX,AL

CALL DELAY

MOV CX,3

LP1: MOV DX,280H MOV AL,02H

OUT DX,AL

CALL DELAY

MOV DX,280H

MOV AL,00H

OUT DX,AL

CALL DELAY LOOP LP1

MOV DX,280H

MOV AL,04H

OUT DX,AL

CALL DELAY

MOV DX,280H

MOV AL,00H

OUT DX,AL

DEC SI

MOV CX,SI

LOOP LP

MOV AH,4CH

INT 21H

DELAY PROC NEAR

PUSH CX

MOV BX,600

FOR1:MOV CX,0FFFFH FOR2:LOOP FOR2

DEC BX

JNZ FOR1

POP CX

RET

DELAY ENDP

CODE ENDS

END START

7-1

code segment

assume cs:code start: mov bl,'1' mov cx,6

L1: mov dx,280h

in al,dx

and al,08h

mov ah,al

L2:

in al,dx

and al,08h

cmp al,bl

jz L2

mov dl,bl

mov ah,2

int 21h

inc bl

loop L1

mov dl,0ah

mov ah,2

int 21h

mov dl,0dh

mov ah,2

int 21h

mov dl,'E'

mov ah,2

int 21h

mov dl,'N'

mov ah,2

int 21h

mov dl,'D'

mov ah,2

int 21h

mov ah,4ch

int 21h

code ends

end start

7-2

code segment

assume cs:code

start: mov cx,6

mov bl,'1' ;初值1

L1: mov dx,280h

in al,dx

and al,20h ;对应D5输入则0010,0000 即20H

mov ah,al ;初始状态保存BL 中

L2: in al,dx

and al,20h

cmp al,ah

jz L2

call delay

L3:

in al,dx

and al,20h

cmp al,ah

jnz L3

call delay

mov dl,bl

mov ah,2

int 21h

inc bl

loop L1

mov dl,0ah;光标左移

mov ah,2

int 21h

mov dl,0dh;换行

mov ah,2

int 21h

mov dl,'E'

mov ah,2

int 21h

mov dl,'N'

mov ah,2

int 21h

mov dl,'D'

mov ah,2

int 21h

mov ah,4ch

int 21h

delay proc near

push cx

mov bx,100h

for1: mov cx,0ffffh for2: loop for2

dec bx

jnz for1

pop cx

ret

delay endp

code ends

end start

8

1.////////////////////// code segment

assume cs:code

start:mov cx,1000

mov dx,298h ; 清0

mov al,00h

out dx,al

L1: mov dx,298h

mov al,01h

out dx,al

mov dx,2A0h

mov al,76h ;H

out dx,al

call delay

mov dx,298h

mov al,02h

out dx,al

mov dx,2a0h

mov al,73h ;P

out dx,al

call delay

loop L1

mov dx,298h ; 清0

mov al,00h

out dx,al

mov ah,4ch

int 21h

delay proc near

push cx

push bx

mov bx,8

for1: mov cx,0ffffh

for2: loop for2

dec bx

jnz for1

pop bx

pop cx

ret

delay endp

code ends

end start

2.//////////////////////////////

data segment

x db

3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh, 6fh

data ends

code segment

assume cs:code,ds:data start:mov ax,data

mov ds,ax

lea bx,x

mov cx,5

L1: mov dx,298h ; 清0 mov al,00h

out dx,al

push cx

mov cx,200

L2: mov dx,298h

mov al,01h

out dx,al

mov dx,2a0h

mov al,[bx]

out dx,al

call delay

mov dx,298h

mov al,02h

out dx,al

mov dx,2a0h

mov al,[bx+1]

out dx,al

call delay

loop L2

inc bx

inc bx

pop cx

loop L1

mov dx,298h ; 清0

mov al,00h

out dx,al

mov ah,4ch

int 21h

delay proc near

push cx

push bx

mov bx,6

for1: mov cx,0ffffh

for2: loop for2

dec bx

jnz for1

pop bx

pop cx

ret

delay endp

code ends

end start

9-1

CODE SEGMENT

ASSUME CS:CODE START:MOV CX,3

MOV AL,10001001B;C口入,B 口出

MOV DX,283H

OUT DX,AL

MOV DX,282H;读入C口值

IN AL,DX

AND AL,01H

;TEST AL,01H

JZ L1;输入为低电平时跳转至L1

JMP L2

MOV CX,3

L1: PUSH CX

MOV DX,281H;B口输出

MOV AL,01H

OUT DX,AL

CALL DELAY

MOV CX,3

L3: ROL AL,1

OUT DX,AL

CALL DELAY

LOOP L3

POP CX

LOOP L1

MOV DX,281H

MOV AL,00H

OUT DX,AL

JMP L4

MOV CX,3

L2: MOV DX,281H;为高电平时,绿灯同时亮

MOV AL,11110000B

OUT DX,AL

CALL DELAY

MOV AL,00H

OUT DX,AL

CALL DELAY

LOOP L2

L4: MOV AH,4CH

INT 21H

DELAY PROC NEAR

PUSH CX

MOV BX,200

FOR1: MOV CX,65535 FOR2: LOOP FOR2

DEC BX

JNZ FOR1

POP CX

RET

DELAY ENDP

CODE ENDS

END START

9-2

CODE SEGMENT

ASSUME CS:CODE START:

MOV AL,10111101B

MOV DX,283H

OUT DX,AL

L1: MOV DX,282H

IN AL,DX

AND AL,20H

JZ L1

MOV DX,280H

IN AL,DX

CALL DELAY

MOV DX,281H

OUT DX,AL

L2: MOV DX,282H

IN AL,DX

AND AL,02H

JZ L2

JMP L3

;LOOP START

L3: MOV AL,00H

MOV DX,281H

OUT DX,AL

MOV AH,4CH

INT 21H

DELAY PROC NEAR

PUSH CX

MOV BX,2000

FOR1: MOV CX,65535 FOR2: LOOP FOR2

DEC BX

JNZ FOR1

POP CX

RET

DELAY ENDP

CODE ENDS

END START

10

;10-1

CODE SEGMENT ASSUME CS:CODE

START: MOV AL,10010000B

MOV DX,283H;控制字

OUT DX,AL

MOV DX,282H;通道2

MOV AL,05H

OUT DX,AL

CALL DELAY;延时5秒

MOV DX,283H;控制字,计数器锁存供CPU读

MOV AL,00H

OUT DX,AL

MOV DX,282H

IN AL,DX ;读计数器的值至AL

MOV CH,AL

MOV CL,4

AND AL,0F0H;取AL高四位

ROL AL,CL;将高四位循环移至低四位

MOV DL,AL

ADD DL,30H;加30,换成ASCII 码

MOV AH,02H

INT 21H

AND CH,0FH

MOV DL,CH

ADD DL,30H

MOV AH,02H

INT 21H

MOV AH,4CH

INT 21H

DELAY PROC NEAR;延时函数

PUSH CX

MOV BX,3000

FOR1:MOV CX,65535

FOR2:LOOP FOR2

DEC BX

JNZ FOR1

POP CX

RET

DELAY ENDP

CODE ENDS

END START

;;;;;;;;10-2

CODE SEGMENT

ASSUME CS:CODE

START: MOV AL,01010010B;

MOV DX,283H

OUT DX,AL

MOV AL,05H

MOV DX,281H

OUT DX,AL

MOV AH,4CH

INT 21H

CODE ENDS

END START

11

data segment

ABC db 'are you ready ?',0dh,0ah,'$' CHA db 'IRQ10 INTERRUPT

NOW!',0dh,0ah,'$'

data ends

code segment

assume cs:code,ds:data

start: mov ax,cs

mov ds,ax

mov dx,offset zd10

mov ax,2572h

int 21h

cli

in al,21h

and al,0fbh

out 21h,al

in al,0a1h

and al,0fbh

out 0a1h,al

sti

mov cx,20

loop1: push cx

mov ax,data

mov ds,ax

lea dx,ABC

mov ah,9

int 21h

call delay

pop cx

loop loop1

mov dx,21h

in al,dx

or al,4

out 21h,al

mov dx,0a1h

in al,dx

or al,4

out 0a1h,al

mov ah,4ch

int 21h

zd10 proc near

push ax

push bx

push cx

push dx

mov cx,5 again: lea dx,CHA

mov ah,9

int 21h

call delay loop again

pop dx

pop cx

pop bx

pop ax

mov al,20h

out 20h,al

mov al,20h

out 0a0h,al

iret

zd10 endp

delay proc near

push cx

mov bx,5000

for1: mov cx,65535

for2: loop for2

dec bx

jnz for1

pop cx

ret

delay endp

code ends

end start

/////////////////

data segment

ABC db 'are you ready ?',0dh,0ah,'$' data ends

code segment

assume cs:code,ds:data

start: mov ax,cs

mov ds,ax

mov dx,offset zd10

mov ax,2572h

int 21h

cli

in al,21h

and al,0fbh

out 21h,al

in al,0a1h

and al,0fbh

out 0a1h,al

sti

mov cx,20 loop1: push cx

mov ax,data

mov ds,ax

lea dx,ABC

mov ah,9

int 21h

call delay

pop cx

loop loop1

mov dx,21h

in al,dx

or al,4

out 21h,al

mov dx,0a1h

in al,dx

or al,4

out 0a1h,al

mov ah,4ch

int 21h

zd10 proc near

push ax

push bx

push cx

push dx

mov cx,3 again: push cx

mov dx,280h

mov al,03h

out dx,al

call delay

mov dx,280h

mov al,00h

out dx,al

call delay

pop cx

loop again

pop dx

pop cx

pop bx

pop ax

mov al,20h

out 20h,al

mov al,20h

out 0a0h,al

iret

zd10 endp

delay proc near

push cx

mov bx,5000 for1: mov cx,65535 for2: loop for2

dec bx

jnz for1

pop cx

ret delay endp code ends

end start

微机原理及应用实验(题目)

微机原理及应用实验 实验一开发环境的使用 一、实验目的 掌握伟福开发环境的使用方法,包括源程序的输入、汇编、修改;工作寄存器内容的查看、修改;内部、外部RAM内容的查看、修改;PSW中个状态位的查看;机器码的查看;程序的各种运行方式,如单步执行、连续执行,断点的设置。二、实验内容 在伟福开发环境中编辑、汇编、执行一段汇编语言程序,把单片机片内的 30H~7FH 单元清零。 三、实验设备 PC机一台。 四、实验步骤 用连续或者单步的方式运行程序,检查30H-7FH 执行前后的内容变化。五、实验思考 1.如果需把30H-7FH 的内容改为55H,如何修改程序? 2.如何把128B的用户RAM全部清零? 六、程序清单 文件名称:CLEAR.ASM ORG 0000H CLEAR: MOV R0,#30H ;30H 送R0寄存器 MOV R6,#50H ;50H 送R6寄存器(用作计数器) CLR1: MOV A,#00H ;00 送累加器A MOV @R0,A ;00 送到30H-7FH 单元 INC R0 ;R0 加1 DJNZ R6,CLR1 ;不到50H个字节,继续 WAIT: LJMP WAIT END 实验二数据传送 一、实验目的 掌握MCS-51指令系统中的数据传送类指令的应用,通过实验,切实掌握数据传送类指令的各种不同的寻址方式的应用。 二、实验内容 1.编制一段程序,要求程序中包含7中不同寻址方式。 2.编制一段程序,将片内RAM30H~32H中的数据传送到片内RAM38H~3AH中。 3.编制一段程序,将片内RAM30H~32H中的数据传送到片外RAM1000H~1002H 中。 4.编制一段程序,将片内RAM40H~42H中的数据与片外RAM2000H~2002H中的数据互换。 三、实验设备 PC机一台。

微机原理实验 源程序

《微机原理及接口技术》 实验指导书 杨霞周林英编 长安大学电子与控制工程学院 2009年9月

前言 本实验指导是为适应各大、中专院校开设微机原理及应用方面的课程需做大量软硬件实验的需要而编写的,供学生编程用。完成本实验指导中的实验,可使学生基本掌握8086/8088的结构原理、接口技术、程序设计技巧。手册中详细叙述了各实验的目的、内容,列出了接线图、程序框图和实验步骤。 主要学习内容为80X86语言实验环境配置、汇编源语言格式、输出字符、循环结构、子程序调用,以及加减乘除等指令操作、通用接口芯片的接口编程与使用。所有实验都是相互独立的,次序上也没有固定的先后关系,在使用本书进行教学时,教师可根据教学要求,选择相应实验。学习结束后,要求学生能够独立编写出综合加减乘除等指令,以及循环结构、子程序调用等程序控制程序、看懂一般接口芯片电路图。

目录 实验一清零程序 (4) 实验二拆字程序 (6) 实验三数据区移动 (8) 实验四多分支程序设计 (10) 实验五多字节减法运算 (13) 实验六显示程序 (16) 实验七 8251串口实验 (20) 实验八步进电机控制 (26) 附录一汇编语言的存储模型 (36) 附录二 8279键值显示程序 (37)

实验一清零程序 一、实验目的 掌握8088汇编语言程序设计和调试方法。 二、实验设备 STAR系列实验仪一套、PC机一台。 三、实验内容 把RAM区内4000H-40FFH单元的内容清零。 四、程序框图 五、源程序清单 .MODEL TINY .STACK 100 .DATA .CODE ORG 0100H START: MOV BX,4000H MOV AX,0000H MOV CX,80H L1: MOV [BX],AX INC BX INC BX LOOP L1 JMP $ END START 六、实验步骤

微机原理及应用实验

实验报告1 实验项目名称:I/O地址译码;简单并行接口同组人: 实验时间:实验室:微机原理实验室K2-407 指导教师:胡蔷 一、实验目的: 掌握I/O地址译码电路的工作原理,简单并行接口的工作原理及使用方法。 二、预备知识: 输入、输出接口的基本概念,接口芯片的(端口)地址分配原则,了解译码器工作原理及相应逻辑表达式,熟悉所用集成电路的引线位置及各引线用途;74LS245、74LS373的特性及作用。 三、实验内容245输入373输出 使用Protues仿真软件制作如下电路图,使用EMU8086编译软件编译源程序,生成可执行文件(nn . exe),在Protues仿真软件中加载程序并运行,分析结果。 编程实现:读8个开关的状态,根据输入信号控制8个发光二极管的亮灭。 图1-1 245输入373输出 四、程序清单

五、实验结果 六、结果分析 七、思考题: 1、如果用74LS373作输入接口,是否可行?说明原因;用74LS245作输出接口,是否可行?说明原因。

实验报告2 实验项目名称:可编程定时器/计数器;可编程并行接口同组人: 实验时间:实验室:微机原理实验室K2-407 指导教师:胡蔷 一、实验目的: 掌握8253的基本工作原理和编程应用方法。掌握8255的工作原理及使用方法。 二、预备知识: 8253的结构、引脚、控制字,工作方式及各种方式的初始化编程及应用。 8255的内部结构、引脚、编程控制字,工作方式0、1、2的区别,各种方式的初始化编程及应用。 三、实验内容: ⑴8253输出方波 利用8253的通道0和通道1,设计产生频率为1Hz的方波。设通道0的输入时钟频率为2MHz,8253的端口地址为40H,42H,44H,46H。通道0的输入时钟周期0.5μs,其最大定时时间为:0.5μs×65536 = 32.768ms,要产生频率为1Hz(周期= 1s)的方波,利用;一个通道无法实现。可用多个通道级连的方法,将通道0的输出OUT0作通道1的输入时钟信号。设通道0工作在方式2(频率发生器),输出脉冲周期= 10 ms,则通道0的计数值为20000(16位二进制)。周期为4 ms的脉冲作通道1的输入时钟,要求输出端OUT1输出方波且周期为1s,则通道1工作在方式3(方波发生器),计数值为100(8位;二进制)。硬件连接如图2-1。

微机原理实验报告软件实验1-4

微机原理实验报告 学院:算机科学与软件教育学院 1. 掌握存储器读写方法 2. 了解存储器的块操作方法 二、实验原理 存储器读写和块操作 三、实验设备仪器及材料 计算机,WA VE 6000软件 四、实验过程 S1.asm 代码流程图 data segment Block db 256 dup(55h) data ends code segment assume cs:code, ds:data start proc near mov ax, data mov ds, ax mov bx, offset Block ; 起始地址 mov cx, 256 ; 清256 字节Again: mov [bx], byte ptr 0 inc bx ; 地址+1 Loop Again ; 记数减一jmp $ ;死循环code ends end start

五、实验步骤 (1) 进入Wave6000,输入程序并检查,保存程序。 (2) “编译”程序。 (3) “全速执行”程序。 (4) “暂停”程序运行,在“数据窗口(MEMOREY)”查看0400H起始的单元内容,并记录。 (5) 在指令“jmp $”处设断点。“全速执行”程序。 (6) 在“数据窗口(MEMOREY)”查看0400H起始的单元内容,记录并分析实验结果。 六、实验结果及总结 运行前:运行后: 2、调试:如何将存储器块的内容置成某固定值(例全填充为0FFH)? 总结:通过本实验,我了解到单片机读写存储器的读写方法,同时也了解到单片机编程,调试方法。学会内存的移动方法,也加深对存储器读写的认识。

微机原理实验报告 学院:算机科学与软件教育学院 实验 课程 名 微机原理实验成绩实验 项目名称实验二、二进制到BCD码转换 指导老 师 1. 了解BCD值和ASCII值的区别。 2. 了解如何将BCD值转换成ASCII值。 3. 了解如何查表进行数值转换及快速计算。 二、实验原理 ASCII码表 三、实验设备仪器及材料 计算机,WA VE 6000软件 data segment Result db 3 dup(?) data ends code segment assume cs:code, ds:data start proc near mov ax, data mov ds, ax mov ax, 123 mov cl, 100 div cl mov Result, al ; 除以 100, 得百位数 mov al, ah mov ah, 0 mov cl, 10 div cl mov Result+1, al ; 余数除以 10, 得十位数 mov Result+2, ah ; 余数为个位 数 jmp $ code ends end start 代码流程图

微机原理实验报告

汇编语言程序设计实验 一、实验内容 1.学习并掌握IDE86集成开发环境的使用,包括编辑、编译、链接、 调试与运行等步骤。 2.参考书例4-8,P165 (第3版161页)以单步形式观察程序的 执行过程。 3.修改该程序,求出10个数中的最大值和最小值。以单步形式观 察,如何求出最大值、最小值。 4.求1到100 的累加和,并用十进制形式将结果显示在屏幕上。 要求实现数据显示,并返回DOS状态。 二、实验目的 1.学习并掌握IDE86集成开发环境的使用 2.熟悉汇编语言的基本算法,并实际操作 3.学会利用IDE86进行debug的步骤 三、实验方法 1.求出10个数中的最大值和最小值 (1)设计思路:利用冒泡法,先对数据段的10个数字的前2个比 较,把二者中大的交换放后面。在对第二个和第三个数比较,把 二者中较大的交换放后面,依此类推直到第十个数字。这样第十 位数就是10个数里面最大的。然后选出剩下9个数字里面最大 的,还是从头开始这么做,直到第九个数字。以此类推直到第一 个数字。

(2)流程图 2.求1到100 的累加和,并用十进制形式将结果显示在屏幕上。 要求实现数据显示,并返回DOS状态

(1)设计思路:结果存放在sum里面,加数是i(初始为1),进行 100次循环,sum=sum+I,每次循环对i加1. (2)流程图: 四、 1.求出10个数中的最大值和最小值

DSEG SEGMENT NUM DB -1,-4,0,1,-2,5,-6,10,4,0 ;待比较数字 DSEG ENDS CODE SEGMENT ASSUME DS:DSEG,CS:CODE START:MOV AX,DSEG MOV DS,AX LEA SI,NUM MOV DX,SI MOV CL,9 ;大循环计数寄存器初始化 NEXT1:MOV BL,CL ;大循环开始,小循环计数器初始化MOV SI,DX NEXT2:MOV AL,[SI+1] CMP [SI],AL ;比较 JGGONE ;如果后面大于前面跳到小循环末尾CHANGE:MOV AH,[SI] ;交换 MOV [SI+1],AH MOV [SI],AL JMP GONE GONE:add SI,1 DEC BL JNZ NEXT2

微机原理及应用实验报告81487

实 验 报 告 课 程 名 称 实 验 名 称 实 验 日 期 学 生 专 业 学 生 学 号 学 生 姓 名 教 师 姓 名 成 绩 南京理工大学机械工程学院 微机原理及应用 实验1 DEBUG 操作实验 实验2 汇编程序设计实验 实验3 8253定时/计数器实验 实验4 8255 并行接口实验 年 月 日 至 年 月 日

实验一DEBUG命令及其操作 一、实验目的 1.熟练掌握debug的常用命令,学会用debug来调试程序。 2.深入了解数据在存储器中的存取方法及堆栈中数据的压入与弹出。 3.掌握各种寻址方法以及简单指令的执行过程。 二、实验要求 1.实验前要作好充分准备,包括汇编程序清单、调试步骤、调试方法以及对程序结果的分析等。 2.本实验要求在PC机上进行。 3.本实验只要求在DEBUG调试状态下进行,包括汇编程序,调试程序,执行程序。三、实验内容 ●实验内容1:学习用DEBUG调试工具进行源程序的输入、汇编、调试和执行。 实验报告要求: 1.写出运行结果; 2.小结debug常用命令及使用体会 答:1.原文已给出(略) 2.a 汇编 d显示内存单元内容 e修改单元内存内容 g执行命令 t单步(或多步)调试 n指定文件路径文件名(含扩展名) u反汇编 r查看寄存器值及修改 l加载程序 w写盘命令 体会:提升学习热情和动手能力有助于理解代码执行过程 ●实验内容2 设AX=3000H,BX=5000H,请编一程序段将AX的内容和BX的内容进行交换。请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。 实验报告要求: 1.写出完成上述功能的程序段; 2.单步执行,并记录寄存器AX, BX及堆栈指针SP的值 答: A100 Mov ax,3000 ;ax:3000 bx:0000 sp:ffee Mov bx,5000 ;ax:3000 bx:5000 sp:ffee Push ax ;ax:3000 bx:5000 sp:ffec

微机原理实验程序

实验一两个多位十进制数相减实验 一、实验要求:将两个多位十进制数相减,要求被减数,减数均以ASCII码形式按顺序 存放在以DATAI和DATA2为首的5个内存单元中(低位在前>,结果送回 DATAI处。 二、实验目的:1.学习数据传送和算术运算指令的用法。 2.熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。 三、实验步骤:连好实验箱后接通电源,打开上位机软件88TE进入软件调试界面: 点击“文件\打开”文件路径为C: \88TE\cai\asm\Ruanjian\Rjexp1.asm。具体操作如图所示: b5E2RGbCAP

点击编译连接生成可执行的exe文件。 通过单步运行调试程序,打开寄存器查看其变量变化情况。 四、实验程序框图: 五、实验程序:

文件路径为C:\88TE\cai\asm\Ruanjian\Rjexp1.asm DATA SEGMENT DATA1 DB 33H,39H,31H,37H,38H 。第一个数据<作为被减数)DATA2 DB 36H,35H,30H,38H,32H 。第二个数据<作为减数)MES1 DB '-','$' MES2 DB '=','$'p1EanqFDPw Array DATA ENDS STACK SEGMENT STA DB 20 DUP(?> TOP EQU LENGTH STA STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX MOV SI,OFFSET DATA1 MOV BX,05 CALL DISPL MOV AH,09H LEA DX,MES1 INT 21H MOV SI,OFFSET DATA2 MOV BX,05 CALL DISPL MOV AH,09H LEA DX,MES2 INT 21H MOV SI,OFFSET DATA1 MOV DI,OFFSET DATA2 CALL SUBA 。减法运算 MOV SI,OFFSET DATA1 MOV BX,05 。显示结果 CALL DISPL MOV DL,0DH MOV AH,02H INT 21H MOV DL,0AH MOV AH,02H INT 21H INT 21H MOV AX,4C00H INT 21H DISPL PROC NEAR 。显示子功能 DSI: MOV AH,02 MOV DL,[SI+BX-1] 。显示字符串中一字符 INT 21H

微机原理实验报告

西安交通大学实验报告 课程_微机与接口技术第页共页 系别__生物医学工程_________实验日期:年月日 专业班级_____组别_____交报告日期:年月日 姓名__ 学号__报告退发 ( 订正、重做 ) 同组人_教师审批签字 实验一汇编语言程序设计 一、实验目的 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、实验代码: DATA SEGMENT SZ DB 80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H;存进数组 SHOW DB 'THE MAX IS: ','$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ;把数据的基地址赋给DS MOV DS,AX MOV DX,OFFSET SHOW ;调用DOS显示字符串 MOV AH,09H INT 21H MOV SI ,OFFSET SZ ;数组的偏移地址赋给SI MOV CX,10 ;存进数组的长度给CX MOV DH,80H ;将数组的第一个数写进DH NEXT: MOV BL,[SI] ;将数组的第一个数写进BL CMP DH,BL ;比较DH和BL中数的到校 JAE NEXT1 ;如果DH中的数大于BL中,将跳转到NEXT1 MOV DH,BL ;如果DH中的数小于BL中,将BL中的数赋给DH NEXT1: INC SI ;偏移地址加1 LOOP NEXT;循环,CX自减一直到0,DH中存数组的最大值 ;接下来的程序是将将最大值DH在屏幕上显示输出 MOV BX,02H NEXT2: MOV CL,4 ROL DH,CL ;将DH循环右移四位

微机原理实验简易计算器

【实验题目】 简易计算器设计 【实验目的】 综合测试学生微机接口技术及应用能力,包括系统构思设计、电路设计搭建、软件调试等; 结合应用实际,培养学生运用微机技术服务应用、服务实际的能力。 【基本要求】 1)利用实验箱上的4x4键盘及6位数码管,实现两个16位宽的非负整数(0~65535)进行+、-、×运算,计算结果限制在范围-65535~65535,超过范围在数码管最低位显示E; 2)16个按键的分配可以自行指定; 【扩展要求】 1)按基本要求保持输入的范围不变(16位宽),扩展计算结果的范围到用足6位数码管,当计算结果超过-65535~999999时,显示E; 2)增加÷的功能,有小数显示; 【实验程序】 ;该程序实现了基本要求及扩展要求的2) DSEG SEGMENT BUFF DB 6 DUP(?) LED_7 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7C H,39H,5EH,79H,71H,00H,40H POSITION DB 0DFH,0EFH,0F7H,0FBH,0FDH,0FEH UNIT10 DW 10000,1000,100,10,1 NEWNUM DB 0 COUNT DB 0 FLAG DB 0 ;是否有键按下的标志 NEGTI DB 0 ;是否为负数的标志 NUM DW 0 NUM1 DW 0 NUM2 DW 0 TAG DB 0 ;运算种类标志 POINT DB 0 ;除法结果添加小数点标志 RESULT DW 0 DSEG ENDS CSEG SEGMENT ASSUME DS:DSEG,CS:CSEG START: MOV AX,DSEG MOV DS,AX MOV DX,300CH ;8255初始化 MOV AL,81H OUT DX,AL LEA SI,BUFF MOV CX,6 NEXT: MOV BYTE PTR[SI],16 INC SI LOOP NEXT CALL SHOW ;将显示缓冲区中内容在LED上一次显示出来 MOV COUNT,0 ;记按下了几位数 NEXT2: CALL SHOW CALL SCAN ;判断是否有按键按下 CMP FLAG,1 JZ OK JMP NEXT2 OK: MOV FLAG,0 MOV POINT,0 MOV DX,3000H ;判断是哪一个键被按下 MOV AL,0FFH OUT DX,AL MOV CH,-1 ;CH用于保存当前被扫描的列号MOV CL,07FH XL: ROL CL,1 INC CH MOV DX,3000H MOV AL,CL .

微机原理与接口技术实验报告-全实例代码

实验一上机练习 实验目的: 1、掌握用编辑软件编辑程序文本的方法。在DOS环境下,熟练掌握用MASM5.0宏汇编程序对ASM文件进行编译、连接等操作步骤。 2、熟悉用DEBUG调试程序。 实验要求: 选取教科书中一典型例题,用编辑软件在PC机中形成ASM文件,然后编译、连接,生成目标文件和可执行文件。再用DEBUG程序进行调试。 实验步骤: 实验程序如下: data segment ary1 db 12,34,45,56,67,78,89,90,18 cont1 equ $-ary1 ;ary1的长度 sum1 dw ? ary2 db 13h,24h,57h,68h,9ah,0bch,0cdh,0deh,80h,50h cont2 equ $-ary2 sum2 dw ? data ends code segment assume cs:code, ds:data

start: mov ax,data mov ds,ax lea si,ary1 mov cx,cont1 ;设定循环次数为ary1的个数 call sum lea si,ary2 mov cx,cont2 call sum mov ah,4ch ;结束程序功能调用4CH int 21h sum proc ;求和程序段,求该段所有数之和xor ax,ax ;ax清零为下面加法准备 next1: add al,[si] adc ah,0 inc si loop next1 mov [si],ax ret ;返回调用程序 sum endp ;程序段结束 code ends end start

点击“运行”点击“编译成目标文件”,编译成功后,再“运行”=〉“生成可执行文件”,然后运行,即可。 运行成功以后,可进行调试。点击工具栏的调试按钮,出现调试框。其命令如下:输入a,进行逐行汇编,输入c,比较两内存块,输入d,内存信息以16进制显示;输入e,修改内存指定的字节;输入f,可以预置一段内存;输入g,执行程序;输入h,制算术运算;输入i,从指定端口地址输入;输入l,读盘;输入m,内存块传送;输入n,置文件名;输入o,从指定端口地址输出;输入q,结束DEBUG调试;输入r,显示和修改寄存器;输入s,查找字节串;输入t,跟踪执行;输入u,反汇编;输入w,存盘操作。 实验总结: 1、通过实验,熟悉了MASM环境,了解了程序书写,编译和运行的方法。 2、实验过程中,在调试的时候,各调试命令的用法十分复杂,如指令P,单输入p只会执行一步,若要一次执行多步,可以在后面加上数字。通过练习,熟悉了各调试指令。 实验二两个多位十进制数相加 实验目的: 1、学习数据传送和算术运算指令的用法。 2、熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序过程。

微机原理及应用 上机实验报告2 数据传送

课程名称:_________微机原理及应用___________指导老师:_____钟崴_______成绩:__________________ 实验名称:_________数据传送___________实验类型:________________同组学生姓名:__________ 一、实验目的和要求(必填)二、实验内容和原理(必填) 三、主要仪器设备(必填)四、操作方法和实验步骤 五、实验数据记录和处理六、实验结果与分析(必填) 七、讨论、心得 一、实验目的和要求(必填) 掌握MCS-51指令系统中的数据传送类指令的应用,通过实验,切实掌握数据传送类指令的各种不同的寻址方式的应用。 二、实验内容和原理(必填) 1.编制一段程序,要求程序中包含7中不同寻址方式。 2.编制一段程序,将片内RAM30H~32H中的数据传送到片内RAM38H~3AH中。 3.编制一段程序,将片内RAM30H~32H中的数据传送到片外RAM1000H~1002H中。 4.编制一段程序,将片内RAM40H~42H中的数据与片外RAM2000H~2002H中的数据互换。 三、主要仪器设备(必填) PC机一台。 四、操作方法和实验步骤 逐段编制程序,汇编无误后,用连续或者单步的方式运行程序,检查程序的运行结果,看是否达到预期的效果。 五、程序清单 1. ORG 0000H CLEAR MOV R0,#30H ;间接寻址 MOV A,#40H ;立即寻址 MOV @R0,A ;间接寻址 MOV A,30H ;直接寻址 MOV DPTR,#0100H ;间接寻址 MOV A,#36H MOVX @DPTR,A MOV R0,#50H ;立即寻址 MOV A,#10 MOVC A,@A+DPTR ;变址寻址 END

北京理工大学自动化专业微机原理硬件软件实验

微机原理与接口技术 硬件实验报告 班级: 姓名: 学号: 实验一: 8259中断控制器实验 一、实验目的 1. 掌握8259的工作原理。 2. 掌握编写中断服务程序的方法。 3. 掌握初始化中断向量的方法。 二、实验内容 用单脉冲发生器的输出脉冲为中断源,每按一次产生一次中断申请,点亮或熄灭发光二极管。 三、实验设备 微机实验教学系统实验箱、8086CPU模块 四、连线 ①单脉冲发生器输出P+与8259的IR0相连 ②8259的片选CS8259与CS0相连 ③8259的INT与8086的INT相连 ④8259的INTA与8086的INTA相连 ⑤CS273与CS1相连 ⑥00与LED1相连 其它线均已连好如下图: 五、实验步骤 (1)连线。 (2)编辑程序,编译链接后,调试程序。 (3)调试通过后,在中断服务程序内设置断点,运行程序,当接收到中断请求后,程序停在中断服务程序内的断点处。 (4)撰写实验报告。

六、实验源程序 CODE SEGMENT PUBLIC ASSUME CS:CODE ORG 100H START: MOV DX,4A0H ;写ICW1 MOV AX,13H OUT DX,AX MOV DX,4A2H ;写ICW2 MOV AX,80H ;IR0的中断向量码为80H OUT DX,AX MOV AX,01 OUT DX,AX ;一般嵌套,非缓冲,非自动EOI MOV AX,0 ;写OCW1 OUT DX,AX ;允许中断 ;中断向量存放在(0000H:0200H)开始的四个单元里 MOV AX,0 MOV DS,AX MOV SI,200H ;中断类型号为80H MOV AX,OFFSET HINT ;中断服务程序的入口地址 MOV DS:[SI],AX ADD SI,2 MOV AX,CS MOV DS:[SI],AX STI ;开中断,设置IF=1 JMP $ ;原地跳转 HINT: ;中断服务程序 XOR CX,0FFH ;CX取反 MOV DX,4B0H ;CS273接口的地址,与8个LED灯相连 MOV AX,CX ;输出高低电平控制LED灯的亮灭 OUT DX,AX MOV DX,4A0H ;OCW2的地址 MOV AX,20H ;一般EOI命令,全嵌套方式 OUT DX,AX IRET ;中断返回 CODE ENDS END START 七、实验思考题 1.将P+连线连接到IR1—IR7任意一个;重新编写程序。 将P+接到IR1,在原程序的基础上,把写ICW2的控制字改为81H,再把中断向量的入口地址改为0204H即可。程序如下: CODE SEGMENT PUBLIC ASSUME CS:CODE

微机原理实验程序

硬件实验七 D/A转换实验 (2 锯齿波 --------------- ; 注意:进行本实验前, 请先装载运行 D/A 0V输出 (调基准电压程序Asm88\da_0v.asm ; 使 D/A输出端“ AOUT ” 输出电压为 0V , 再进行本实验。 CODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODE ORG 33F0H DAPORT EQU 0FFE0H H7: MOV DX,DAPORT MOV AL,00H P7: OUT DX,AL INC AL JMP P7 CODE ENDS END H7 串行通信 CODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODE ORG 35C0H ;TX=RX

H11: JMP START Z8251 EQU 0FFE1H D8251 EQU 0FFE0H COM_MOD EQU 04EH COM_COM EQU 25H ZXK EQU 0FFDCH ZWK EQU 0FFDDH LED DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3H BUF DB ?,?,?,?,?,? START: MOV BX,4000H MOV AL,[BX] CMP AL,00H JNZ SR0 SR8251: MOV DX,Z8251 MOV AL,COM_MOD OUT DX,AL MOV AL,COM_COM OUT DX,AL MOV AL,10

微机原理与应用实验报告

微机原理及应用实验报告 班级:机械1301班 :黄佳清 学号:0801130117 座位号: 中南大学机电工程学院

实验一单片机仿真开发机操作和MCS-51指令系统应用 一.实验目的 1、熟悉MCS-51单片机仿真开发机和开发调试软件的操作使用和调整; 2、学会编写和输入汇编语言源程序、对输入的源程序进行汇编; 3、掌握程序的调试和运行的各种方法。 三.实验容及步骤(完成分值:60分) 本实验秩序运行Keil uVersion2程序,设置为keil为纯软件仿真 1.新建工程项目 2.设置工程文件参数 3.编写新程序事例 4.调试程序直至能够运行出结果。 四.实验程序 AJMP MAIN ORG 0030H MAIN: MOV R0,#20H MOV R2,#0FH MOV A,#00H A1: MOV R0,A INC R0 INC A DJNZ R2,A1 MOV R0,#20H ;暂停,观察并记录! MOV DPTR,#7000H MOV R2,#0FH A2: MOV A,R0 MOVX DPTR,A INC R0 INC DPTR DJNZ R2,A2 MOV R0,#030H ;断点,观察并记录! MOV DPTR,#7000H MOV R2,#0FH A3: MOVX A,DPTR MOVX R0,A INC R0 INC DPTR DJNZ R2,A3 DO: LJMP DO END ;部存储器数据块赋值,搬运数据块到外部存储器,再搬运回部数据存储器。 五、附加题 1.将光标移到想要暂停的地方,MOV R0,#20H所在行,选择“执行到光

2.在MOV R0,#0A0H行设置断点,全速执行,暂停后观察并记录以下单元容 3.

北京邮电大学_微机原理软件实验报告

微机原理软件实验报告 学院:信息与通信工程学院班级:XXXXXX 姓名:XXXXX 学号:XXXXXXXX 班内序号:XXXXX 日期:2017年11月30日

目录 微机原理软件实验报告.................................................. 错误!未定义书签。 1. 实验一................................................................................. 错误!未定义书签。 2. 实验二 (7) 3. 实验三 (13) 4. 实验四 (20) 5. 实验五 (30) 6. 总结及结论 (39) 7. 参考文献 (39)

实验一DEBUG的使用 一、实验目的: 1.掌握汇编程序的编辑,编译,连接和执行的全过程; 2.学习和掌握用DEBUG调试程序的方法. 二、实验内容:

2.通过编译,连接形成可执行文件。 3.用DEBUG 将可执行文件调入,并进行调试。 (1)用D 命令观察数据区在内存中的具体内容,记录单元A 和B 的具体地址。 (2)用U 命令对目标代码反汇编,观察反汇编后的结果.注意发现源程序的起始 位置, 并记录这个起始地址。 (3)用T 命令作单步跟踪调试.比较每条指令执行后的结果和原来的理解是否 一致。得出程序运行的结果:它们是写在什么单元,具体内容是什么; 并判断结果是 否正确。 (4)用E 命令修改单元A,B 的内容,重新执行程序,并记录结果。 (5)退出DEBUG。 三、预习题: 1.熟悉常用的DEBUG 命令。

四川大学微机原理实验报告..

微机原理实验报告 学院: 专业班级: 姓名 学号

实验一汇编语言编程基础 1.3汇编语言程序上机操作和调试训练 一.功能说明 运用8086汇编语言,编辑多字节非压缩型BCD数除法的简单程序,文件名取为*.ASM。 运用MASM﹒EXE文件进行汇编,修改程序中的各种语法错误,直至正确,形成*.OBJ文件。 运用LINK.EXE文件进行连接,形成*.EXE文件。 仔细阅读和体会DEBUG调试方法,掌握各种命令的使用方法。 运用DEBUG。EXE文件进行调试,使用单步执行命令—T两次,观察寄存器中内容的变化,使用察看存储器数据段命令—D,观察存储器数据段内数值。 再使用连续执行命令—G,执行程序,检查结果是否正确,若不正确可使用DEBUG的设置断点,单步执行等功能发现错误所在并加以改正。 二.程序流程图 设置被除数、商的地址指针 设置单位除法次数计数器 取被除数一位作十进制调整 作字节除法、存商 N 被除数各位已除完? Y 显示运算结果 结束 三.程序代码 修改后的程序代码如下: DATA SEGMENT A D B 9,6,8,7,5 B DB 5 C DB 5 DUP (0) N EQU 5 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA START: MOV AX,DATA MOV DS,AX

MOV ES,AX CLD LEA SI,A LEA DI,C MOV CX,N MOV AH,0 LP1: LODSB AAD DIV B STOSB LOOP LP1 MOV CX,N LEA DI,C LP2: MOV DL,[DI] ADD DL,30H MOV AH,2 INT 21H INC DI LOOP LP2 MOV AH,4CH INT 21H CODE ENDS END START 四.实验感想和收获 通过这次试验,我对微机原理上级试验环境有了初步的认识,可以较为熟练地对汇编语言进行编译,汇编及连接,同时也学会了用DEBUG调试程序,收获很大。 在这次试验中我也遇到了一些困难。在刚开始我发现自己无法打开MASM.EXE,计算机提示是由于版本不兼容。我这才想起来我的操作系统是64位的,和该软件版本不兼容。不过我并没有放弃,经过我的摸索之后,我发现用DOSBOX这个程序可以解决我的电脑运行不了该程序的问题。在解决了第一个难题后,我开始着手改正试验1.3中的语法错误和逻辑错误,但是无论我怎么修改却始终都无法通过编译,并且基本上每句话都有编译错误。根据我多年编程的经验来看,这应该是中文输入法在搞鬼,之后我耐心地把程序重新输了一遍,果然通过了编译,并且之后的连接也进行的很顺利。在用DEBUG调试时发现得出的结果也很正确。 尽管这次的实验内容非常简单,仅仅是教会我们一些基本的操作,但我却明显感觉到了汇编语言和C语言等高级语言所不同的地方。越是底层,基础的东西就越不人性化,用C语言一行代码就能实验的功能在汇编语言中可能要花上数十行。看来汇编语言的学习不是几周就能速成的,必须要有长年累月的积淀才能掌握。

微机原理及应用实验报告

微机原理及应用实验报告标准化文件发布号:(9312-EUATWW-MWUB-WUNN-INNUL-DQQTY-

微机原理及应用实验报告 班级: 姓名: 学号: 中南大学 机电工程学院精密测控实验室

实验二软件程序设计 1.实验目的: 1、掌握MCS-51单片机指令系统及用汇编语言编程技巧; 2、了解和熟悉用MCS-51单片机仿真开发机调试程序的方法。 2.实验内容: 1、编写排序程序并上机调试通过。 已知8031内部RAM60H~69H单元中,依次存放了 FFH,99H,77H,CCH,33H,DDH,88H,BBH,44H,EEH,它们均为无符号数,编程 将它们按递减次序排序,即最大数放在60H中,最小数放在69H中。 2.、编写多字节加法程序并上机调试通过。 8031内部RAM20H~22H单元中,存放了3字节被加数(低字节在前),在2AH~2CH单元中存放3字节加数(低字节在前),求两数之和,并将结 果存入以20H为起始地址的区域中(低字节在前)。 3.实验设备名称、型号: 4.画出软件程序流程图,写出上机调试通过的汇编语言程序清单: 程序1、编写排序程序并上机调试通过。 已知8031内部RAM60H~69H单元中,依次存放了 FFH,99H,77H,CCH,33H,DDH,88H,BBH,44H,EEH,它们均为无符号数,编程 将它们按递减次序排序,即最大数放在60H中,最小数放在69H中。

解:本设计采用冒泡排序法,使用双重循环,并在内循环中进行比较如果合乎从大到小的顺序则不动,否则两两交换,这样比较下去,比较9次 后,最小的那个数就会沉底,在下一次比较时将减少一次比较次数。如 果一次比较完毕,没有发生交换,说明已经按照从大到小的顺序排列 了。则可以退出循环,结束程序。 程序结构框图和程序代码如下:

北京邮电大学微机原理与接口技术软件件实验报告

信息与通信工程学院 微机原理软件实验报告 班级:学号:姓名:序号:时间:2015-11-6——2015-11-29 实验二分支,循环程序设计 一、实验目的:

1.开始独立进行汇编语言程序设计; 2.掌握基本分支,循环程序设计; 3.掌握最简单的 DOS 功能调用. 二、实验内容: 1.安排一个数据区(数据段),内存有若干个正数,负数和零.每类数的个数都不 超过 9。 2.编写一个程序统计数据区中正数,负数和零的个数。 3.将统计结果在屏幕上显示。 4.(选做)统计出正奇数,正偶数,负奇数,负偶数以及零的个数。 三、预习题: 1、十进制数 0 -- 9 所对应的 ASCII 码是什么? 如何将十进制数 0 -- 9 在屏幕上显示出来? 答:十进制数0——9对应的二进制数为30H——39H。要屏显0-9的数码,只需将AH 置成02H(DOS功能调用),然后将要显示的数码的ASCII码存进DL里,然后执行INT 21H 就可以打印字符。或者,若这些数码是以字符串的格式存储,则可以将AH置成09H,(最后以’$’字符结束,)然后将串首地址传给DS,然后执行INT 21H就可以打印字符串。 2、如何检验一个数为正,为负或为零? 你能举出多少种不同的方法? 答:可以将待检验数与0比较(使用CMP指令后用JZ指令判断ZF是否为零),也可以将待检验数与80H相与,判断ZF的值。二是和0相比是否相等,然后用该数(假设为8位)和10000000相与,取出符号位判断,可区分正负。本次试验中我使用的方法是与0比较,所有判决方法的核心思想要么是直接和0相比,要么使用逻辑或移位运算,取出符号进行判断。 四、实验过程: 流程图:

微机原理实验报告(排序,计算)

汇编语言循环结构程序设计

一、实验目的 1. 理解各种指令的功能。 2. 进一步学习程序的调试。 二、实验内容: 1. 编制程序,对这组数进行排序,并输出原数据及排序后数据; 2. 利用DEBUG 调试工具,用D0命令,查看排序前后,内存数据的变化; 3. 去掉最大和最小的两个值,求出其余值的平均值,并输出最大值,最小值和平均值; 4. 用学过的压栈PUSH 和出栈POP 指令,将平均值按位逐个输出; 5. 将平均值转化为二进制串,并将这组二进制串输出。 6. 所有数据输出前要用字符串的输出指令,进行输出提示(如:zui da zhi shi : 300等),所有数据结果能清晰地显示在屏幕上。 三、程序流程图 四、程序清单 DATA SEGMENT SR DB 100,?,50 DUP (?) VAR DW 5 DUP (0) AVG DW ? TEN DW 10 P DW 3

D DW 2 X DW? Y DW? MESG1 DB 13,10,'PLEASE INPUT:$' XS1 DB 13,10,'ORIGIN:$' XS2 DB 13,10,'NOW:$' XS3 DB 13,10,'MAX:$' XS4 DB 13,10,'MIN:$' XS5 DB 13,10,'AVG:$' XS6 DB 13,10,'AVG2:$' DATA ENDS STACK SEGMENT DW 100 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATA MOV DS,AX MOV ES,AX MOV DX,OFFSET MESG1 MOV AH,09H INT 21H LEA DX,SR CLD MOV CX,5 LEA SI,SR ADD SI,2 LEA DI,VAR IN_LOOP: MOV x, 0 MOV Y,0 _INX:

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