中南民族大学 微机原理实验答案

中南民族大学 微机原理实验答案
中南民族大学 微机原理实验答案

中南民族大学微机原理实验答案

实验一

第二题在debug中实现在屏幕上显示“0123456789”

A 100

0100:mov cx,0a

Mov dl,30

Mov ah,2

0106: int 21h

Inc dl

Loop 0106

Int 20h

第三题用int 21h 中的2号功能在屏幕上显示“122333444455555666666777777788888888999999999”

a 100

0100: mov cx,9

mov dl,31h

0104: push cx

xor cx,cx

mov cl,dl

sub cl,30h

010c: mov ah,2

int 21h

loop 010c

inc dl

pop cx

loop 0100

mov ax,4c00h

int 21h

int 20h

第四题用九号功能在屏幕上显示‘9876543210’

A 100

0100: db ‘9876543210’

0106: Mov dx,0100

mov ah,9h

int 21h

Int 20h

实验二

第三题修改程序,在第一行连续显示4个“Hello,World!”每个以空格分开。

name hello

sseg segment stack

db 64 dup(0)

sseg ends

dseg segment

mess db 'hello World!',' ','$'

dseg ends

cseg segment

assume cs:cseg,ds:dseg,ss:sseg,es:dseg main proc far

begin:mov ax,dseg

mov ds,ax

mov es,ax

mov ah,9

mov cx,4

s1: mov dx,offset mess

int 21h

loop s1

mov ax,4c00h

int 21h

main endp

cseg ends

end begin

第四题

name hello

sseg segment stack

db 64 dup(0)

sseg ends

dseg segment

mess db 'hello World!','0ah,0dh,'$'

dseg ends

cseg segment

assume cs:cseg,ds:dseg,ss:sseg,es:dseg main proc far

begin:mov ax,dseg

mov ds,ax

mov es,ax

mov ah,9

mov cx,20

s1: mov dx,offset mess

int 21h

loop s1

mov ax,4c00h

int 21h

main endp

cseg ends

end begin

第二题

code segment assume cs:code

con8255 equ 0ff2bh pb8255 equ 0ff29h pa8255 equ 0ff28h pc8255 equ 0ff2ah

org 4200h

start:

mov al,88h

mov dx,con8255 out dx,al

mov dx,pc8255

L0: in al,dx

mov cl,4

rol al,cl

out dx,al

Jmp L0

code ends

end start

code segment assume cs:code

con8255 equ 0ff2bh pb8255 equ 0ff29h pa8255 equ 0ff28h

org 4100h

start:

mov dx,con8255 mov al,80h

out dx,al

mov dx,pa8255

L0: mov al,0h out dx,al

call delay

mov al,0ffh

out dx,al

call delay

jmp L0

hlt

delay: push cx

mov cx,005h

L3: mov bx,8000h L2: dec bx

jnz L2

loop L3

pop cx

ret

code ends

end start

第四题

code segment assume cs:code

con8255 equ 0ff2bh pb8255 equ 0ff29h pa8255 equ 0ff28h

org 4200h

start:

mov al,80h

mov dx,con8255 out dx,al

mov dx,pb8255

L0: mov al,0ffh mov cx,08h

L1: clc

rcl al,1

out dx,al

call delay

loop L1

mov cx,08h

L2: stc

rcr al,1

out dx,al

call delay

loop L2

jmp L0

delay: push cx

mov cx,005h

L3: mov bx,8000h

L4: dec bx

jnz L4

loop L3

pop cx

ret

code ends

end start

实验四

3

code segment assume cs:code

con8255 equ 0ff2bh pb8255 equ 0ff29h pa8255 equ 0ff28h p8259com0 equ 0ff80h p8259com1 equ 0ff81h intq3 equ interrupt3

org 4400h

start:mov al,80h

out dx,al

mov ax,offset interrupt mov ds:[002ch],ax mov ax,0000h

mov ds:[002eh],ax

mov al,13h

mov dx,p8259com0 out dx,al

mov al,08h

mov dx,p8259com1 out dx,al

mov al,09h

out dx,al

mov al,11110111B out dx,al

mov al,7fh

out dx,al

mov ah,7fh

mov cx,0008h

L1:cmp cx,0000h jnz L0

mov dx,p8259com1 mov al,0ffh

out dx,al

sti

hlt

L0:sti

jmp L1

interrupt :stc

rcr ah,1

mov al,ah

mov dx,pa8255

out dx,al

dec cx

mov dx,p8259com0 mov al,20h

out dx,al

iret

code ends

end start

内蒙古工业大学微机原理实验指导答案.doc

被嗅材尊机原理与旅用实验指导布实验 程禹够告 沽说:信息工程修陇班披, 电8 77-7班g生名:Eg 样号,2011202030 实验一编辑、汇编、 连接、调试程序的使用 程序设计A 设计要求 (1)将FFFFH 送到AX, SI, DI, BP, DS, ES 寄存器 (2)编程(利用DEBUG调试程序,每执行一次T命令后,记录相关寄存器

内容,并判断是否正确。)程序如下: CODE SEGMENT ASSUME CS:CODE START PROC FAR STTPUSH DS SUB AX,AX PUSH AX MOV AX,0FFFFH MOV SI,AX MOV DI,AX MOV BP,AX MOV DS,AX MOV ES,AX RET STARTENDP CODE ENDS END STT B、设计要求 ⑴将1,2,3,4,5分别送到数据段偏移地址为1000H, 1001H, 1002H, 1003H, 1004H,单元中。 ⑵编程 DATA SEGMENT ORG 1000H DATA ENDS CODE SEGMENT ASSUME CS:CODE START PROC FAR STTPUSH DS SUB AX,AX PUSH AX MOV AX, DATA MOV DS,AX MOV AL,1 MOV DS:[1000H],AL

MOV AL,2 MOV DS:[1001H],AL MOV AL,3 MOV DS:[1002H],AL MOV AL,4 MOV DS:[1003H],AL MOV AL,5 MOV DS:[1004H],AL RET STARTENDP CODE ENDS END STT 实验二、加法程序设计 设计内容A、设计要求 (1)在数据段偏移地址1000H处开始,连续存放有3字节的数据(高位对应高地 址,低位对应低地址),1003H处开始连续存放有两字节的数据(高对高,低 对低),求这两数据之和,并将结果放在流量数据之后。(eg: 1234 56H+78 9AH=12 AC FOH) (2)编程 DATA SEGMENT ORG 1000H H1 DB56H J34H,12H,9AH,78H H2 DB 3DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START PROC FAR STTPUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOVSIJOOOH MOV DI,1003H MOV BX,1005H MOV CX,2 CLC LP:MOVAL,[SI] MOV DL,[DI[ ADCAL,DL MOV [BX],AL INC SI

微机软件实验习题与答案(完整版)

微机原理软件实验 实验1 两个多位十进制数相加的实验 实验容:将两个多位十进制数相加,要求加数和被加数均以ASCII码形式各自顺序存放以DATA1和DATA2为首的5个存单元中(低位在前),结果送回DATA1处。完整代码如下: DATAS SEGMENT ;此处输入数据段代码 STRING1 DB'input the first number:','$' STRING2 DB 13,10,'input the second number:','$' STRING3 DB 13,10,'the output is:','$' DATA1 DB 6 DUP(00H),'$' DATA2 DB 6 DUP(00H),'$' DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX ;此处输入代码段代码 LEA SI,DATA1 LEA DI,DATA2 L0: LEA DX,STRING1;打印字符串STRING1 MOV AH,09 INT 21H INPUT1: ;输入第一个数 MOV AH,01;输入字符至AL中 INT 21H CMP AL,'/' JE L1 MOV [SI],AL INC SI

JMP INPUT1 L1: LEA DX,STRING2;打印字符串STRING2 MOV AH,09 INT 21H INPUT2: ;输入第二个数 MOV AH,01;输入字符至AL INT 21H CMP AL,'/' JE L2 MOV [DI],AL INC DI JMP INPUT2 L2: MOV SI,0 CLC;清空进位标志位CF MOV CX,6

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

微机原理上机实验(一)实验报告 主题:数据传送 一、实验目的 熟悉星研集成环境软件的使用方法。熟悉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

微机原理实验讲义

微机原理实验讲义 程曙艳编 厦门大学自动化系 2016年10月

汇编语言的上机过程 1、建立汇编语言的工作环境 至少有以下程序文件: 编辑程序,文件名https://www.360docs.net/doc/443554231.html,,使用https://www.360docs.net/doc/443554231.html,编辑程序代码生成*.asm。 汇编程序,文件名MASM.EXE,使用masm.exe对*.asm文件进行汇编,生成*.obj 文件 连接程序,文件名LINK.EXE,使用link.exe对目标文件*.obj进行连接生成*.exe 文件 调试程序,文件名DEBUG.EXE,使用debug.exe对可执行文件*.exe进行调试运行 (1)编辑 可以用记事本或DOS下的EDIT编辑器来编写源程序。但程序保存时文件必须取名为*.asm 。或EDIT 文件名.asm 打开已经存在的文件。 (2)汇编 在DOS状态执行masm 文件名,则屏幕显示与操作如下: (3)连接 汇编后产生的目标文件必须经过连接,才能成为可执行文件.exe。在DOS 状态执行link 文件名,则屏幕显示与操作如下: (4)运行、调试

>DEBUG 文件名.exe Debug运行后,出现状态提示符短划线- 常用debug命令: D,显示内存单元内容 R,显示与修改寄存器内容 T、P,单步执行命令 G,连续执行指令 U,反汇编 Q,退出DEBUG程序 2. 汇编语言程序格式 汇编语言由若干个段组成: 堆栈段(保存数据、断点等信息) 代码段(存放指令)必需 数据段(定义数据,分配存储单元) 附加段(定义数据,分配存储单元) 每段必须有且仅有一个名字,以SEGMENT定义段的起始,以ENDS定义段的结束,整个程序结束后需以END收尾 STACK SEGMENT ...... STACK ENDS DATA SEGMENT ...... DATA ENDS ESEG SEGMENT ...... ESEG ENDS CODE SEGMENT ASSUME CS:CODE ,DS:DATA,SS:STACK,ES:ESEG START:mov ax, data mov ds, ax mov ax, eseg mov es, ax mov ax, stack mov ss, ax ………. CODE ENDS END START

微机原理实验报告

西安交通大学实验报告 课程_微机与接口技术第页共页 系别__生物医学工程_________实验日期:年月日 专业班级_____组别_____交报告日期:年月日 姓名__ 学号__报告退发 ( 订正、重做 ) 同组人_教师审批签字 实验一汇编语言程序设计 一、实验目的 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.熟悉汇编语言环境。 2.掌握汇编语言的上机过程。 3.了解汇编语言程序的编程格式。 二、实验要求 通过一个小程序的编写达到以上的实验目的。 三、实验原理 1.汇编语言程序的上机过程 用汇编语言编写的程序称为源程序,源程序也不能由机器直接执行,而必须翻译成机器代码组成的目标程序,这个翻译过程称为汇编。在微型机中,当前绝大多数情况下,汇编过程是通过软件自动完成的,用来把汇编语言编写的程序自动翻译成目标的软件叫汇编程序,汇编过程如下: 四、实验步骤 1、打开编辑环境 2、输入程序 CODE SEGMENT ASSUME CS:CODE START: MOV AL,01H MOV BL,40H ADD AL,BL MOV DL,AL MOV AH,02H INT 21H MOV AH,4CH INT 21H CODE ENDS END START 3、保存源程序,以.ASM为扩展名。C:\MASM\1.ASM 4、建立汇编过程 (1)用宏汇编程序汇编源程序C:\MASM>MASM 1.ASM 汇编程序有3个输出文件【.obj】文件,【.LST】文件,【.CRF】文件,.OBJ文件是我们所需 要的文件。汇编程序还有另外一个重要功能:可以给出源程序中的错误信息。 (2)用连接程序将OBJ文件转换为可执行的EXE文件C:\MASM>LINK 1.OBJ 5、执行程序:C:\MASM>1.EXE

实验二两个多位十进制数相加的实验 一、实验目的: 1.学习数据传送和算术运算指令的用法。 2.熟悉在PC机上建立汇编链接调试和运行汇编语言程序的过程。 二、实验内容: 将两个多位十进制数相加。要求加数和被加数均以ASCII码形式各自顺序存放在以DATA1和DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。 三、程序框图 四、实验原理 1.ADC 带进位相加指令的功能和指令格式 2.AAA 、DAA、 AAS、 DAS指令的功能和指令格式 3.伪指令SEGMENT 、ENDS、 ASSUME、MACRO、ENDM的使用 4.子程序的定义(PROC NEAR/FAR ENDP),以及子程序调用和返回指令:CALL、RET的使用

微机原理复习资料1答案

一、单选题(30) 1C 2B 3C 4A 5C 6C 7A 8D 9A 10D 11B 12D 13C 14A 15B 16C 17D 18A 19B 20A 21C 22D 23A 24D 25C 26A 27B 28C 29D 30C 二、判断题(20) 1√2 X 3 X4√5 X6 X7√8 X9√10 X 11X12 X13√14√15√16√17 X18 X19 X20 X 三、简答题(10) 1 课本P368。 2 WR# RD# M/IO# BHE# DT/R# mov ah, DS:[1001] : 1 0 1 0 0 mov ah, DS:[1000] : 1 0 1 1 0 mov ax, DS:[1000] : 1 0 1 0 0 3 答案要点: INTR信号有效, 中断允许标志位1; CPU执行完当前指令。 4 答案要点: 采用先进的超标量流水线机制,以并行方式在U、V两条流水线上同时执行两条指令。在U 流水线上可以执行任意指令,但是在V流水线上只能执行和当前U流水线上执行的指令符合配对规则的指令。 5 答案要点: 逻辑地址、线性地址、物理地址; 逻辑地址=段选择子:偏移量,通过逻辑地址可得到段描述,之后将得到线性地址。 线性地址=段基址+偏移量,线性地址通过相应的页面映射规则(如果有)就可以得到实际的物理地址。 物理地址=页基址+页内偏移量,通过线性地址相应的页面映射规则得到。 6 答案要点: GDT/IDT为所有任务共享;

LDT为每个任务私有。 7 答案要点: 需要16Kx8/8Kx4=4,一共需要4片 1#和2#芯片构成bank0,3#和4#芯片构成bank1 bank0:8Kx8,2^13,A0=0 bank1:8Kx8,2^13,BHE#=0 8 答案要点: 2个总线周期。 第一个总线周期:8086触发一个INTA脉冲,告诉中断控制器,它的INTR予以确认。 第二个总线周期:CPU出发一个INTA脉冲,让中断控制器将中断类型号放在数据总线上,并在T4拍开始的下降沿采集中断类型号。 9 答案要点: 包含两个方面:(1)初始化数据缓冲区的起始地址(2)初始化传输的字节数 10 答案要点: 在设置特殊屏蔽方式后,在用OCW1对屏蔽寄存器的的某一位置1时,会同时使当前中断

微机原理实验答案汇总

1.题目:编程将(AX)=2387、(BX)=192FH、(CX)=9256中的无符号数按由大到小排序,上机编程调试出程序,并将程序及排序结果记录在下面。 CODE SEGMENT ASSUME CS:CODE START: MOV AX,2387 MOV BX,192FH MOV CX,9256 CMP AX,BX JAE NEXT1 XCHG AX,BX NEXT1: CMP AX,CX JAE NEXT2 XCHG AX,CX NEXT2: CMP BX,CX JAE NEXT3 XCHG BX,CX NEXT3: MOV AH,4CH INT 21H CODE ENDS END START 2.题目:编程将(BX)=8600H、(CX)=3489H、(DX)=9235按有符号数由大到小排序,上机编程调试出程序,并将程序及排序结果记录在下面。 ;CODE SEGMENT ASSUME CS:CODE START: MOV BX,8600h MOV CX,3489H MOV DX,9235 CMP BX,CX JGE NEXT1 XCHG BX,CX NEXT1: CMP BX,DX JGE NEXT2 XCHG BX,DX NEXT2: CMP CX,DX JGE NEXT3 XCHG CX,DX NEXT3:

MOV AH,4CH INT 21H CODE ENDS END START 3.题目:在数据段中定义如下数据:32,34,89H,,编程将以上数据按有符号数进行排序,并将程序和结果记录下来。 DATA SEGMENT NUM DB 32,34,89H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DAT START: MOV AX,DATA MOV DS,AX ;初始化DS LEA BX,NUM ;取有效地址到BX,以便访问要排序的数 MOV AL,[BX] CMP AL,[BX+1] JGE NEXT1 ;若第一个数大则跳转,否则将第一个与第二个数交换 XCHG AL,[BX+1] MOV [BX],AL NEXT1: CMP AL,[BX+2] JGE NEXT2;若第一个数大则跳转,否则将第一个与第三个数交换 XCHG AL,[BX+2] MOV [BX],AL NEXT2: MOV AL,[BX+1];将第二个和第三个数比较 CMP AL,[BX+2] JGE NEXT3;若第二个数大则跳转,否则将第二个与第三个数交换 XCHG AL,[BX+2] MOV [BX+1],AL NEXT3: MOV AH,4CH INT 21H CODE ENDS END START 4.题目:在数据段中定义如下数据:99,25,86,编程将以上数据按无符号数进行排序,上机调试出程序,并将程序和结果记录下来。 data segment num db 99h,25h,86h data ends code segment assume cs:code,ds:data start:mov ax,data

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

微机原理实验讲义2015

微机原理实验讲义 实验一8255A并行口实验(一) 一、实验目的 ⒈掌握8255A和微机接口方法。 ⒉掌握8255A的工作方式和编程原理。 二、实验内容 用8255PA口控制PB口。 三、实验接线图 图6-3 四、编程指南 ⒈8255A芯片简介: 8255A可编程外围接口芯片是INTEL公司生产的通用并行接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作: 方式0:基本输入/ 输出方式 方式l:选通输入/ 输出方式 方式2:双向选通工作方式 ⒉使8255A端口A工作在方式0并作为输入口,读取Kl-K8个开关量,PB 口工作在方式0作为输出口。

五、实验程序框图 六、实验步骤 ⒈在系统显示监控提示符“P.”时,按SCAL键,传送EPROM中的实验程序到内存中。(注:必须先传送EPROM后,再往下操作) ⒉ 8255A芯片A口的PA0-PA7依次和开关量输入Kl-K8相连。 ⒊ 8255A芯片B口的PB0-PB7依次接Ll-L8。 ⒋运行实验程序。 在系统显示监控提示符“P.”时,输入11B0,按EXEC键,系统显示执行提示符“┌”拨动K1-K8, LI-L8会跟着亮灭。 七、实验程序清单 CODE SEGMENT ;H8255-1.ASM ASSUME CS:CODE IOCONPT EQU 0FF2BH ;定义8255控制口 IOBPT EQU 0FF29H ;定义8255 PB口 IOAPT EQU 0FF28H ;定义8255 PA口 ORG 11B0H START: MOV AL,90H ;定义PA输入,PB输出 MOV DX,IOCONPT ;控制口 OUT DX,AL ;写命令字 NOP ;延时 NOP NOP IOLED1: MOV DX,IOAPT ;PA口 IN AL,DX ;读PA口 MOV DX,IOBPT ;PB口 OUT DX,AL ;写PB口 MOV CX,0FFFFH ;延时 DELAY: LOOP DELAY JMP IOLED1 ;循环

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

《微机原理》实验参考答案 实验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)将以上程序段补充成为一个完整的汇编程序。

微机原理及应用实验报告

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

微机原理习题集答案1-5

第1章概述 一、填空题 1.运算器、控制器、存储器、输入设备和输出设备。 2.运算器、控制器。 3.数据总线、地址总线、控制总线。 4.系统总线(或通信总线);系统内总线(板级总线);内部总线。 5.程序存储、程序控制、冯·诺依曼型。 二、简答题 1.答:微处理器是微计算机系统的核心硬件部件,它本身具有运算能力和控制功能,对系统的性能起决定性的影响。微处理器一般也称为CPU;微计算机是由微处理器、存储器、I/O接口电路及系统总线组成的裸机系统。微计算机系统是在微计算机的基础上配上相应的外部设备和各种软件,形成一个完整的、独立的信息处理系统。三者之间是有很大不同的,微处理器是微型计算机的组成部分,而微型计算机又是微型计算机系统的组成部分。 2.答:总线是模块与模块之间传送信息的一组公用信号线。 总线标准的建立使得各种符合标准的模块可以很方便地挂在总线上,使系统扩展和升级变得高效、简单、易行。因此微型计算机系统中普遍采用总线结构。 3.答:微型计算机系统总线从功能上分为地址总线、数据总线和控制总线三类。地址总线用于指出数据的来源或去向,单向;数据总线提供了模块间数据传输的路径,双向;控制总线用来传送各种控制信号或状态信息以便更好协调各功能部件的工作。 第2章计算机中的数制与编码 一、填空题 1. (1) (0110 1110)二进制原码=(+110 1110)二进制真值=(+110)十进制真值 (0110 1110)二进制反码=(+110 1110)二进制真值=(+110)十进制真值 (0110 1110)二进制补码=(+110 1110)二进制真值=(+110)十进制真值 (2) (1011 0101)二进制原码=(-011 0101)二进制真值=(-53)十进制真值 (1011 0101)二进制反码=(-100 1010)二进制真值=(-74)十进制真值 (1011 0101)二进制补码=(-100 1011)二进制真值=(-75)十进制真值 2. (1) (+101 0110)二进制真值=(0101 0110)原码=(0101 0110)反码=(0101 0110)补码 (2) (-101 0110)二进制真值=(1101 0110)原码=(1010 1001)反码=(1010 1010)补码

微机原理上机实验报告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的源程序

微机原理上机实验答案

实验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

微机原理上机实验报告

微机原理上机实验报告 实验六: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

微机原理实验报告

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

实验一两个多位十进制数相加的实验 一、实验目的 学习数据传送和算术运算指令的用法 熟悉在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

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

微机原理与接口技术》 上机报告 学院:机电学院指导教师:胡勇学号:631424210229 姓名:鞠其林

实验一初级程序的编写与调试实验 、实验目的 1、熟练掌握DEBUG的常用命令,学会用DEBUG调试程序. 2、深入了解数据在存储器中的存取方法, 及堆栈中数据的压入与弹出 3、掌握各种寻址方法以及简单指令的执行过程. 二、实验内容 1、设堆栈指针SP=2000H,AX=3000H,BX=5000H请, 编一程序段将AX的内容和BX 的内容进行交换. 请用堆栈作为两寄存器交换内容的中间存储单元, 用DEBUG调试程序进行汇编与调试. 程序: MOV AX,3000 MOV BX,5000 MOV SP,2000 PUSH AX PUSH BX POP AX POP BX HLT

2、设AX=0002H,编一个程序段将AX的内容乘10, 要求用移位的方法完成程序: MOV AX,0002 MOV BX,AX MOV CL,2 SHL AX,CL ADD AX,BX MOV CL,1 SHL AX,CL HLT

三、心得体会 从这个程序的编辑过程中我感受到了汇编语言的强大,很直观的就可以读懂程 序的含义,但代码比较难记,而且语法严谨,我调试的过程中犯了一点错误, 修改的次数较多,希望我以后可以不再犯同样的错误,也是因为我练的比较的 少,还很生疏,我以后一定多加练习,把汇编学好 实验二 加法及判断程序的编写与调试 、实验目的 1、熟练掌握编写汇编语言源程序的基本方法和基本框架 2、学会编写顺序结构 , 分支结构和循环结构的汇编程序

3、掌握程序中数据的产生与输入输出的方法. 二、实验内容 1、用汇编语言编写一个加法程序: 1325+9839 请用ASCII 码的形式将加数与被加数存放在数据区DATA1和DATA2中, 并将相加结果显示输出. 程序: DATA SEGMENT DATA1 DB '5','2','3','1' DATA2 DB '9','3','8','9' DATA ENDS STACK SEGMENT PARA STACK 'STACK' DB 200 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX LEA SI,DATA1 LEA DI,DATA2 MOV CX,4 MOV AH,0 NEXT: MOV AL,[SI] ADC AL,[DI] ADC AL,AH MOV AH,0 AAA ADD AL,30H MOV [DI],AL INC DI INC SI LOOP NEXT MOV CX,5 ADD AH,30H MOV [DI],AH NEXT1:MOV DL,[DI] MOV AH,02 INT 21H DEC DI

中南民族大学 微机原理实验答案

中南民族大学微机原理实验答案 实验一 第二题在debug中实现在屏幕上显示“0123456789” A 100 0100:mov cx,0a Mov dl,30 Mov ah,2 0106: int 21h Inc dl Loop 0106 Int 20h 第三题用int 21h 中的2号功能在屏幕上显示“122333444455555666666777777788888888999999999” a 100 0100: mov cx,9 mov dl,31h 0104: push cx xor cx,cx mov cl,dl sub cl,30h 010c: mov ah,2

int 21h loop 010c inc dl pop cx loop 0100 mov ax,4c00h int 21h int 20h 第四题用九号功能在屏幕上显示‘9876543210’ A 100 0100: db ‘9876543210’ 0106: Mov dx,0100 mov ah,9h int 21h Int 20h 实验二 第三题修改程序,在第一行连续显示4个“Hello,World!”每个以空格分开。 name hello sseg segment stack db 64 dup(0)

sseg ends dseg segment mess db 'hello World!',' ','$' dseg ends cseg segment assume cs:cseg,ds:dseg,ss:sseg,es:dseg main proc far begin:mov ax,dseg mov ds,ax mov es,ax mov ah,9 mov cx,4 s1: mov dx,offset mess int 21h loop s1 mov ax,4c00h int 21h main endp cseg ends end begin 第四题 name hello

相关文档
最新文档