西南交通大学微机原理实验代码.docx

上传人:b****3 文档编号:11724872 上传时间:2023-06-02 格式:DOCX 页数:35 大小:204.57KB
下载 相关 举报
西南交通大学微机原理实验代码.docx_第1页
第1页 / 共35页
西南交通大学微机原理实验代码.docx_第2页
第2页 / 共35页
西南交通大学微机原理实验代码.docx_第3页
第3页 / 共35页
西南交通大学微机原理实验代码.docx_第4页
第4页 / 共35页
西南交通大学微机原理实验代码.docx_第5页
第5页 / 共35页
西南交通大学微机原理实验代码.docx_第6页
第6页 / 共35页
西南交通大学微机原理实验代码.docx_第7页
第7页 / 共35页
西南交通大学微机原理实验代码.docx_第8页
第8页 / 共35页
西南交通大学微机原理实验代码.docx_第9页
第9页 / 共35页
西南交通大学微机原理实验代码.docx_第10页
第10页 / 共35页
西南交通大学微机原理实验代码.docx_第11页
第11页 / 共35页
西南交通大学微机原理实验代码.docx_第12页
第12页 / 共35页
西南交通大学微机原理实验代码.docx_第13页
第13页 / 共35页
西南交通大学微机原理实验代码.docx_第14页
第14页 / 共35页
西南交通大学微机原理实验代码.docx_第15页
第15页 / 共35页
西南交通大学微机原理实验代码.docx_第16页
第16页 / 共35页
西南交通大学微机原理实验代码.docx_第17页
第17页 / 共35页
西南交通大学微机原理实验代码.docx_第18页
第18页 / 共35页
西南交通大学微机原理实验代码.docx_第19页
第19页 / 共35页
西南交通大学微机原理实验代码.docx_第20页
第20页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

西南交通大学微机原理实验代码.docx

《西南交通大学微机原理实验代码.docx》由会员分享,可在线阅读,更多相关《西南交通大学微机原理实验代码.docx(35页珍藏版)》请在冰点文库上搜索。

西南交通大学微机原理实验代码.docx

西南交通大学微机原理实验代码

2-1

DATASSEGMENT

;此处输入数据段代码

DATASENDS

STACKSSEGMENT

;此处输入堆栈段代码

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVSI,3500H;设置待转换数据区的地址指针

MOVDI,3510H;设置结果数据区的地址指针

MOVBX,000AH;乘数10

MOVCX,0004H;循环4次

MOVAH,00H

MOVAL,[SI];取第一位ASCⅡ码

SUBAL,30H;转换成二进制数

A1:

IMULBX;乘10

ADDAL,[SI+01];加次位

SUBAL,30H

INCSI;修改地址指针

LOOPA1;循环

MOV[DI],AX;保存结果

INT3H

;此处输入代码段代码

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

2-2

DATASSEGMENT

;此处输入数据段代码

DATASENDS

STACKSSEGMENT

;此处输入堆栈段代码

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVCX,0005H;循环计数器赋初值

MOVDI,3500H;ASCⅡ码首址

A1:

MOVBL,0FFH;将错误标志送入BL

MOVAL,[DI];送ASCⅡ码至AL

CMPAL,3AH;比较AL与3A

JNBA2;不低于3A则转A2

SUBAL,30H;低于3A则取ASCⅡ码低4位

JBA2;低于30则转A2

MOVBL,AL;否则AL内容送入BL,取代FF

A2:

MOVAL,BL;结果或错误标志送入AL

MOV[DI+0AH],AL

INCDI

LOOPA1

INT3H

CODESENDS

ENDSTART

 

2-5

DATASSEGMENT

;此处输入数据段代码

DATASENDS

STACKSSEGMENT

;此处输入堆栈段代码

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,0B07H

MOVDS,AX

MOVDI,3000H

MOVDX,9111H

MOVCX,2222H

TESTDH,80H

JZLP

XORDX,7FFFH

NOTCX

ADCCX,1

ADCDX,0

LP:

MOV[DI],CL

MOV[DI+1],CH

MOV[DI+2],DL

MOV[DI+3],DH

INT3

INT3H

CODESENDS

ENDSTART

3

DATASSEGMENT

;此处输入数据段代码

DATASENDS

STACKSSEGMENT

;此处输入堆栈段代码

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVCX,10H

MOVSI,3000H

MOVDI,3010H

CMPSI,DI

JAA2

ADDSI,CX

ADDDI,CX

DECSI

DECDI

A1:

MOVAL,[SI]

MOV[DI],AL

DECSI

DECDI

DECCX

JNEA1

JEA3

A2:

MOVAL,[SI]

MOV[DI],AL

INCSI

INCDI

DECCX

JNEA2

A3:

INT3H

CODESENDS

ENDSTART

 

4-1

DATASSEGMENT

;此处输入数据段代码

DATASENDS

STACKSSEGMENT

;此处输入堆栈段代码

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVDX,01H

MOVBL,02H

A1:

MOVAL,BL

INCBL

MULBL

ADDDX,AX

CMPAX,0C8H

JBEA1

INT3H

CODESENDS

ENDSTART

 

4-2

DATASSEGMENT

;此处输入数据段代码

DATASENDS

STACKSSEGMENT

;此处输入堆栈段代码

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVDI,3000H

MOVCX,[DI]

MOVCH,00H

MOVBL,00H

INCDI

A1:

MOVAX,[DI]

CMPAX,0000H

JGEA2

INCBL

A2:

INCDI

LOOPA1

MOV[DI],BL

INT3H

CODESENDS

ENDSTART

5-1

DATASSEGMENT

AADB0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9H;此处输入数据段代码

DATASENDS

STACKSSEGMENT

;此处输入堆栈段代码

STACKSENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATAS,SS:

STACKS

SUB1PROCNEAR

CMPCX,0

JEA4

DECCX

MOVBH,[SI]

MOVBL,BH

A1:

INCSI

MOVAL,[SI]

CMPAL,BH

JAEA2

CMPAL,BL

JBEA3

JMPA4

A2:

MOVBH,AL

JMPA4

A3:

MOVBL,AL

A4:

LOOPA1

RET

SUB1ENDP

START:

MOVAX,DATAS

MOVDS,AX

MOVSI,OFFSETAA

MOVCX,0008H

CALLNEARPTRSUB1

MOVAH,BH

MOVAL,BL

INT3

CODEENDS

ENDSTART

实验6

DATASSEGMENT

ORG3000H

VARDB11H,0d3H,77H,6bH,0BH,33H,0aaH,21H,0ffH,67H

;此处输入数据段代码

DATASENDS

STACKSSEGMENT

DW100DUP(?

;此处输入堆栈段代码

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

MOVAX,DATAS

MOVDS,AX

MOVCX,000AH

MOVSI,300AH

MOVBL,0FFH

A1:

CMPBL,0FFH

JNEA4

MOVBL,00H

DECCX

CMPCX,0

JEA4

PUSHSI

PUSHCX

A2:

DECSI

MOVAL,[SI]

MOVDL,[SI-1]

CMPAL,DL

JAA3

MOV[SI-1],AL

MOV[SI],DL

MOVBL,0FFH

A3:

LOOPA2

POPCX

POPSI

JMPA1

A4:

INT3

;此处输入代码段代码

MOVAH,4CH

INT21H

CODESENDS

ENDSTART

实验七

DATASSEGMENT

;此处输入数据段代码

DATASENDS

STACKSSEGMENT

;此处输入堆栈段代码

STACKSENDS

CODESSEGMENT

START:

MOVAL,0

MOVBH,0AH;表示前景、背景颜色

MOVAH,6H

MOVCX,0

MOVDH,24

MOVDL,79

INT10H;清屏幕

MOVAH,2

MOVBH,0

MOVDH,10H

MOVDL,10H

INT10H;光标设置在第10行第10列

MOVCX,001AH;共26个字母,所以循环次数为26

MOVDL,'Z'

LP:

MOVAL,DL

MOVBH,0

MOVBL,2FH;设置显示的A到Z的底色和字色

MOVAH,9

INT10H

DECDL

LOOPLP

INT3

CODESENDS

ENDSTART

实验八

.486p

d8255macroport,data1

movdx,port

moveax,data1

outdx,eax

nop

nop

endm

datasegmentat0use16

org1*4

v1dw2dup(?

org2*4

v2dw2dup(?

org3*4

v3dw2dup(?

org1000h

tttdb?

stackpequ2000h

P255CWequ20CH

P255Aequ200H

P255Bequ204H

P255Cequ208H

dataends

codesegmentuse16

assumecs:

code,ds:

data,ss:

data

org1100h

start:

nop

movax,0

movds,ax

movss,ax

movsp,stackp

initi:

moveax,60000000h

movcr0,eax

movax,data

movds,ax

movss,ax

movsp,stackp

movcx,1000

i0:

deccx

jnzi0

d8255P255CW,80808080h

i1:

d8255P255A,0c099c099h

d8255P255B,0c0c0c0c0h;40004000

d8255P255C,0fafafafah;绿

calldel1

d8255P255C,0f5f5f5f5h;红

calldel1

d8255P255C,0f0f0f0f0h;黄

calldel1

d8255P255C,0ffffffffh;灭

calldel1

d8255P255A,8ef8c0c0h

d8255P255B,8E8ec0c0h;00007FFF

d8255P255C,0fafafafah

calldel1

d8255P255C,0f5f5f5f5h

calldel1

d8255P255C,0f0f0f0f0h

calldel1

d8255P255C,0ffffffffh

calldel1

movax,4000h

moves,ax

moveax,0

chk:

movbx,0000h;从4000:

0000单元开始写

moves:

[bx],eax

movdx,P255A

outdx,eax

nop

nop

movdx,P255B

outdx,eax

nop

nop

calldel1

pusheax;写入的数据入栈

moveax,0fafafafah

movdx,P255C;绿色

outdx,eax

calldel1

popeax;出栈

chk1:

addbx,4;;;;;;;;;;;;;;;;;;;;;;;;;;;

cmpbx,8000h

jzchk2;写满8000H个内存单元

moves:

[bx],eax

jmpchk1;;;;;;;;;;;;;;;;;;;;;;;;;;;

chk2:

movbx,0fffch

chk3:

addbx,4

cmpbx,8000h

jzchk0

cmpeax,es:

[bx];把每个单元的数据读出与写入的

jzchk3

movecx,eax;数据比较,是否正确

moveax,0f5f5f5f5h

movdx,P255C;不正确,颜色变成红色

outdx,eax

moveax,ecx

calldel1;延时

chk0:

addeax,01010101h;;;;;;;;;;;;;;;;;;;;;;;;;;;

cmpeax,0ffffffffh;下一个写入的数据

jzchk4;;;;;;;;;;;;;;;;;;;;;;;;;;;

jmpchk

chk4:

jmpi1

del1proc;延时

movecx,8ffffh

i2:

dececx

jnzi2

ret

endp

codeends

endstart

 

实验10.1:

(以key为原本改进)

.486

DATASEGMENTAT0USE16

ORG1000H

DATAENDS

CODESEGMENTUSE16

ASSUMECS:

CODE

ORG3000H

BEG:

JMPSTART

TABDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H

DB7FH,6FH

DPORT1EQU360H

DPORT2EQU380H

NUMDB0001H

COUNTDD00000FFFFH

START:

MOVAX,DATA

MOVDS,AX

MOVCL,5

KK:

MOVAL,CL

MOVBX,OFFSETTAB

XLATTAB

MOVDX,DPORT2

OUTDX,AL

NOP

MOVDX,DPORT1

MOVAL,NUM

OUTDX,AL

NOP

NOP

ROLNUM,1

MOVCOUNT,00000FFFFH

DELAY:

NOP

DECCOUNT

JNZDELAY

 

JMPKK

 

CODEENDS

ENDBEG

 

实验10.2

使显示20115158

.486

DATASEGMENTAT0USE16

ORG2000H

BUFDD?

COUNTDB?

DB?

DATAENDS

CODESEGMENTUSE16

ASSUMECS:

CODE,DS:

DATA

ORG01000H

BEG:

JMPSTART

TAB1DB0A4H,0F9H,92H,92H

TAB2DB0C0H,0F9H,0F9H,80H

RGDD050A050AH

GRDD0A050A05H

RYDD05000500H

YRDD00050005H

RRRRDD05050505H

RGYRDD050A0005H

START:

MOVAX,DATA

MOVDS,AX

MOVDX,20CH

MOVEAX,80808080H

OUTDX,EAX

NOP

NOP

L1:

MOVDX,200H

MOVEAX,DWORDPTRTAB1

OUTDX,EAX

MOVBP,200

L2:

DECBP

JNZL2

MOVDX,204H

MOVEAX,DWORDPTRTAB2

OUTDX,EAX

MOVBP,200

L3:

DECBP

JNZL3

MOVDX,208H

MOVEAX,RGYR

OUTDX,EAX

MOVBP,200

L4:

DECBP

JNZL4

HLT

JMPL1

CODEENDS

ENDBEG

 

三连

实验9

;i8259.asm

.486

DATASEGMENTUSE16AT0

ORG40H*4

V40HDW?

?

;保存中断向量的变量

OPORTEQU3A0H;8259的偶地址

JPORTEQU3A8H;8259的奇地址

TR8255EQU20CH;8255控制口地址

A8255EQU200H;8255A口地址

B8255EQU204H;8255B口地址

C8255EQU208H;8255C口地址

ORG1000H

MMDD?

DATAENDS

CODESEGMENTUSE16

ASSUMECS:

CODE,DS:

DATA

ORG2000H

BEG:

CLI

JMPSTART

START:

MOVAX,DATA

MOVDS,AX

MOVAX,0

MOVSS,AX

MOVSP,1000H

MOVMM,0F5F5F5F5H

MOVAL,80H;初始化8255

MOVDX,TR8255

OUTDX,AL

MOVAL,99H

MOVDX,A8255

OUTDX,AL

MOVAL,5

MOVDX,C8255

OUTDX,AL

CALLWRITEVER

LLL:

MOVAL,00010011B;写ICW1

MOVDX,OPORT

OUTDX,AL

NOP

NOP

MOVAL,01000000B;写ICW2

MOVDX,JPORT

OUTDX,AL

NOP

NOP

MOVAL,00000001B;写ICW4

MOVDX,JPORT

OUTDX,AL

NOP

NOP

MOVAL,11111100B;写IMR

MOVDX,JPORT

OUTDX,AL

STI

;---------------------------------------

LL:

MOVSI,1;等待中断

LL1:

MOVCX,10000

LL2:

NOP

LOOPLL2

DECSI

JNZLL1

NOP

NOP

NOP

NOP

NOP

NOP

NOP

NOP

NOP

JMPLL

;--------------------------------------

WRITEVERPROC;写中断向量

PUSHA

MOVBX,OFFSETSERVER

MOVV40H,BX

MOVAX,CS

MOVV40H+2,AX

POPA

RET

WRITEVERENDP

;-------------------------------------

SERVERPROC;中断服务程序,显示-SUCCESS

MOVEAX,92C6C1BFH

MOVDX,A8255

OUTDX,EAX

MOVEAX,9286C692H

MOVDX,B8255

OUTDX,EAX

MOVEAX,MM

MOVDX,C8255

OUTDX,EAX

NOTEAX

MOVMM,EAX

MOVAL,20H

MOVDX,OPORT

OUTDX,AL

IRET

SERVERENDP

;-------------------------------------

CODEENDS

ENDBEG

实验11

.486

CODESEGMENTUSE16

ASSUMECS:

CODE

ORG1000H

BEG:

JMPSTART

CCONPORTEQU30CH

CCONBIT1EQU00010110B

CCONBIT2EQU01010100B

CCONBIT3EQU10010110B

CDPORT1EQU300H

CDPORT2EQU304H

CDPORT3EQU308H

CHDBIT1EQU08H

CHDBIT2EQU04H

START:

NOP;启动延时

NOP

MOVDX,CCONPORT;写入控制字

MOVAL,CCONBIT1

OUTDX,AL

NOP

NOP

MOVDX,CDPORT1;写入初值

MOVAL,CHDBIT1

OUTDX,AL

NOP

NOP

MOVDX,CCONPORT;写入控制字

MOVAL,CCONBIT2

OUTDX,AL

NOP

NOP

MOVDX,CDPORT2;写入初值

MOVAL,CHDBIT1

 

OUTDX,AL

NOP

NOP

WT1:

MOVDX,CCONPORT;写入控制字

MOVAL,CCONBIT3

OUTDX,AL

NOP

NOP

MOVDX,CDPORT3;写入初值

MOVAL,CHDBIT2

OUTDX,AL

WT:

NOP

 

JMPWT

CODEENDS

ENDBEG

实验13

.486

DATASEGMENTAT0USE16

ORG1000H

MMDB?

DATAENDS

CODESEGMENTUSE16

ASSUMECS:

CODE,DS:

DATA

ORG2000H

BEG:

JMPSTART

TABDB0C0H,0F9H

LENSEQU$-TAB

C8251EQU330H

D8251

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

当前位置:首页 > 医药卫生 > 基础医学

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

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