实验四屏幕字符显示程序

实验四屏幕字符显示程序
实验四屏幕字符显示程序

实验报告

课程名称微机原理与接口(技术)专业电子信息工程

班级

学号

学生姓名

黄淮学院信息工程学院

实验报告四

JNZ LP

LEA DX,BUF

MOV AH,09H

INT 21H

INT 20

CODE ENDS 5、实验结果

程序一:

Emu8086运行结果:

程序2

Emu8086运行结果:

程序3:

Emu8086运行结果:

6、实验中遇到的问题

1)在调试实验三时,使用02H调用时屏幕上显示的字幕很慢很少。2)程序的编写还是有欠缺自己下去还要继续努力。

指导教师批阅成绩

指导教师签字:

年月日

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

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

微机原理实验程序

实验一两个多位十进制数相减实验 一、实验要求:将两个多位十进制数相减,要求被减数,减数均以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循环右移四位

微机8086实验程序

;A1.asm ;显示程序实验 STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS DA TA SEGMENT MES1 DB 'Show a as hex:',0AH,0DH,'$' SD DB 'c' DA TA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DA TA MOV DS,AX MOV DX,OFFSET MES1 ;show message MOV AH,09H INT 21 MOV SI,OFFSET SD MOV AL,DS:[SI] AND AL,0F0H ;取高4位 MOV CL,4 SHR AL,CL CMP AL,0AH ;是否是A以上的数 JB C2 ADD AL,07H C2: ADD AL,30H MOV DL,AL ;show character MOV AH,02H INT 21H MOV AL,DS:[SI] AND AL,0FH ;取低4位 CMP AL,0AH JB C3 ADD AL,07H C3: ADD AL,30H MOV DL,AL ;show character MOV AH,02H INT 21H WAIT1: MOV AH,1 ;判断是否有按键按下 INT 16H JZ W AIT1 ;无按键则跳回继续等待,有则退出MOV AX,4C00H ;go back to dos INT 21H CODE ENDS

END START ;A2.asm ;数据传送实验 STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS DDATA SEGMENT MSR DB 'HELLO,WORLD!$' LEN EQU $- MSR DDATA ENDS EXDA SEGMENT MSD DB LEN DUP(?) EXDA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DDATA,ES:EXDA START: MOV AX,DDA TA MOV DS,AX MOV AX,EXDA MOV ES,AX MOV SI,OFFSET MSR MOV DI,OFFSET MSD MOV CX,LEN MOV BX,0 NEXT: MOV AL,MSR[BX] MOV ES:MSD[BX],AL INC BX LOOP NEXT PUSH ES POP DS MOV DX,OFFSET MSD MOV AH,9 INT 21H WAIT1: MOV AH,1 ;判断是否有按键按下 INT 16H JZ W AIT1 ;无按键则跳回继续等待,有则退出 MOV AX,4C00H INT 21H

微机原理实验简易计算器

【实验题目】 简易计算器设计 【实验目的】 综合测试学生微机接口技术及应用能力,包括系统构思设计、电路设计搭建、软件调试等; 结合应用实际,培养学生运用微机技术服务应用、服务实际的能力。 【基本要求】 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机上建立、汇编、连接、调试和运行汇编语言程序过程。

微机原理与接口技术--实验二 屏幕字符显示程序

北京X X大学 实验报告 课程(项目)名称:实验二屏幕字符显示程序学院:专业: 班级:学号: 姓名:成绩: 2013年 12月 10 日 一、任务与目的

1. 实验任务: (1) 熟悉和掌握利用DOS调用进行屏幕显示的方法; (2) 掌握屏幕字符显示程序的编写。 2. 实验目的: (1) 熟悉字符串表示的语法结构; (2) 熟悉利用DOS调用编写字符屏幕显示的基本程序。 二、原理(条件) 1.相关知识: (1) 字符串显示格式; (2) 熟悉DOS调用使用方法。 2.实验条件: MASM汇编程序及TD调试软件。 三、内容步骤 1.编写程序在屏幕上显示“Our Team: 姓名拼音+姓名拼音!”,观察执行情况并分析结果。 参考程序如下,请在参考程序之上改写。 DATA SEGMENT STRING DB 'hello,everybody!.You cannot improve your past, but you can improve your future. Once time is wasted, life is wasted.',0DH,0AH,'$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA DX,STRING MOV AH,09H INT 21H MOV AH,4CH INT 21H CODE ENDS END START 四、数据处理(现象分析) 实验结果:

实现代码: DATA SEGMENT STRING DB 'Our team:Lingwei zhangzhengqiang caoruanruan',0DH,0AH,'$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA DX,STRING MOV AH,09H INT 21H MOV AH,4CH INT 21H CODE ENDS END START 五、结论 通过参照示例程序完成实验时,对实验结果的观察并结合课本对实验现象的分析可得知:DOS系统功能调用是利用软中断指令INT 21来实现的,方法如下, 1.AH←功能号; 2.在指定寄存器中放入该功能所要求的入口参数; 3.执行INT 21H指令; 4.分析出口参数 此外,要将一个字符串送到显示器显示,需要调用DOS功能的9号功能,该功能要求被显示的字符串必须以“$”字符作为结束符,否则会引起屏幕乱码。显示时,如果希望光标

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

微机原理与接口技术 硬件实验报告 班级: 姓名: 学号: 实验一: 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

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

微机原理软件实验报告 学院:信息与通信工程学院班级: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语言一行代码就能实验的功能在汇编语言中可能要花上数十行。看来汇编语言的学习不是几周就能速成的,必须要有长年累月的积淀才能掌握。

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

信息与通信工程学院 微机原理软件实验报告 班级:学号:姓名:序号:时间: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:

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

微机原理与汇编语言 实验报告 姓名x x x学号xxxxxx 专业班级计科x班 课程名称微机原理与汇编语言实验日期2014.10.22 实验名称循环程序设计实验成绩 一、实验目的 1、掌握循环程序的设计方法。 2、掌握比较指令、转移指令和循环指令的使用方法。 3、进一步掌握调试工具的使用方法。 二、实验内容 1、实验原理 (1)键盘输入的十进制数如368在计算机中是以33H,36H,38H形式存放的,如何将它们转换为一个二进制数101110000B,以便对累加循环的循环次数进行控制是本程序首先要解决的问题 (2)累加结果为一个16位的二进制数,为了显示结果,必需把它们转换为十进制数 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) .code start: mov ax, @data mov ds, ax mov dx, offset inf1 ;将屏幕输入的十进制数(存放于ibuf)转化为二进制数存储于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] 从键盘输入一个十进制数,并将其转换为二进制数,存放在AX中 开始 结束 素、、 (CX)-1=0 累加循环次数送CX(MOV CX,AX)AX清0(AX中存放累加和) BX送1(BX存放每次循环累加的数,每循环一次,BX值加1) ADD AX,BX INC BX 累加和(在AX中)转换为十进制数并 显示 Y N

相关文档
最新文档