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

上传人:b****3 文档编号:11119142 上传时间:2023-05-29 格式:DOCX 页数:28 大小:148.83KB
下载 相关 举报
汇编语言与接口技术实验报告.docx_第1页
第1页 / 共28页
汇编语言与接口技术实验报告.docx_第2页
第2页 / 共28页
汇编语言与接口技术实验报告.docx_第3页
第3页 / 共28页
汇编语言与接口技术实验报告.docx_第4页
第4页 / 共28页
汇编语言与接口技术实验报告.docx_第5页
第5页 / 共28页
汇编语言与接口技术实验报告.docx_第6页
第6页 / 共28页
汇编语言与接口技术实验报告.docx_第7页
第7页 / 共28页
汇编语言与接口技术实验报告.docx_第8页
第8页 / 共28页
汇编语言与接口技术实验报告.docx_第9页
第9页 / 共28页
汇编语言与接口技术实验报告.docx_第10页
第10页 / 共28页
汇编语言与接口技术实验报告.docx_第11页
第11页 / 共28页
汇编语言与接口技术实验报告.docx_第12页
第12页 / 共28页
汇编语言与接口技术实验报告.docx_第13页
第13页 / 共28页
汇编语言与接口技术实验报告.docx_第14页
第14页 / 共28页
汇编语言与接口技术实验报告.docx_第15页
第15页 / 共28页
汇编语言与接口技术实验报告.docx_第16页
第16页 / 共28页
汇编语言与接口技术实验报告.docx_第17页
第17页 / 共28页
汇编语言与接口技术实验报告.docx_第18页
第18页 / 共28页
汇编语言与接口技术实验报告.docx_第19页
第19页 / 共28页
汇编语言与接口技术实验报告.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

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

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

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

 

汇编语言与接口技术

实验报告

 

学院:

信息与电子工程学院

专业:

班级:

学号:

姓名:

 

浙江科技学院

2012-2013学年第1学期

实验1汇编语言程序设计

一、实验目的

1.熟悉MASM6.11汇编语言程序开发环境。

2.掌握汇编语言程序的调试方法和常用的调试工具。

二、实验内容

1.安装MASM6.11。

2.设在内存中首地址为BLOCK的区域存有一批数据:

61H,84H,93H,0C4H,17H,0FFH,52H,2AH。

分别按下列要求编写汇编语言程序:

(1)视该批数据为8位无符号数,采用冒泡法将其按升序排序;

(2)视该批数据为8位有符号数,采用冒泡法将其按升序排序。

三、实验要求

1.根据实验内容编写程序。

2.上机调试程序。

3.记录并分析程序运行结果。

四、程序说明和程序流程图

 

五、程序代码

1.8位无符号数冒泡法排序程序如下:

.modelsmall

.data

ndw8

blockdb61h,84h,93h,0c4h,17h,0ffh,52H,2ah

.stack60h

.code

.startup

movax,@data

movds,ax

movcx,n

deccx

loop1:

movdx,cx

movbx,0

loop2:

moval,block[bx]

cmpal,block[bx+1]

jnacontinue

xchgal,block[bx+1]

movblock[bx],al

continue:

addbx,1

looploop2

movcx,dx

looploop1

.exit

end

2、8位有符号数冒泡排序程序如下

.modelsmall

.data

ndw8

blockdb61h,84h,93h,0c4h,17h,0ffh,52H,2ah

.stack60h

.code

.startup

movax,@data

movds,ax

movcx,n

deccx

loop1:

movdx,cx

movbx,0

loop2:

moval,block[bx]

cmpal,block[bx+1]

jlecontinue

xchgal,block[bx+1]

movblock[bx],al

continue:

addbx,1

looploop2

movcx,dx

looploop1

.exit

end

 

六、程序运行结果及分析

在命令行debug,反汇编找到初始程序入口0017

查看cup寄存器的内容

实验2系统中断接口实验

一、实验目的

1.熟悉可编程中断控制器8259A的使用方法。

2.掌握软、硬件中断的编程技术。

二、实验内容

1.软件中断

自定义一个软件中断,中断类型码为78H。

在中断服务程序中,完成ASCII码到压缩的BCD码的转换,ASCII码内存首地址为ASCADDR,长度为NUMBER,转换后的BCD码存放在以BCDADDR为首地址的存储区中。

2.硬件中断

设IRQ10~IRQ12(中断类型号为72H~74H)接外部硬件中断源1~3,外部中断源的中断请求通过按数字键“1”~“3”模拟产生。

在中断服务程序中显示“Interruptserviceroutinen(n=1~3)isrunning…”字样。

三、实验要求

1.编写主程序和中断服务程序。

2.上机调试程序。

3.记录并分析程序运行结果。

四、程序说明和程序流程图

开始

定义软件中断

ASCⅡ压缩

是否压缩完成?

结束

开始

设置外部硬件中断

显示字样

是否按数字键?

结束

 

五、程序代码

实验1代码:

dsegsegment

ascaddrdb'0123456789'

numberdb10

bcdaddrdb20dup(?

dsegends

csegsegment

assumecs:

cseg,ds:

dseg

start:

pushds

xorax,ax

pushax

movax,segasc_bcd

movds,ax

movdx,offsetasc_bcd

movax,2578h

int21h

int78h

retf

asc_bcdproc

movax,dseg

movds,ax

movsi,offsetascaddr

movdi,offsetbcdaddr

movch,number

shrch,1

movcl,4

cont:

movax,[si]

andal,0fh

shlah,cl

oral,ah

mov[di],al

addsi,2

incdi

decch

jnzcont

iret

asc_bcdendp

csegends

endstart

实验2代码:

dsegsegment

disp1db'Interruptserviceroutine1isrunning...',0ah,0dh,'$'

disp2db'Interruptserviceroutine2isrunning...',0ah,0dh,'$'

disp3db'Interruptserviceroutine3isrunning...',0ah,0dh,'$'

dsegends

csegsegment

assumecs:

cseg,ds:

dseg

start:

pushds

xorax,ax

pushax

movax,segisradd1

movds,ax

movdx,offsetisradd1

movax,2572h

int21h

movax,segisradd2

movds,ax

movdx,offsetisradd2

movax,2573h

int21h

movax,segisradd3

movds,ax

movdx,offsetisradd3

movax,2574h

int21h

inal,0a1h

andal,11100011b

out0a1h,al

keyin:

movah,0

int16h

cmpal,'1'

jzserve1

cmpal,'2'

jzserve2

cmpal,'3'

jzserve3

cmpal,'q'

jzexit

jmpkeyin

serve1:

int72h

jmpkeyin

serve2:

int73h

jmpkeyin

serve3:

int74h

jmpkeyin

exit:

retf

isradd1proc

pushds

pushax

movax,segdisp1

movds,ax

movdx,offsetdisp1

movah,9

int21h

;moval,20h

;out0a0h,al

popax

popds

iret

isradd1endp

isradd2proc

pushds

pushax

movax,segdisp2

movds,ax

movdx,offsetdisp2

movah,9

int21h

;moval,20h

;out0a0h,al

popax

popds

iret

isradd2endp

isradd3proc

pushds

pushax

movax,segdisp3

movds,ax

movdx,offsetdisp3

movah,9

int21h

;moval,20h

;out0a0h,al

popax

popds

iret

isradd3endp

csegends

endstart

 

六、程序运行结果及分析

实验1内存结果

实验2:

实验3键盘接口实验

一、实验目的

1.了解键盘接口的工作原理。

2.掌握直接在硬件基础上编写键盘处理程序的方法。

3.熟悉键盘的BIOS和DOS功能调用。

二、实验内容

设计一个中断方式的用户键盘处理程序,其功能是直接从数据端口(8255的PA端口,地址为60H)读取键盘的扫描码,并通过换码指令XLAT将扫描码转换为ASCII字符显示在屏幕上。

当程序运行时,可通过键入ESC键,使键盘的管理在用户键盘处理程序和系统键盘处理程序(INT09H)之间进行切换。

三、实验要求

1.编写主程序和中断服务程序。

2.上机调试程序。

3.记录并分析程序运行结果。

四、程序说明和程序流程图

键盘扫描

有键闭合

延时去键抖动

扫描键盘

找到闭合键

计算键值

建立有效标志

返回

建立有效标志

闭合键释放

 

五、主程序和中断服务程序代码

csegsegment

org100h

assumecs:

cseg

start:

jmpinstall

flagdb0

oldintdd?

scantabdb0,0,'1234567890-=',08h,0

db'QWERTYUIOP[]',0dh,0

db'ASDFGHJKL;',0,0,0,0

db'ZXCVBNM,./',0,0,0,20h

db13dup(0)

db'789-456+1230#'

kbint:

pushax

pushbx

pushds

pushcs

popds

sti

movbx,offsetscantab

inal,60h

testal,80h

jnzkeyend

pushax

inal,61h

oral,80h

out61h,al

andal,7fh

out61h,al

popax

cmpal,01h

jnzdisp

incflag

disp:

testflag,01h

jzuser

popds

popbx

popax

jmpcs:

oldint

user:

xlat

cmpal,0

jzkeyend

movah,14

int10h

moval,0dh

int10h

moval,0ah

int10h

keyend:

moval,20h

out20h,al

popds

popbx

popax

iret

install:

cli

pushcs

popds

movax,3509h

int21h

cmpbx,offsetkbint

jnzload

int20h

load:

movwordptroldint,bx

movwordptroldint+2,es

movdx,offsetkbint

movax,2509h

int21h

inal,21h

andal,11111101b

out21h,al

sti

movdx,offsetinstall

int27h

csegends

endstart

 

六、程序运行结果及分析

1.当执行程序后,输入小写字母显示大写,键入ESC后切换到操作系统自己的中断,输入小写显示小写。

 

实验4显示器接口实验

一、实验目的

1.了解显示器接口的工作原理。

2.熟悉显示器的BIOS和DOS功能调用。

二、实验内容

在屏幕上显示一张移动的“笑脸”。

“笑脸”字符的ASCII码为01H或02H,要使“笑脸”动起来,可按如下步骤编程:

1.屏幕上显示“笑脸”;

2.延迟一段时间;

3.清除“笑脸”(可用清除部分屏幕或在“笑脸”位置显示空字符的方法实现);

4.改变“笑脸”的行、列坐标;

5.返回第1步,重复上述过程。

三、实验要求

1.根据实验内容编写程序。

2.上机调试程序。

3.记录并分析程序运行结果。

四、程序说明和程序流程图

开始

在屏幕上显示笑脸

延迟一段时间

清除笑脸

改变笑脸的行、列坐标

是否返回?

结束

 

五、程序代码

stacksegment

db256dup

(1)

stackends

codesegment

move_faceprocfar

assumecs:

code,ds:

stack

start:

pushds

subax,ax

pushax

movah,15

int10h

movah,0

moval,1

int10h

movcx,1

movdx,0

sti

move_cursor:

movah,2

int10h

moval,1

movah,10

int10h

calldelay

subal,al

movah,10

int10h

incdh

incdl

cmpdh,25h

jnemove_cursor

ret

move_faceendp

delayproc

pushbx

pushcx

pushdx

movah,0

int1ah

adddx,9

movbx,dx

redo:

int1ah

cmpdx,bx

jneredo

popdx

popcx

popbx

ret

delayendp

codeends

end

 

六、程序运行结果及分析

 

实验5串行通信接口实验

一、实验目的

1.熟悉可编程串行通信接口8250A的使用方法。

2.掌握串行通信接口的编程技术。

二、实验内容

1.两台微机利用COM1(串行口1)进行查询式通信,可采用三线式连接方法。

双机通信的要求如下:

7位数据位、偶校验、1位停止位、波特率为9600;双机同时运行通信程序,一方键入的字符在另一方的屏幕上显示,当按下字符'q'时,结束通信返回DOS。

2.用中断方式实现上述1的功能。

3.用BIOS调用发送和接收字符。

三、实验要求

1.编写查询式通信程序。

2.编写中断式通信程序。

3.编写用BIOS调用实现的自发自收的通信程序。

4.上机调试程序。

5.记录并分析程序运行结果。

四、程序说明和程序流程图

 

查询方式发送

初始化8250

读LSR

再次验收

Y

Y

N

D4~D1=0?

D0=1?

接收一个字符

接收完毕?

暂时结束

处理错误

N

Y

 

N

 

查询方式验收

 

五、程序代码

实验1代码:

scomsegmentparastack'scom'

db256dup(0)

scomends

dcomsegment

db50dup(?

dcomends

ccomsegmentparapublic'ccom'

startprocfar

assumecs:

ccom,ss:

scom,ds:

dcom

pushds

xorax,ax

pushax

movdx,3fbh

moval,10000000b

outdx,al

movdx,3f8h

moval,0ch

outdx,al

incdx

moval,0

outdx,al

movdx,3fbh

moval,00011010b

outdx,al

incdx

moval,00010011b

outdx,al

movdx,3f9h

moval,0

outdx,al

cont:

movdx,3fdh

inal,dx

testal,00011110b

jnzerror

testal,00000001b

jnzdelre

testal,00100000b

jzcont

movah,1

int16h

jzcont

movah,0

int16h

cmpal,'q'

jzreturn

movdx,3f8h

outdx,al

jmpcont

delre:

movdx,3f8h

inal,dx

andal,01111111b

pushax

movbl,0

movah,0eh

int10h

popax

cmpal,0dh

jnzcont

moval,0ah

movbl,0

movah,0eh

int10h

jmpcont

error:

movdx,3f8h

inal,dx

moval,'?

'

movbl,0

movah,0eh

int10h

jmpcont

return:

ret

startendp

ccomends

endstart

 

实验3代码:

scomsegmentparastack'scom'

db256dup(0)

scomends

dcomsegment

db50dup(?

dcomends

ccomsegmentparapublic'ccom'

startprocfar

assumecs:

ccom,ss:

scom,ds:

dcom

pushds

xorax,ax

pushax

movah,0

moval,11111010b

movdx,0

int14h

cont:

movah,1

int16h

jzcont

movah,0

int16h

cmpal,'q'

jzexit

movah,1

int14h

movah,2

int14h

movbl,0

movah,0eh

int10h

cmpal,0dh

jnzcont

moval,0ah

movbl,0

movah,0eh

int10h

jmpcont

exit:

retf

startendp

ccomends

endstart

 

六、程序运行结果及分析

实验1:

实验3:

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

当前位置:首页 > 高等教育 > 教育学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2