汇编语言与接口技术实验报告.doc

上传人:rrsccc 文档编号:11041007 上传时间:2021-06-20 格式:DOC 页数:30 大小:232.67KB
返回 下载 相关 举报
汇编语言与接口技术实验报告.doc_第1页
第1页 / 共30页
汇编语言与接口技术实验报告.doc_第2页
第2页 / 共30页
汇编语言与接口技术实验报告.doc_第3页
第3页 / 共30页
汇编语言与接口技术实验报告.doc_第4页
第4页 / 共30页
汇编语言与接口技术实验报告.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《汇编语言与接口技术实验报告.doc》由会员分享,可在线阅读,更多相关《汇编语言与接口技术实验报告.doc(30页珍藏版)》请在三一文库上搜索。

1、汇编语言与接口技术实验报告 2012-2013学年 第1学期汇编语言与接口技术实验报告学 院: 信息与电子工程学院 专 业: 班 级: 学 号: 姓 名: 浙江科技学院2012-2013学年 第1学期实验1 汇编语言程序设计一、实验目的1. 熟悉MASM 6.11汇编语言程序开发环境。2. 掌握汇编语言程序的调试方法和常用的调试工具。二、实验内容1. 安装MASM 6.11。2. 设在内存中首地址为BLOCK的区域存有一批数据:61H,84H,93H,0C4H,17H,0FFH,52H,2AH。分别按下列要求编写汇编语言程序:(1) 视该批数据为8位无符号数,采用冒泡法将其按升序排序;(2)

2、视该批数据为8位有符号数,采用冒泡法将其按升序排序。三、实验要求1. 根据实验内容编写程序。2. 上机调试程序。3. 记录并分析程序运行结果。开始四、程序说明和程序流程图读入数据N个计数N-1是N小于0否结束否是对比数据为第i个数据(初始i=0)i7和第i+1个数据比较两数交换位置i+1五、程序代码1. 8位无符号数冒泡法排序程序如下:.model small.datan dw 8block db 61h,84h,93h,0c4h,17h,0ffh,52H,2ah.stack 60h.code.startupmov ax,datamov ds,axmov cx,ndec cxloop1: mo

3、v dx,cxmov bx,0loop2: mov al,blockbxcmp al,blockbx+1jna continuexchg al,blockbx+1mov blockbx,alcontinue: add bx,1loop loop2mov cx,dxloop loop1.exitend2、8位有符号数冒泡排序程序如下.model small.datan dw 8block db 61h,84h,93h,0c4h,17h,0ffh,52H,2ah.stack 60h.code.startupmov ax,datamov ds,axmov cx,ndec cxloop1: mov d

4、x,cxmov bx,0loop2: mov al,blockbxcmp al,blockbx+1jle continuexchg al,blockbx+1mov blockbx,alcontinue: add bx,1loop loop2mov cx,dxloop loop1.exitend六、程序运行结果及分析在命令行debug,反汇编找到初始程序入口0017查看cup寄存器的内容实验2 系统中断接口实验一、实验目的1. 熟悉可编程中断控制器8259A的使用方法。2. 掌握软、硬件中断的编程技术。二、实验内容1. 软件中断 自定义一个软件中断,中断类型码为78H。在中断服务程序中,完成AS

5、CII码到压缩的BCD码的转换,ASCII码内存首地址为ASCADDR,长度为NUMBER,转换后的BCD码存放在以BCDADDR为首地址的存储区中。2. 硬件中断 设IRQ10 IRQ12(中断类型号为72H74H)接外部硬件中断源13,外部中断源的中断请求通过按数字键“1”“3”模拟产生。在中断服务程序中显示“Interrupt service routine n(n=13) is running”字样。三、实验要求1. 编写主程序和中断服务程序。2. 上机调试程序。3. 记录并分析程序运行结果。四、程序说明和程序流程图开始开始设置外部硬件中断定义软件中断ASC压缩否是否按数字键?是否是否

6、压缩完成?显示字样是结束结束硬件中断软件中断五、程序代码实验1代码:dseg segment ascaddr db 0123456789number db 10bcdaddr db 20 dup(?)dseg endscseg segment assume cs:cseg,ds:dsegstart: push ds xor ax,ax push ax mov ax,seg asc_bcd mov ds,ax mov dx,offset asc_bcd mov ax,2578h int 21h int 78h retfasc_bcd proc mov ax,dseg mov ds,ax mov

7、si,offset ascaddr mov di,offset bcdaddr mov ch,number shr ch,1 mov cl,4cont: mov ax,si and al,0fh shl ah,cl or al,ah mov di,al add si,2 inc di dec ch jnz cont iretasc_bcd endpcseg ends end start实验2代码:dseg segment disp1 db Interrupt service routine 1 is running.,0ah,0dh,$disp2 db Interrupt service ro

8、utine 2 is running.,0ah,0dh,$disp3 db Interrupt service routine 3 is running.,0ah,0dh,$dseg endscseg segment assume cs:cseg,ds:dsegstart: push ds xor ax,ax push ax mov ax,seg isradd1 mov ds,ax mov dx,offset isradd1 mov ax,2572h int 21h mov ax,seg isradd2 mov ds,ax mov dx,offset isradd2 mov ax,2573h

9、int 21h mov ax,seg isradd3 mov ds,ax mov dx,offset isradd3 mov ax,2574h int 21h in al,0a1h and al,11100011b out 0a1h,alkeyin: mov ah,0 int 16h cmp al,1 jz serve1 cmp al,2 jz serve2 cmp al,3 jz serve3 cmp al,q jz exit jmp keyinserve1: int 72h jmp keyinserve2: int 73h jmp keyinserve3: int 74h jmp keyi

10、nexit: retfisradd1 proc push ds push ax mov ax,seg disp1 mov ds,ax mov dx,offset disp1 mov ah,9 int 21h ; mov al,20h ; out 0a0h,al pop ax pop ds iretisradd1 endpisradd2 proc push ds push ax mov ax,seg disp2 mov ds,ax mov dx,offset disp2 mov ah,9 int 21h ; mov al,20h ; out 0a0h,al pop ax pop ds ireti

11、sradd2 endpisradd3 proc push ds push ax mov ax,seg disp3 mov ds,ax mov dx,offset disp3 mov ah,9 int 21h ; mov al,20h ; out 0a0h,al pop ax pop ds iretisradd3 endpcseg ends end start六、程序运行结果及分析实验1内存结果实验2:实验3 键盘接口实验一、实验目的1. 了解键盘接口的工作原理。2. 掌握直接在硬件基础上编写键盘处理程序的方法。3. 熟悉键盘的BIOS和DOS功能调用。二、实验内容设计一个中断方式的用户键盘处理

12、程序,其功能是直接从数据端口(8255的PA端口,地址为60H)读取键盘的扫描码,并通过换码指令XLAT将扫描码转换为ASCII字符显示在屏幕上。当程序运行时,可通过键入ESC键,使键盘的管理在用户键盘处理程序和系统键盘处理程序(INT 09H)之间进行切换。三、实验要求1. 编写主程序和中断服务程序。2. 上机调试程序。3. 记录并分析程序运行结果。四、程序说明和程序流程图键盘扫描有键闭合延时去键抖动扫描键盘找到闭合键计算键值建立有效标志闭合键释放建立有效标志返回五、主程序和中断服务程序代码cseg segment org 100h assume cs:csegstart: jmp inst

13、allflag db 0oldint dd ?scantab db 0,0,1234567890-=,08h,0 db QWERTYUIOP,0dh,0 db ASDFGHJKL;,0,0,0,0 db ZXCVBNM,./,0,0,0,20h db 13 dup(0) db 789-456+1230#kbint: push ax push bx push ds push cs pop ds sti mov bx,offset scantab in al,60h test al,80h jnz keyend push ax in al,61h or al,80h out 61h,al and

14、al,7fh out 61h,al pop ax cmp al,01h jnz disp inc flagdisp: test flag,01h jz user pop ds pop bx pop ax jmp cs:oldintuser: xlat cmp al,0 jz keyend mov ah,14 int 10h mov al,0dh int 10h mov al,0ah int 10hkeyend: mov al,20h out 20h,al pop ds pop bx pop ax iretinstall:cli push cs pop ds mov ax,3509h int 2

15、1h cmp bx,offset kbint jnz load int 20hload: mov word ptr oldint,bx mov word ptr oldint+2,es mov dx,offset kbint mov ax,2509h int 21h in al,21h and al,11111101b out 21h,al sti mov dx,offset install int 27hcseg ends end start六、程序运行结果及分析1.当执行程序后,输入小写字母显示大写,键入ESC后切换到操作系统自己的中断,输入小写显示小写。实验4 显示器接口实验一、实验目的

16、1. 了解显示器接口的工作原理。2. 熟悉显示器的BIOS和DOS功能调用。二、实验内容在屏幕上显示一张移动的“笑脸”。“笑脸”字符的ASCII码为01H或02H,要使“笑脸”动起来,可按如下步骤编程:1. 屏幕上显示“笑脸”;2. 延迟一段时间;3. 清除“笑脸”(可用清除部分屏幕或在“笑脸”位置显示空字符的方法实现);4. 改变“笑脸”的行、列坐标;5. 返回第1步,重复上述过程。三、实验要求1. 根据实验内容编写程序。2. 上机调试程序。3. 记录并分析程序运行结果。四、程序说明和程序流程图开始在屏幕上显示笑脸延迟一段时间清除笑脸改变笑脸的行、列坐标是是否返回?否结束五、程序代码stac

17、k segment db 256 dup(1)stack endscode segmentmove_face proc far assume cs:code,ds:stackstart: push ds sub ax,ax push ax mov ah,15 int 10h mov ah,0 mov al,1 int 10h mov cx,1 mov dx,0 stimove_cursor: mov ah,2 int 10h mov al,1 mov ah,10 int 10h call delay sub al,al mov ah,10 int 10h inc dh inc dl cmp d

18、h,25h jne move_cursor retmove_face endpdelay proc push bx push cx push dx mov ah,0 int 1ah add dx,9 mov bx,dxredo: int 1ah cmp dx,bx jne redo pop dx pop cx pop bx retdelay endpcode ends end六、程序运行结果及分析实验5 串行通信接口实验一、实验目的1. 熟悉可编程串行通信接口8250A的使用方法。2. 掌握串行通信接口的编程技术。二、实验内容1. 两台微机利用COM1(串行口1)进行查询式通信,可采用三线式连

19、接方法。双机通信的要求如下:7位数据位、偶校验、1位停止位、波特率为9600;双机同时运行通信程序,一方键入的字符在另一方的屏幕上显示,当按下字符q时,结束通信返回DOS。2. 用中断方式实现上述1的功能。3. 用BIOS调用发送和接收字符。三、实验要求1. 编写查询式通信程序。2. 编写中断式通信程序。3. 编写用BIOS调用实现的自发自收的通信程序。4. 上机调试程序。5. 记录并分析程序运行结果。初始化8250四、程序说明和程序流程图读LSR再次发送D5=1?YN发送一个字符N发送完毕?Y暂时结束查询方式发送初始化8250读LSR再次验收YYND4D1=0?D0=1?接收一个字符接收完毕

20、?暂时结束处理错误NYN查询方式验收五、程序代码实验1代码:scom segment para stack scom db 256 dup(0)scom endsdcom segment db 50 dup(?)dcom endsccom segment para public ccomstart proc far assume cs:ccom,ss:scom,ds:dcom push ds xor ax,ax push ax mov dx,3fbh mov al,10000000b out dx,al mov dx,3f8h mov al,0ch out dx,al inc dx mov a

21、l,0 out dx,al mov dx,3fbh mov al,00011010b out dx,al inc dx mov al,00010011b out dx,al mov dx,3f9h mov al,0 out dx,alcont: mov dx,3fdh in al,dx test al,00011110b jnz error test al,00000001b jnz delre test al,00100000b jz cont mov ah,1 int 16h jz cont mov ah,0 int 16h cmp al,q jz return mov dx,3f8h o

22、ut dx,al jmp contdelre: mov dx,3f8h in al,dx and al,01111111b push ax mov bl,0 mov ah,0eh int 10h pop ax cmp al,0dh jnz cont mov al,0ah mov bl,0 mov ah,0eh int 10h jmp conterror: mov dx,3f8h in al,dx mov al,? mov bl,0 mov ah,0eh int 10h jmp contreturn: retstart endpccom ends end start实验3代码:scom segm

23、ent para stack scom db 256 dup(0)scom endsdcom segment db 50 dup(?)dcom endsccom segment para public ccomstart proc far assume cs:ccom,ss:scom,ds:dcom push ds xor ax,ax push ax mov ah,0 mov al,11111010b mov dx,0 int 14hcont: mov ah,1 int 16h jz cont mov ah,0 int 16h cmp al,q jz exit mov ah,1 int 14h mov ah,2 int 14h mov bl,0 mov ah,0eh int 10h cmp al,0dh jnz cont mov al,0ah mov bl,0 mov ah,0eh int 10h jmp contexit: retfstart endpccom ends end start六、程序运行结果及分析实验1:实验3:第 29 页 共 30 页

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1