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

上传人:b****5 文档编号:28926779 上传时间:2023-07-20 格式:DOCX 页数:30 大小:297.33KB
下载 相关 举报
汇编语言与接口技术实验报告.docx_第1页
第1页 / 共30页
汇编语言与接口技术实验报告.docx_第2页
第2页 / 共30页
汇编语言与接口技术实验报告.docx_第3页
第3页 / 共30页
汇编语言与接口技术实验报告.docx_第4页
第4页 / 共30页
汇编语言与接口技术实验报告.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

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

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

汇编语言与接口技术实验报告.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

 

 

 

寂'命令提示符-d^bu(*xp1-lexe

 

DX,0B4CDS,DXHX.SSBK,DXBX,1BX.lEX]BX.l

SP,BX

RXEB4C

DS,AK

CX,[00MbJ

UyVBLLLLIUDIUUuOOOUHHHHLODTOOoMMMssssSCMASMMM

eft3ft333323C8E4DDDEEEEDE4D日ftECBlmAE3B3EBB8B2DDDDF90FB88I0BI5I7I9IBIDIF12467ACaHw团00001milljo0-

1^10-R~_M1^1R-01^10_M•■♦>!

■♦■■■■«!

■=盘■■■>!

•■*■■«-♦■■86888868s8888880444-444444444444UBBB-BBBBBBDBBBBB

 

 

查看cup寄存器的内容

 

AX=0OQ0CX=0058DX=00Q0SP=Q0&QBP=Q000SI=800QDI=00ntl

DS=0B38ES=0B38SS=0B4DCS=0B4BIF=0B^U

QB4O:

MM0@BA4CQ£DL0B4C

 

 

噂-cfcccccctolo88SB00888

60-00000-00123456700000000

8E19c0

18D048

0DC49

0c418

DAQ300S8210CFF44

38

FF

ME

C30?

0

8E080

WR-丽B8-70B7-0800-6300-6108-8EC7-44S9-54

DID887E2C426FF76

3B9970B2

E8BE188F

DI0E

FF4C46FF

rogranterriinated

d14f7:

G4F7:

Q00G4F7:

U0ia4F7!

00204F7:

00304F7:

00404F7:

00504F7:

B0604F7=0B7B

2474F732AAEB8ftC2C3C324078:

ADOC303E8DDA65681FCE83E

nor(iall

EfiP9ACFlSBC3E80B丽8ADQE85FC7Q6FFES94E?

Z4FD跚EB03

24-7407-8A4G-AAFC-D05fi-2E

34-90

明3CC8E&802EE2D0418AA?

SEA0A7B02C

S0&05cEE3832'78?

90B0EA0-035F60F44B7F5DR72E

 

 

实验2系统中断接口实验

、实验目的

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

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

二、实验内容

1.软件中断

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

在中断服务程序中,完成

ASCII码到压缩的BCD码的转换,ASCII码内存首地址为ASCADDR,长度为

NUMBER,转换后的BCD码存放在以BCDADDR为首地址的存储区中。

2.硬件中断

设IRQi0~IRQi2(中断类型号为72H~74H)接外部硬件中断源1~3,外部

 

Interruptserviceroutinen(n=1~3)isrunning

三、实验要求

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

2.上机调试程序。

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

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

硬件中断

软件中断

 

五、程序代码

实验1代码:

dsegsegment

ascaddrdb

'0123456789'

numberdb

10

bcdaddrdb

20dup(?

dsegends

csegsegment

assume

cs:

cseg,ds:

dseg

start:

push

ds

xor

ax,ax

push

ax

mov

ax,segasc_bcd

mov

ds,ax

mov

dx,offsetasc_bcd

mov

ax,2578h

int

21h

int

78h

retf

asc_bcdproc

mov

ax,dseg

mov

ds,ax

mov

si,offsetascaddr

mov

di,offsetbcdaddr

mov

ch,number

shr

ch,1

mov

cl,4

cont:

movax,[si]

andal,0fh

shlah,cl

oral,ah

mov[di],al

addsi,2

incdi

decch

jnzcont

iret

asc_bcdendp

cseg

ends

endstart

实验2代码:

dseg

segment

displ

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

disp2

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

disp3

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

dseg

ends

cseg

segment

assumecs:

cseg,ds:

dseg

start:

pushds

xorax,ax

pushax

movax,segisraddl

movds,ax

movdx,offsetisraddl

movintmovmovmovmovintmovmovmovmovintinandoutkeyin:

mov

intcmpjzcmpjzcmpjzcmpjzjmpservel:

intjmp

ax,2572h

21h

ax,segisradd2

ds,ax

dx,offsetisradd2

ax,2573h

21h

ax,segisradd3

ds,ax

dx,offsetisradd3

ax,2574h

21h

al,0a1h

al,11100011b

0a1h,al

ah,0

16h

al,'1'

serve1

al,'2'

serve2

al,'3'

serve3

al,'q'

exit

keyin

72h

keyin

serve2:

int

73h

jmp

keyin

serve3:

int

74h

jmp

keyin

exit:

retf

israddl

proc

push

ds

push

ax

mov

ax,segdisp1

mov

ds,ax

mov

dx,offsetdisp1

mov

ah,9

int

21h

;mov

al,20h

;out

0a0h,al

pop

ax

pop

ds

iret

israddl

endp

isradd2proc

push

ds

push

ax

mov

ax,segdisp2

mov

ds,ax

mov

dx,offsetdisp2

mov

ah,9

int

21h

;mov

al,20h

;out

poppopiret

isradd2endp

isradd3proc

push

pushmov

movmov

movint

;mov

;out

poppopiret

isradd3endpcsegendsend

0a0h,al

ax

ds

ds

ax

ax,segdisp3

ds,ax

dx,offsetdisp3

ah,9

21h

al,20h

0a0h,al

ax

ds

start

 

六、程序运行结果及分析

实验1内存结果

MicroscftUindousXP[版本S.1.2600]版权所有1985-2001MicrosoftCorp.

C:

XDocumentsandSettingsXAdministrator^E:

E:

\>cdMASM611

E:

\MftSMGll>njlexp2~2*d?

nk

E:

\msrKllMBbii0

exp2-2.exe

-U

BB51:

0000

1E

PUSH

DS

0B51:

33C8

KOR

0B51:

:

0003

PUSH

0B51:

6004

B8510B

MOU

AX/BS1

0B51:

Q007

8ED8

HOU

DS^AX

0B51:

@069

BA5400

MOU

D»,00S4

丽。

C

DS7295

HOU

AM,2572

0B51:

:

0Q0F

CD21

IHT

21

0B51:

6011

B8510B

MOU

AK,GIH51

OB51:

0014

SFDB

MOU

DS,AX

0B51:

0016

BA6500

MOU

叽。

HBS1:

Bfi?

325

MOU

AX,2573

0B51:

001C

CD21

IHT

21

0B51:

601E

B8510B

MOU

AK.0B51

实验3键盘接口实验

一、实验目的

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

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

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

二、实验内容

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

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

三、实验要求

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

2.上机调试程序。

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

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

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

cseg

segment

start:

org

assume

jmpinstall

100h

cs:

cseg

flag

db

0

oldint

dd

?

scantabdb

db

db

db

db

db

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

'QWERTYUIOP[]',0dh,0

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

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

13dup(0)

'789-456+1230#'

kbint:

pushpushpushpushpopsti

movintestjnzpushin

orout

ax

bx

ds

cs

ds

bx,offsetscantab

al,60h

al,80h

keyend

ax

al,61h

al,80h

61h,al

and

al,7fh

out

61h,al

pop

ax

cmp

al,01h

jnz

disp

inc

flag

disp:

test

flag,01h

jz

user

pop

ds

pop

bx

pop

ax

jmp

cs:

oldint

user:

xlat

cmp

al,0

jz

keyend

mov

ah,14

int

10h

mov

al,0dh

int

10h

mov

al,0ah

int

10h

keyend:

mov

al,20h

out

20h,al

pop

ds

pop

bx

pop

ax

iret

install:

cli

pushpopmovintcmpjnzintload:

mov

movmovmovintinandoutstimovintcsegends

end

cs

ds

ax,3509h

21h

bx,offsetkbint

load

20h

wordptroldint,bx

wordptroldint+2,es

dx,offsetkbint

ax,2509h

21h

al,21h

al,11111101b

21h,al

dx,offsetinstall

27h

start

六、程序运行结果及分析

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

显示小写。

 

eCmmandProapt

□(x|

0、ERTYgDF■

 

实验4显示器接口实验

一、实验目的

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

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

二、实验内容

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

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

1.屏幕上显示笑脸”;

2.延迟一段时间;

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

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

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

三、实验要求

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

2.上机调试程序。

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

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

五、程序代码

stack

segment

db

256dup

(1)

stack

ends

code

segment

move_face

proc

far

assume

cs:

code,ds:

stack

start:

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

sti

move_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

dh,25h

jne

move_cursor

ret

move_face

endp

delay

proc

push

bx

push

cx

push

dx

mov

ah,0

int

1ah

add

dx,9

mov

bx,dx

redo:

int

1ah

cmp

dx,bx

jne

redo

pop

dx

pop

cx

pop

bx

ret

delay

endp

code

ends

end

六、程序运行结果及分析

实验5串行通信接口实验

一、实验目的

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

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

二、实验内容

1.

可采用三线式连接方

、波特率为9600;双

当按下字符'q'时,

两台微机利用COM1(申行口1)进行查询式通信,法。

双机通信的要求如下:

7位数据位、偶校验、1位停止位机同时运行通信程序,一方键入的字符在另一方的屏幕上显示结束通信返回DOS。

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

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

三、实验要求

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

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

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

4.上机调试程序。

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

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

初始化8250

 

查询方式发送

 

五、程序代码

实验1代码:

scomsegmentparastack'scom'

db256dup(0)

scomends

dcomsegment

db50dup(?

dcomends

ccomsegmentparapublic'ccom'

startprocfar

assumecs:

ccom,ss:

scom,ds:

dcom

pushxorpushmovmovoutmovmovoutincmovoutmovmovoutincmovoutmovmovout

cont:

mov

intestjnztestjnztest

ds

ax,ax

ax

dx,3fbh

al,10000000b

dx,al

dx,3f8h

al,0ch

dx,al

dx

al,0

dx,al

dx,3fbh

al,00011010b

dx,al

dx

al,00010011b

dx,al

dx,3f9h

al,0

dx,al

dx,3fdh

al,dx

al,00011110b

error

al,00000001b

delre

al,00100000b

jz

cont

mov

ah,1

int

16h

jz

cont

mov

ah,0

int

16h

cmp

al,'q'

jz

return

mov

dx,3f8h

out

dx,al

jmp

cont

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

cont

mov

dx,3f8h

in

al,dx

delre:

error:

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:

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

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

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1