北理工微机原理上机实验考试题目类型及参考程序

北理工微机原理上机实验考试题目类型及参考程序
北理工微机原理上机实验考试题目类型及参考程序

1到100奇数的累加和显示:

DATA SEGMENT

SUM DB 4 DUP(?),'$'

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:MOV AX,DATA

MOV DS,AX

MOV AX,0

MOV BX,1

MOV CX,50

AGAIN:

ADD AX,BX

ADD BX,2

LOOP AGAIN

MOV CX,4

LEA SI,SUM

MOV [SI],AX

NEXT: MOV AX,[SI]

ROL AX,4

MOV [SI],AX

AND AX,000FH

CMP AL,9

JA NEXT1

ADD AL,30H

MOV DL,AL

MOV AH,2

INT 21H

JMP GOON

NEXT1:ADD AL,37H

MOV DL,AL

MOV AH,2

INT 21H

GOON:LOOP NEXT

MOV DL,48H

MOV AH,2

INT 21H

MOV AH,4CH

INT 21H

CODE ENDS

END START

八个数判断奇偶个数:

DATA SEGMENT

JI DB 0

OU DB 0

BUFFER DB 01H,02H,03H,04H,05H,06H,07H,08H DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX

MOV CX,8

LEA SI,BUFFER

AGAIN:MOV AL,[SI]

MOV BL,2

MOV AH,00H

DIV BL

AND AH,AH

JNZ JISHU

INC OU

JMP GONE

JISHU:INC JI

GONE: INC SI

LOOP AGAIN

MOV DL,JI

ADD DL,30H

MOV AH,2

INT 21H

MOV DL,' '

MOV AH,2

INT 21H

MOV DL,OU

ADD DL,30H

MOV AH,2

INT 21H

MOV AH,4CH

INT 21H

CODE ENDS

END START

十个有符号数从大到小排序并显示

DATA SEGMENT

TABLE1 DB 11H,33H,22H,44H,55H,66H,77H,88H,99H,0AH DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AX,DATA

MOV DS,AX

MOV CH,9

NEXT:

XOR AX,AX

LEA SI,TABLE1

MOV CL,9

CLD

NEXT1:

LODSB

CMP AL,[SI]

JG NEXT2

XCHG AL,[SI]

MOV [SI-1],AL

NEXT2:

DEC CL

JNZ NEXT1

DEC CH

JNZ NEXT

LEA SI,TABLE1

MOV CX,10

NEXT3:

XOR AX,AX

CLD

LODSB

MOV BX,16

XOR DX,DX

DIV BX

XCHG DL,AL

PUSH AX

ADD DL,30H

CMP DL,'9'

JBE NEXT4

ADD DL,07H

NEXT4:

MOV AH,2

INT 21H

POP AX

MOV DL,AL

ADD DL,30H

CMP DL,'9'

JBE NEXT5

ADD DL,07H

NEXT5:

MOV AH,2

INT 21H

MOV DL,'H'

MOV AH,2

INT 21H

MOV DL,' '

MOV AH,2

INT 21H

LOOP NEXT3

NEXT6:

MOV AH,4CH

INT 21H

CODE ENDS

END START

五个有符号数从小到大排列并显示

DATA SEGMENT

TABLE1 DB 11H,33H,22H,44H,55H,66H,77H,88H,99H,0AH DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AX,DATA

MOV DS,AX

MOV CH,4红色字体是和上一个程序的不同点NEXT:

XOR AX,AX

LEA SI,TABLE1

MOV CL,4

CLD

NEXT1:

LODSB

CMP AL,[SI]

JG NEXT2

XCHG AL,[SI]

MOV [SI-1],AL

NEXT2:

DEC CL

JNZ NEXT1

DEC CH

JNZ NEXT

LEA SI,TABLE1

MOV CX,5 NEXT3:

XOR AX,AX

CLD

LODSB

MOV BX,16

XOR DX,DX

DIV BX

XCHG DL,AL

PUSH AX

ADD DL,30H

CMP DL,'9'

JBE NEXT4

ADD DL,07H NEXT4:

MOV AH,2

INT 21H

POP AX

MOV DL,AL

ADD DL,30H

CMP DL,'9'

JBE NEXT5

ADD DL,07H NEXT5:

MOV AH,2

INT 21H

MOV DL,'H'

MOV AH,2

INT 21H

MOV DL,' '

MOV AH,2

INT 21H

LOOP NEXT3 NEXT6:

MOV AH,4CH

INT 21H CODE ENDS

END START

输出最大值以ASC11码输出

DATA SEGMENT

MEM DB 12H,56H,89H,0ABH,0DFH,29H,0,87H RESULT DB ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX

LEA SI,MEM

MOV CX,8

MOV AL,0

NEXT: CMP AL,[SI]

JA L1

MOV AL,[SI]

L1: INC SI

LOOP NEXT

MOV CX,2

LEA SI,RESULT

MOV [SI],AL

DISP: MOV AL,[SI]

ROL AL,4

MOV [SI],AL

AND AL,0FH

CMP AL,9

JA NEXT1

ADD AL,30H

MOV DL,AL

MOV AH,2

INT 21H

JMP NEXT2

NEXT1:ADD AL,37H

MOV DL,AL

MOV AH,2

INT 21H

NEXT2:LOOP DISP

MOV AH,4CH

INT 21H

CODE ENDS

END START

字符串中0,1的个数

DATA SEGMENT

NUM DW 3FFFH

ONE DB 0

ZERO DB 0

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:

MOV AX,DATA

MOV DS,AX

LEA SI,NUM

LEA DI,ZERO

MOV AX,[SI]

LEA SI,ONE

MOV CH,16

NEXT1:

ROL AX,1

JC NEXT2

INC BYTE PTR [DI]

JMP NEXT3

NEXT2:

INC BYTE PTR [SI]

NEXT3:

DEC CH

JNZ NEXT1

NEXT4:

MOV AH,4CH

INT 21H

CODE ENDS

END START

字符串中0,1的个数带输出DATA SEGMENT

NUM DW 3FFFH

ONE DB 0

ZERO DB 0

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:

MOV AX,DATA

MOV DS,AX

LEA SI,NUM

LEA DI,ZERO

MOV AX,[SI]

LEA SI,ONE

MOV CH,16

NEXT1:

ROL AX,1

JC NEXT2

INC BYTE PTR [DI]

JMP NEXT3

NEXT2:

INC BYTE PTR [SI]

NEXT3:

DEC CH

JNZ NEXT1

NEXT4:

MOV BX,10

XOR DX,DX

MOV DL,[DI]

ADD DL,30H

MOV AH,2

INT 21H

MOV DL,' '

MOV AH,2

INT 21H

XOR DX,DX

XOR AX,AX

MOV AX,[SI]

XOR AH,AH

DIV BX

XCHG DL,AL

ADD DL,30H

PUSH AX

MOV AH,2

INT 21H

POP AX

XOR DX,DX

MOV DL,AL

ADD DL,30H

MOV AH,2

INT 21H NEXT5:

MOV AH,4CH

INT 21H CODE ENDS

END START

同济大学微机原理实验报告

《微机原理与接口技术》上机实验报告

《微机原理与接口技术》上机实验报告

实验报告:(包括目的、方法、原理、结果或实验小节等)。 一、实验目的 掌握简单并行接口的工作原理及使用方法。 二、实验内容 1、按下面图一简单并行输出接口电路图连接线路(74LS273插通用插座,74LS32用实验台上的“或门”)。74LS273为八D触发器,8个D输入端分别接数据总线D0~D7,8个Q输出端接LED显示电路L0~L7。 2、编程从键盘输入一个字符或数字,将其ASCⅡ码通过这个输出接口输出,根据8个发光二极管发光情况验证正确性。 3、按下面图二简单并行输入接口电路图连接电路(74LS244插通用插座,74LS32用实验台上的“或门”)。74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关输出K0~K7,8个数据输出端分别接数据总线D0~D7。 4、用逻辑电平开关预置某个字母的ASCⅡ码,编程输入这个ASCⅡ码,并将其对应字母在屏幕上显示出来。 图一图二 三、实验中使用到的程序 对于简单并行输出接口: stack1 segment stack 'stack' dw 32 dup(0) stack1 ends data segment baseport equ 0ec00h-280h;实际基址 port equ baseport+2a8h;基址+偏移地址 data ends code segment assume ss:stack1,ds:data,cs:code start: mov ax,data mov ds,ax again: mov ah,1 int 21h

微机原理与接口技术实验报告

微机原理与接口技术实验报告

2

3

实验一:数据传送 实验学时:2 实验类型:验证 实验要求:必修 一.实验目的 1.学习程序设计的基本方法和技能,掌握用汇编语言设计、编写、调试和运行程序的方法; 学习用全屏幕编辑软件QEDIT.EXE建立源程序(.ASM文件); 学习用汇编软件MASM.EXE对源文件汇编产生目标文件(.OBJ文件); 学习用连接程序LINK.EXE对目标文件产生可执行文件(.EXE文件); 学习用调试软件TD.EXE调试可执行文件; 2.掌握各种寻址方法以及简单指令的执行过程。 二.实验器材 PC机 三.实验组织运行要求 1.利用堆栈实现AX的内容与BX的内容进行交换。堆栈指针SP=2000H,AX=3000H,BX=5000H; 2.汇编、调试、观察、记录结果; ⑴用QEDIT.EXE软件输入汇编语言源程序,以.ASM格式文件存盘; ⑵用MASM对源程序进行汇编产生二进制目标文件(.OBJ文件),再用连接程序LINK产生可执行文件(.EXE文件); ⑶用调试软件TD调试、运行程序,观察、记录结果。 四.实验步骤 1.进入子目录E:>\SY86后,利用QEDIT.EXE(简称Q)送入以下汇编语言源程序,并以M1.ASM文件存盘 ⑴汇编语言程序的上机过程 ①进入\SY86子目录 E:>CD\SY86 E:\SY86> ②进入QEDIT.EXE 编辑界面 E:\SY86> Q ③输入文件名*.ASM(如M1.ASM)后,输入源程序 源程序 DATA SEGMENT PARA PUBLIC’DATA’ ;数据段定义 DB 512 DUP(0) DATA ENDS STACK SEGMENT PARA STACK’STACK’ ;堆栈段定义 DB 512 DUP( ?) 4

微机原理实验指导书

微机原理及应用实验指导书 南京理工大学机械工程学院 2011年10月10日

实验1 基本操作实验 1. 实验目的 (1) 掌握TD-PITC 80X86 微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。 (2) 掌握使用运算类指令编程及调试方法; (3) 掌握运算类指令对各状态标志位的影响及其测试方法; (4) 学习使用软件监视变量的方法。 2. 实验设备 PC机一台,TD-PITC 实验装置一套。 3. 实验内容及步骤 通过对样例程序的操作,学会在TD-PITC境下,如何输入汇编语言程序,如何进行汇编语言源程序的汇编、连接、下载和运行;在调试程序的学习过程中,应学会: ●如何设置断点; ●如何单步运行程序; ●如何连续运行程序; ●怎样查看寄存器的内容; ●怎样修改寄存器的内容; ●怎样查看存储器的内容; ●怎样修改存储器的内容。 3.1 实验内容1――――BCD码转换为二进制数 实验内容: 将四个二位十进制数的BCD 码存放于3500H 起始的内存单元中,将转换的二进制数存入3510H 起始的内存单元中,自行绘制流程图并编写程序。 参考实验程序清单如下: SSTACK SEGMENT STACK DW 64 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE START: XOR AX, AX MOV CX, 0004H MOV SI, 3500H MOV DI, 3510H A1: MOV AL, [SI] ADD AL, AL MOV BL, AL

ADD AL, AL ADD AL, AL ADD AL, BL INC SI ADD AL, [SI] MOV [DI], AL INC SI INC DI LOOP A1 A2: JMP A2 CODE ENDS END START 实验步骤: 1)运行Wmd86 软件,进入Wmd86 集成开发环境。 2)根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言,如图1-1所示。语言选择后,下次再启动软件,语言环境保持这次的修改不变。在这里,我们选择汇编语言。 图1-1 语言环境选择界面 3)语言选择后,点击新建或按Ctrl+N 组合键来新建一个文档,如图1-2所示。默认文件名为Wmd861。 图1-2 新建文件界面 4)编写实验程序,如图1-3所示,并保存,此时系统会提示输入新的文件名,输完后点击保存。

微机原理及应用实验报告

微机原理及其应用上机实验报告 实验一 程序调试实验(顺序结构程序设计) 一、实验目的: 1.学习及掌握汇编语言源程序的基本结构,明确程序中各段的功能和相互之间的关系。 2.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。 3、熟悉和掌握DEBUG 常用命令的使用 二、实验要求: 1、上机前,要认真阅读前言和课本相关章节 2、上机前,画好流程图,编写好程序 3、上机时,注意出现的错误,记录下出错信息,翻译之 4、完成好实验报告 三、实验内容: 在内存TAB 开始的16个单元连续存放了0-15的平方值(0-225),任给一个数X(0 ≤ X ≤ 15),求X 的平方值,并把结果存放在Y 单元中。 (2).分析 X 平方的值是tab 为首地址且x 的值为有效地址中的值。 data segment x db 8 y db data ends stack segment para'stack' db 100 dup(0) stack ends code segment assume cs:code,ds:data,ss:stack start:mov ax,data mov ds,ax xor ax,ax

mov al,x lea si,tab add si,ax mov al,[si] mov y,al mov ah,4ch int 21h code ends end start (3).程序调试: 4.心得体会 了解了顺序结构,掌握了程序的运行,调试。 实验二分支程序设计 一、实验目的: 熟悉运算类指令对标志位的状态影响以及标志位状态的表示方法;掌握条件转移、无条件转移指令的使用方法。掌握分支程序设计、编写、调试和运行的方法。 二、实验要求: 1、上机前认真分析题意,找出算法,画出流程图,依据流程图,编好程序。 2、认真调试程序,对程序可能存在的所有分支都要进行运行,只有这样才能证明程序的正确性。 二、实验内容

微机原理与接口技术实验汇总

实验要求 1、带预习报告上机 根据实验要求,作好充分预习,设计实验硬件原理及接线图(必须标出相关的管脚号,以备硬件连线及测试),画出程序流程图,写出源程序清单,规划好调试步骤,上机时带预习报告。注意:无预习报告者不得做实验。 2、认真实验,经教师检查后,方可离开 注意掌握软、硬件调试方法,提高分析问题、解决问题的能力。对所编写的程序必须十分清楚,作到知其然,亦知其所以然,硬件电路原理清楚,熟练应用常规的仪器(如万用表、示波器等)检查测试硬件电路。指导教师还会根据实验要求,提出问题。3、按时提交实验报告 实验结束后,在预习报告的基础上,完成实验报告,并于下次实验时交给指导教师。 实验报告格式 实验* ***** ***** ***** 一、实验目的 二、实验内容 三、硬件原理及接线图 四、程序流程图 五、程序清单 六、实验步骤 七、实验结果及现象分析 八、收获及建议 测13实验安排: 地点:综合实验楼0701 实验周次星期小节 一 6 五1,2 二8 五1,2 三10 五1,2 四12 五1,2 五14 五1,2

实验一汇编语言程序的调试 一、实验目的 1、掌握8086汇编程序的编辑、编译、连接及运行过程。 2、掌握使用HQFC软件调试程序的方法。 二、实验内容:编制程序并调试 1、上机调试P45 项目1程序。 要求:1)写出调试步骤 2)记下代码段数据。 3)记下数据段数据 4)用单步调试法调试,记下每句程序目的操作数执行结果。观察每句程序 执行过程中CS、 IP、 FLAGS寄存器的变化。 2、上机调试P54 项目2程序,用单步调试法指出每句程序的调试结果。 要求:1)记下代码段数据。 2)记下数据段数据 3)记下程序执行前附加段数据、程序执行后附加段数据。 3)用单步调试法调试,记下lop句之前每句程序目的操作数执行结果。 观察其它句程序的执行结果,观察每句程序执行过程中CS、 IP、 FLAGS寄存器的 变化。 三、调试步骤 1、编辑源程序,形成****.ASM文件(可用HQFC软件或XP系统下的记事本编辑源程序) (注:在E:盘上建立一个你自己的文件夹,保存你自己的文件) 2、编译,形成****.OBJ文件(可用HQFC软件的编译功能) 3、链接,形成****.EXE文件(可用HQFC软件的构建功能) 4、运行(或调试)(可用HQFC软件的重构运行功能或开始调试) 四、调试步骤参考 1、编译(编译) 在当前运行环境下,选择菜单栏中的“ASM文件编译”菜单,选择编译选项则程序对当前ASM源文件进行编译,编译调试窗口中输出汇编的结果,若程序汇编有错,则详细报告错误信息。双击输出错误,集成开发环境会自动将错误所在行代码显示。 2、构建(汇编+链接) 在当前运行环境下,选择菜单栏中的“ASM文件编译”菜单,选择汇编+链接选项则程序对当前ASM源文件进行汇编与链接,编译调试窗口中输出汇编与链接的结果,若程序汇编或链接有错,则详细报告错误信息。双击输出错误,集成开发环境会自动将错误所在行代码显示。 3、重构运行(汇编+链接+执行) 在当前运行环境下,选择菜单栏中的“ASM文件编译”菜单,选择汇编+链接+执行选项则程序对当前ASM源文件执行,程序自动运行。

微机原理上机实验(一)实验报告数据传输传送实验

微机原理上机实验(一)实验报告 主题:数据传送 一、实验目的 熟悉星研集成环境软件的使用方法。熟悉Borland公司的TASM编译器 熟悉8086汇编指令,能自己编写简单的程序,掌握数据传输的方法。 二、实验内容 1、熟悉星研集成环境软件。 2、编写程序,实现数据段的传送、校验。 三、实验代码 _STACK SEGMENT STACK DW 100 DUP() _STACK ENDS DATA SEGMENT DATA ENDS CODE SEGMENT START PROC NEAR ASSUME CS:CODE, DS:DATA, SS:_STACK MOV AX, DATA ;将数据段的地址存入AX寄存器。AX=004DH MOV DS,AX ;对DS段寄存器赋值。DS=004DH MOV ES,AX ;对ES段寄存器赋值。ES=004DH NOP ;空指令

MOV CX,100H ;把100H送到CX寄存器。CX=0100H MOV SI,3000H ;把3000H送到SI寄存器。SI=3000H MOV DI,6000H ;把6000H送到DI寄存器。DI=6000H CALL Move ;调用Move子程序 MOV CX,100H ;把100H送到CX寄存器。CX=0100H MOV SI,3000H ;把3000H送到SI寄存器。SI=3000H MOV DI,6000H ;把6000H送到DI寄存器。DI=6000H CLD ;将DF标志位置0。设置SI、DI为递增移动,DF=0 REPE CMPSB ;比较[SI]和[DI],CX减1,ZF=0或CX=0跳出 ;若ZF=0或CX=0不成立,则继续比较。SI和DI持续递增 1 JNE ERROR ;若ZF=0,跳到ERROR子程序 TRUE: JMP $ ;跳到目前地址 ERROR: JMP $ ;跳到目前地址 Move PROC NEAR ;Move子程序 CLD ;将DF标志位置0。设置SI、DI为递增移动。DF=0 CMP SI,DI ;比较SI、DICF=SF=PF=1,仅有该三个标志位变化JZ Return ;如果相等,跳到Return JNB Move1 ;如果SI大于等于DI,跳到Move1 ADD SI,CX ;SI=SI+CX。SI=3100H DEC SI ;SI减1。SI=30FFH

微机原理实验报告

西安交通大学实验报告 课程_微机与接口技术第页共页 系别__生物医学工程_________实验日期:年月日 专业班级_____组别_____交报告日期:年月日 姓名__ 学号__报告退发 ( 订正、重做 ) 同组人_教师审批签字 实验一汇编语言程序设计 一、实验目的 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循环右移四位

微机原理实验报告

微机原理 实验报告 学校:湖北文理学院、班级:电子1413 姓名:杨仕浩 学号:2014111347 指导老师:吉向东

实验一两个多位十进制数相加的实验 一、实验目的 学习数据传送和算术运算指令的用法 熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。 二、实验内容 将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1、DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。 三、程序框图 四、实验程序清单 DATA SEGMENT DATA1 DB 33H,39H,31H,37H,34H;被加数 DATA1END EQU $-1 DATA2 DB 34H,35H,30H,38H,32H;加数 DATA2END EQU $-1 SUM DB 5 DUP(?) 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 AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX MOV SI,OFFSET DATA1END MOV DI,OFFSET DATA2END CALL A DDA MOV AX,4C00H INT 21H ADDA PROC NEAR MOV DX,SI MOV BP,DI MOV BX,05H AD1: SUB BYTE PTR [SI],30H SUB BYTE PTR [DI],30H DEC SI DEC DI DEC BX JNZ AD1 MOV SI,DX MOV DI,BP MOV CX,05H CLC AD2: M OV AL,[SI] MOV BL,[DI] ADC AL,BL AAA MOV [SI],AL DEC SI DEC DI LOOP AD2 MOV SI,DX MOV DI,BP MOV BX,05H AD3: ADD BYTE PTR [SI],30H ADD BYTE PTR [DI],30H DEC SI

微机原理实验简易计算器

【实验题目】 简易计算器设计 【实验目的】 综合测试学生微机接口技术及应用能力,包括系统构思设计、电路设计搭建、软件调试等; 结合应用实际,培养学生运用微机技术服务应用、服务实际的能力。 【基本要求】 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,7CH,39 H,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 OUT DX,AL MOV DX,3008H

8086软硬件实验报告(微机原理与接口技术上机实验)

实验一实验环境熟悉与简单程序设计 实验目的 (1)掌握DEBUG调试程序的使用方法。 (2)掌握简单程序的设计方法。 实验内容 编程将BH中的数分成高半字节和低半字节两部分,把其中的高半字节放到DH中的低4位(高4位补零),把其中的低半字节放到DL中的低4位(高4位补零)。如: BH=10110010B 则运行程序后 DH=00001011B DL=00000010B 实验准备 (1)熟练掌握所学过的指令。 (2)根据实验内容,要求预先编好程序。 实验步骤 (1)利用DEBUG程序输入、调试程序。 (2)按下表要求不断地修改BH的内容,然后记录下DX的内容。 实验报告 (1)给出程序清单。 (2)详细说明程序调试过程。

程序: CODE SEGMENT START : MOV BH,00111111B MOV AL,BH MOV CL,4 SHR AL,CL MOV DH,AL MOV AL,BH AND AL,00001111B MOV DL,AL MOV CL,0 CODE ENDS END START

实验二简单程序设计 实验目的 (3)掌握DEBUG调试程序的使用方法。 (4)掌握简单程序的设计方法。 实验内容 试编写一个汇编语言程序,要求实现功能:在屏幕上显示:Hello world My name is Li Jianguo 参考程序如下:(有错) data segment out1 db 'Hello world' ax db 'My name is Li Jianguo' data ens code segment assume cs:code;ds:data lea dx,out1 mov ah,2 int 21h mov dl,0ah mov ah,2

微机原理及应用实验报告

微机原理及应用实验报告标准化文件发布号:(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次 后,最小的那个数就会沉底,在下一次比较时将减少一次比较次数。如 果一次比较完毕,没有发生交换,说明已经按照从大到小的顺序排列 了。则可以退出循环,结束程序。 程序结构框图和程序代码如下:

微机原理实验指导书

微机原理实验指导书汕头大学机电系摘录

实验一P1口实验及延时子程序设计 1.实验目的 利用单片机的P1口作为I/O口进行实验验证,掌握利用P1口作为输入口和输出口的编程方法,理解并掌握延时子程序的设计方法。 2.实验设备及器件 IBM PC机一台 DP-51PRO单片机综合仿真实验仪一台 3.实验内容 (1)编写一段程序,用P1口作为控制端口,使D1区的LED轮流点亮。 (2)编写一段程序,用P1.0~P1.6口控制LED,P1.7控制LED的亮和灭(P1.7接按键,按下时LED 亮,不按时LED灭)。 图 1 4.实验要求 学会使用单片机的P1口作I/O口。如果时间充裕,也可以考虑利用P3口作I/O口来做该实验。 5.实验步骤 ①用导线把A2区的J61接口与D1区的J52接口相连。原理如图1所示。 ②先编写一个延时程序。 ③将LED轮流点亮的程序编写完整并调试运行。 ④使用导线把A2区J61接口的P1.0~P1.6与D1区J52接口的LED1~LED7相连,另外A2区J61接口的P1.7与D1区J53的KEY1相连。原理如图3.2(b)所示。 ⑤编写P1.7控制LED的程序,并调试运行(按下K1看是否全亮)。 ⑥A2区J61接口P1.7与D1区J54的SW1相连,然后再运行程序,拨动开关SW1查看结果。

6.实验预习要求 阅读附录内容,理解实验的硬件结构。可以先把程序编好,然后在Keil C51环境下进行软件仿真。 7.实验参考程序 程序1: ORG 8000H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为0000H LJMP M ain ORG 8100H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为0100H Main: MOV A,#0FFH CLR C MainLoop: CALL Delay RLC A MOV P1,A ;把A的值输出到P1口 SJMP MainLoop Delay: MOV R7, #0 ;延时 Loop: MOV R6, #0 DJNZ R6, $ DJNZ R6, $ DJNZ R6, $ DJNZ R7, Loop RET ; END 程序2: ORG 8000H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为0000H LJMP Main ORG 8100H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为0100H Main:JB P1.7,SETLED ;按键没有按下时,跳转到SETLED CLRLED: CLR P1.0 CLR P1.1 CLR P1.2 CLR P1.3 CLR P1.4 CLR P1.5 CLR P1.6 SJMP Main SETLED: SETB P1.0 SETB P1.1

微机原理上机实验答案

实验01A 将FFFFH送到AX,BX,CX,DX,SI,DI,BP寄存器 程序如下: CODE SEGMENT ASSUME CS:CODE START PROC FAR STT:PUSH DS SUB AX,AX PUSH AX ;============================== MOV AX,0FFFFH MOV BX,AX MOV CX,AX MOV DX,AX MOV SI,AX MOV DI,AX MOV BP,AX ;============================== RET START ENDP CODE ENDS END STT 实验01B 将FFH送到内存1000H,1001H,1002H,1003H,1004H单元中程序如下: DA TA SEGMENT ORG 1000H H1 DB 5 DUP(?) DA TA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA START PROC FAR STT:PUSH DS SUB AX,AX PUSH AX ;============================== MOV AL,0FFH MOV DI,1000H MOV CX,5 ;循环5次 LP1:MOV [DI],AL ;FF放入1000H-1004H中 INC DI

DEC CX JNZ LP1 ;============================== RET START ENDP CODE ENDS END STT 实验02A 编写一个加法程序,在数据段偏移地址1000H处开始,存放有两个3字节长的数据(高位对应高地址,低位对应低地址),求这两数据(十六进制数)的和,并将结果放在两数据之后,利用DEBUG调试程序,并求解:CCBBAAH+223344H=?CCBBAA+554433H=? 程序如下: DA TA SEGMENT ORG 1000H H1 DB 10 DUP(?) DA TA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA START PROC FAR STT:PUSH DS SUB AX,AX PUSH AX Mov ax,dseg Mov ds,ax ;============================== MOV SI,1000H ;不带最高位进位的全加器 MOV DI,1003H MOV BX,1006H MOV CX,3 CLC AA: MOV AL,[SI] ADC AL,[DI] MOV [BX],AL PUSHF ;保护FR,这里其实没有必要,因为INC不会产生进位 INC SI INC DI INC BX POPF LOOP AA

微机原理实验报告

微 机 原 理 实 验 报 告 班级: 指导老师:学号: 姓名:

实验一两个多位十进制数相加的实验 一、实验目的 学习数据传送和算术运算指令的用法 熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。 二、实验内容 将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1、DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。 三、程序框图 图3-1

四、参考程序清单 DATA SEGMENT DATA1 DB 33H,39H,31H,37H,34H;被加数 DATA1END EQU $-1 DATA2 DB 34H,35H,30H,38H,32H;加数 DATA2END EQU $-1 SUM DB 5 DUP(?) 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 AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX

MOV SI,OFFSET DATA1END MOV DI,OFFSET DATA2END CALL ADDA MOV AX,4C00H INT 21H ADDA PROC NEAR MOV DX,SI MOV BP,DI MOV BX,05H AD1: SUB BYTE PTR [SI],30H SUB BYTE PTR [DI],30H DEC SI DEC DI DEC BX JNZ AD1 MOV SI,DX MOV DI,BP MOV CX,05H CLC AD2: MOV AL,[SI] MOV BL,[DI] ADC AL,BL

北京理工大学微机原理实验报告

微机原理与接口技术 实验报告 实验内容:汇编语言程序设计实验 组别:12 姓名: 班级: 学号:

一、实验目的 1、熟悉IDE86集成开发环境的使用。 2、通过编程、上机调试,进一步理解汇编语言的设计思路与执行过程。 3、熟悉DOS命令调用,以达到输入输出、返回DOS系统等目的。 4、掌握利用汇编实现求和与求最值的方法。 5、掌握利用汇编实现数制转换的方法。 6、巩固理论知识,锻炼动手编程,独立思考的能力。 二、实验内容(具体内容) 1、求从TABLE开始的10个无符号字节数的和,并将结果放在SUM字单元中。并查看前5个,前8 个数之和以及各寄存器和内存的状态。 2、在1的基础上修改程序,求出10个数中的最大值和最小值,最后将最大最小值分别赋给MAX及 MIN。 3、求1到 100 的累加和,并用十进制形式将结果显示在屏幕上。要求实现数据显示,并返回DOS 状态。 三、实验方法 1、设计思路 (1)实验1的设计思路:先将10个要相加的数存在以TABLE为首的10个连续的存储单元中,然后利用循环结构依次取出数值放在AL中并累加,若有进位则加到AH中直至循环10次累加结束,将累加的结果放在SUM中并返回DOS状态。 (2)实验2的设计思路:先将10个要比较的数放在以TABLE为首的10个连续的存储单元中。 将第一个数首先赋给AL和AH(分别存储相对最小和最大值)在利用LOOP循环结构,依次和下面的数进行比较,每次把相对的最大值与最小值存储到AH和AL中直至循环9次比较结束,将AH和AL里面的最大值与最小值赋给MAX和MIN,返回DOS状态 (3)实验3的设计思路:先在内存中定义COUNT=100,表示1-100求和,若相求1-n的和并显示只需COUNT的值为n即可,同时定义一块以DNUM为首地址的数据区用于存储累加和的十进制数对应的ASCII码。先利用AX和LOOP求出1-COUNT的累加和存在AX中;在进行数值转化,AX 依次除10取余数保存,将16进制数转化为10进制ASCII码值并存在DUNM中。最后在屏幕上显示并返回DOS状态。 2程序流程图 实验一、二和三的流程图分别如图1、图2和图3所示

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

微机原理及应用实验 实验一开发环境的使用 一、实验目的 掌握伟福开发环境的使用方法,包括源程序的输入、汇编、修改;工作寄存器内容的查看、修改;内部、外部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机一台。

微机原理上机实验报告3

201406 微机原理上机实验报告 实验三 班级:物联网1班 姓名:邓笑游 学号: 01210261y11 成绩:

实验3:8086 典型习题的上机求解实验 一、实验目的 1、了解8086指令的特点。 2、学会用Debug和源程序的上机方法求解作业答案的方法。 二、预习要点 1、习题的现场 2、选用工具的方法 三、实验项目 在DOS下利用Debug调试工具和MASM、LINK工具和模版验证求解典型习题的答案。 四、实验设备环境 PC机1台,DOS操作系统,Debug调试工具 五、实验方法 1.现有数据段如下: DAT1 SEGMENT ORG 0020H A1 DW 12H , 23H A2 DB 11H , 21H A3 EQU 1234H A4 EQU $+8 A5 DW 31H , A2 DAT1 ENDS 该数据段占有多少字节的存储空间?A5的偏移地址是何值?A4的值是多少? 2.若48H和93H是无符号数。 SOUR DB 48H,93H MZ DB ?

MOV AL,SOUR CMP AL,SOUR+1 JA K1 MOV AL,SOUR+1 K1: MOV MZ,AL 试问:①(MZ)=_____________ ②48H和93H是有符号数,JA K1指令应改为什么指令? 3.编程序统计某班100个学生英语考试分数高于等于85分以上的人数,结果存入MN字节中。 六、实验要求 将习题1、2、3改造上机求解答案

实验3报告习题1的上机源程序 习题1的汇编、链接

习题1的代码段 已看到答案,该数据段占有10个字节的存储空间?A5的偏移地址是0026H?A4的值是002EH 习题2的源程序

微机原理上机实验报告

微机原理上机实验报告 实验六:74HC138译码器实验实验十:LED 16x16点阵显示实验

微机原理上机实验(六)实验报告 实验六:74HC138译码器实验 一、实验目的 1、掌握74HC138译码器的工作原理,熟悉74HC138译 码器的具体运用连接方法,了解74HC138是如何译码的。 2、认真预习本节实验内容,尝试自行编写程序,填写实 验报告 二、实验内容 1、编写程序:使用8255的PC0、PC1、PC2控制 74HC138的数据输入端,通过译码产生8选1个选通信号,轮流点亮8个LED指示灯。 2、运行程序,验证译码的正确性。 三、实验原理图 四、实验步骤

1、连线说明: F7区:A、B、C — —D3区:PC0、PC1、PC2 F7区:G1、G2A、G2B — — C1区:VCC、GND、 GND F7区:JP63 — —F4区:JP18(LED 指示灯) D3区:CS、A0、A1 — — A3区:CS1、A0、 A1 2、调试程序,查看运行结果是否正确 五、实验代码 Con_8255EQU 0273H ;8255控制口 PC_8255 EQU 0272H ;8255 PC口_STACK SEGMENT STACK ;设置堆栈段 DW 100 DUP(?) _STACK ENDS CODE SEGMENT START PROC NEAR

ASSUME CS:CODE, SS:_STACK MOV DX,Con_825 5 MOV AL,80H OUT DX,AL ;8255初始化,PC口作输 出用,向8255的控制口 输入置位/复位控制字 10000000B,PC0~PC7 全部复位 MOV DX,PC_8255 MOV AL,0 START1: OUT DX,AL 将00000000B输入8255 的PC口 CALL Delay 延时 INC AL AL加一 JMP START1 循环 Delay PROC NEAR ;延时 Delay1: XOR CX,CX ;CX清零 LOOP $ 当前位置循环一次后推 出 RET Delay ENDP

微机原理实验参考答案(航大)

《微机原理》实验参考答案 实验1 汇编基本指令及顺序程序设计实验 实验2 分支与DOS中断功能调用程序设计实验 实验3 循环结构程序设计实验 实验4 存储器扩展实验 实验5 8259应用编程实验 实验1汇编基本指令及顺序程序设计实验 一、实验目的 1、掌握汇编语言的开发环境和上机过程; 2、掌握DEBUG命令; 3、掌握顺序程序设计方法; 4、掌握寻址方式; 5、理解和掌握汇编基本指令的功能。 二、实验内容 1、设堆栈指针SP=2000H,AX=3000H,BX=5000H;请编一程序段将AX和BX的内容进行交换。要求:用3种方法实现。 答:方法一CODE SEGMENT ASSUME CS:CODE START: MOV AX,3000H MOV BX,5000H MOV CX,AX MOV AX,BX MOV BX,CX CODE ENDS END START 方法二CODE SEGMENT ASSUME CS:CODE START: MOV AX,3000H MOV BX,5000H XCHG AX,BX CODE ENDS END START

方法三CODE SEGMENT ASSUME CS:CODE START: MOV AX,3000H MOV BX,5000H PUSH AX PUSH BX POP AX POP BX CODE ENDS END START 2、分别执行以下指令,比较寄存器寻址,寄存器间接寻址和相对寄存器寻址间的区别。 MOV AX,BX 寄存器寻址,将BX内容送AX MOV AX,[BX] 寄存器间接寻址,将DS:BX内存单元内容送AX MOV AX,10[BX] 寄存器相对寻址,将DS:BX+10内存单元内容送AX 在DEBUG调试模式,用A命令直接编辑相应指令并用T命令单步执行,执行后查询相应寄存器的值并用D命令查内存。 3、已知有如下程序段: MOV AX,1234H MOV CL,4 在以上程序段的基础上,分别执行以下指令: ROL AX,CL AX=2341H ROR AX,CL AX=4123H SHL AX,CL AX=2340H SHR AX,CL AX=0123H SAR AX,CL AX=0123H RCL AX,CL 带进位标志位的循环左移 RCR AX,CL 带进位标志的循环右移 4、设有以下部分程序段: TABLE DW 10H,20H,30H,40H,50H ENTRY DW 3 ┇ LEA BX,TABLE ADD BX,ENTRY MOV AX,[BX] ┇ 要求:(1)将以上程序段补充成为一个完整的汇编程序。

相关文档
最新文档