微机原理实验答案汇编.docx

上传人:b****8 文档编号:9524941 上传时间:2023-02-05 格式:DOCX 页数:33 大小:23.43KB
下载 相关 举报
微机原理实验答案汇编.docx_第1页
第1页 / 共33页
微机原理实验答案汇编.docx_第2页
第2页 / 共33页
微机原理实验答案汇编.docx_第3页
第3页 / 共33页
微机原理实验答案汇编.docx_第4页
第4页 / 共33页
微机原理实验答案汇编.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

微机原理实验答案汇编.docx

《微机原理实验答案汇编.docx》由会员分享,可在线阅读,更多相关《微机原理实验答案汇编.docx(33页珍藏版)》请在冰豆网上搜索。

微机原理实验答案汇编.docx

微机原理实验答案汇编

1.题目:

编程将(AX)=2387、(BX)=192FH、(CX)=9256中的无符号数按由大到小排序,上机编程调试出程序,并将程序及排序结果记录在下面。

CODESEGMENT

ASSUMECS:

CODE

START:

MOVAX,2387

MOVBX,192FH

MOVCX,9256

CMPAX,BX

JAENEXT1

XCHGAX,BX

NEXT1:

CMPAX,CX

JAENEXT2

XCHGAX,CX

NEXT2:

CMPBX,CX

JAENEXT3

XCHGBX,CX

NEXT3:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

2.题目:

编程将(BX)=8600H、(CX)=3489H、(DX)=9235按有符号数由大到小排序,上机编程调试出程序,并将程序及排序结果记录在下面。

;CODESEGMENT

ASSUMECS:

CODE

START:

MOVBX,8600h

MOVCX,3489H

MOVDX,9235

CMPBX,CX

JGENEXT1

XCHGBX,CX

NEXT1:

CMPBX,DX

JGENEXT2

XCHGBX,DX

NEXT2:

CMPCX,DX

JGENEXT3

XCHGCX,DX

NEXT3:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

3.题目:

在数据段中定义如下数据:

32,34,89H,,编程将以上数据按有符号数进行排序,并将程序和结果记录下来。

DATASEGMENT

NUMDB32,34,89H

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DAT

START:

MOVAX,DATA

MOVDS,AX;初始化DS

LEABX,NUM;取有效地址到BX,以便访问要排序的数

MOVAL,[BX]

CMPAL,[BX+1]

JGENEXT1;若第一个数大则跳转,否则将第一个与第二个数交换

XCHGAL,[BX+1]

MOV[BX],AL

NEXT1:

CMPAL,[BX+2]

JGENEXT2;若第一个数大则跳转,否则将第一个与第三个数交换

XCHGAL,[BX+2]

MOV[BX],AL

NEXT2:

MOVAL,[BX+1];将第二个和第三个数比较

CMPAL,[BX+2]

JGENEXT3;若第二个数大则跳转,否则将第二个与第三个数交换

XCHGAL,[BX+2]

MOV[BX+1],AL

NEXT3:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

4.题目:

在数据段中定义如下数据:

99,25,86,编程将以上数据按无符号数进行排序,上机调试出程序,并将程序和结果记录下来。

datasegment

numdb99h,25h,86h

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

leabx,num

moval,[bx]

cmpal,[bx+1]

jaenext1

xchgal,[bx+1]

mov[bx],al

next1:

cmpal,[bx+2]

jaenext2

xchgal,[bx+2]

mov[bx],al

next2:

moval,[bx+1]

cmpal,[bx+2]

jaenext3

xchgal,[bx+2]

mov[bx+1],al

next3:

movah,4ch

int21h

codeends

endstart

5.题目:

(AL)=86H,(AH)=34H,(BL)=78H,编程将以上数据按有符号数进行排序,上机调试出程序,并将程序和结果记录下来。

codesegment

assumecs:

code

start:

moval,86h

movah,34h

movbl,78h

cmpal,ah

jaenext1

xchgal,ah

next1:

cmpal,bl

jaenext2

xchgal,bl

next2:

cmpah,bl

jaenext3

xchgah,bl

next3:

movah,4ch

int21h

codeends

endstart

6.题目:

中断向量为:

1234:

5678H,编程将此中断向量写入类型0所在的中断向量表,上机调试出程序,并将程序和结果记录下来。

(直接用MOV指令写入即可)

codesegment

assumecs:

code,ds:

code

start:

xorax,ax

movds,ax

movbx,0

movcl,2

shlbx,cl

movwordptr[bx],5678h

movwordptr[bx+2],1234h

movah,4ch

int21h

codeends

endstart

7.题目:

中断向量为:

3456:

6678H,编程将此中断向量写入类型60H所在的中断向量表,上机调试出程序,并将程序和结果记录下来。

(直接用MOV指令写入即可)

CODESEGMENT

ASSUMECS:

CODE,DS:

CODE

START:

XORAX,AX

MOVDS,AX;初始化DS,中断向量表在0段

MOVBX,60H

MOVCL,2

SHLBX,CL;让中断类型化左移两位,以便实现乘以4作为中断向量地址

MOVWORDPTR[BX],5678H

MOVWORDPTR[BX+2],1234H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

8.题目:

中断向量为:

编程将中断向量类型60H所对应的中断向量从中断向量表中取出来分别放在ES和DI中,上机调试出程序,并将程序和结果记录下来。

(直接用MOV指令即可)

CODESEGMENT

ASSUMECS:

CODE,DS:

CODE

START:

XORAX,AX

MOVDS,AX;初始化DS,中断向量表在0段

MOVBX,60H

MOVCL,2

SHLBX,CL;让中断类型化左移两位,以便实现乘以4作为中断向量地址

MOVDI,WORDPTR[BX]

MOVES,WORDPTR[BX+2]

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

9.题目:

中断向量为:

编程将中断向量类型21H所对应的中断向量从中断向量表中取出来分别放在SI和BP中,上机调试出程序,并将程序和结果记录下来。

(直接用MOV指令即可)

codesegment

assumecs:

code,ds:

code

start:

xorax,ax

movds,ax

movbx,21h

movcl,2

shlbx,cl

movsi,wordptr[bx]

movbp,wordptr[bx+2]

movah,4ch

int21h

codeends

endstart

10.题目:

中断向量为:

编程将中断向量类型45H所对应的中断向量从中断向量表中取出来分别放在DI和BP中,上机调试出程序,并将程序和结果记录下来。

(直接用MOV指令即可)

codesegment

assumecs:

code,ds:

code

start:

xorax,ax

movds,ax

movbx,45h

movcl,2

shlbx,cl

movdi,wordptr[bx]

movbp,wordptr[bx+2]

movah,4ch

int21h

codeends

endstart

11.题目:

利用实验箱中的8255并口芯片实现1个发光二极管的闪烁。

io8255aequ288h

io8255bequ28bh

io8255cequ28ah

codesegment

assumecs:

code

start:

movdx,28bh

moval,80h

outdx,al

movcx,5

disp:

moval,03h

outdx,al

pushcx

movcx,10h

delay:

loopdelay

popcx

moval,02h

outdx,al

loopdisp

movah,4ch

int21h

codeends

endstart

12.题目:

在交通灯实验中请使用8255的C口按位置1/置0的功能实现如下现象:

南北路口的绿灯、东西路口的红灯同时亮30秒左右。

io8255aequ288h

io8255bequ28bh

io8255cequ28ah

codesegment

assumecs:

code

start:

movdx,28bh

moval,80h

outdx,al

disp:

moval,0bh

outdx,al

moval,05h

outdx,al

movcx,2000h

de1:

movdi,9000h

de0:

decdi

jnzde0

loopde1

movdl,0ffh;判断是否有按键

movah,06h

int21h

movah,4ch

int21h

codeends

endstart

13.题目:

在交通灯实验中,请使用8255的C口按位置1/置0的功能实现如下现象:

东西路口的黄灯闪烁5次。

;设8255的CS片选地址接280H-287H

;PC1接黄色发光二极管

CODESEGMENT

ASSUMECS:

CODE

START:

MOVDX,28bH

MOVAL,80H

OUTDX,AL;8255初始化

MOVCX,5

DISP:

MOBAL,03H

OUTDX,AL;PC1通过控制端口置位,点亮黄灯

PUSHCX;暂时保存CX值,因为下面的循环要用到

MOVCX,100H

DELAY:

LOOPDELAY;延时循环,可以调节

POPCX

MOVAL,02H

OUTDX,AL;PC1通过控制端口清零,熄灭黄灯

LOOPDISP;总共循环5次,黄灯亮灭5次,即闪烁5次

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

14.题目:

利用8255A的PC7产生负脉冲:

io8255aequ288h

io8255bequ28bh

io8255cequ28ah

codesegment

assumecs:

code

start:

movdx,28bh

moval,80h

outdx,al

movcx,10

disp:

moval,03h

outdx,al

pushcx

movcx,10h

delay:

loopdelay

popcx

moval,02h

outdx,al

loopdisp

movah,4ch

int21h

codeends

endstart

15.题目:

在使用8个开关控制8个LED的实验中,请利用8255的A口作为输入端口,C口作为输出端口实现原来的实验现象。

io8255aequ288h

io8255bequ28bh

io8255cequ28ah

codesegment

assumecs:

code

start:

movdx,io8255b;设8255为C口输出,A口输入

moval,90h

outdx,al

inout:

movdx,io8255a;从A口输入一数据

inal,dx

movdx,io8255c;从C口输出刚才自A口

outdx,al;所输入的数据

movdl,0ffh;判断是否有按键

movah,06h

int21h

jzinout;若无,则继续自a口输入,c口输出

movah,4ch;否则返回

int21h

codeends

endstart

16.题目:

在交通灯实验中,请使用8255的C口按位置1/置0的功能实现如下现象:

南北路口的红灯、东西路口的绿灯同时亮30秒左右。

io8255aequ288h

io8255bequ28bh

io8255cequ28ah

codesegment

assumecs:

code

start:

movdx,28bh

moval,80h

outdx,al

disp:

moval,0fh

outdx,al

moval,01h

outdx,al

movcx,2000h

de1:

movdi,9000h

de0:

decdi

jnzde0

loopde1

movdl,0ffh;判断是否有按键

movah,06h

int21h

movah,4ch

int21h

codeends

endstart

17.题目:

在交通灯实验中,请使用8255的C口按位置1/置0的功能实现如下现象:

南北路口的黄灯闪烁5次。

io8255aequ288h

io8255bequ28bh

io8255cequ28ah

codesegment

assumecs:

code

start:

movdx,28bh

moval,80h

outdx,al

movcx,5

disp:

moval,0ch

outdx,al

pushcx

movcx,10h

delay:

loopdelay

popcx

moval,0bh

outdx,al

loopdisp

movah,4ch

int21h

codeends

endstart

18.题目:

在模/数转换器实验中,实现以下条件下的A/D转换,模拟量的输入通道:

IN1;A/D转换器的地址:

2B8H;显示结果中不出现大写字母。

CODESEGMENT

ASSUMECS:

CODE

START:

XORAX,AX

MOVDX,2B9H;2B8H为IN1的地址

OUTDX,AL;启动A/D转换

NOP

NOP

INAL,DX

MOVBL,AL;暂时保存读入的值,因为后面显示时会修改AL的值

MOVDL,AL

MOVCL,4

ROLDL,CL;将要显示的高四位移到低四位去

ANDDL,0FH;将高四位清掉,目的显示原读入数据的高四位,即当前DL中的低四位

ADDDL,30H

CMPDL,39H

JBENEXT

ADDDL,27H;若是十六进制数A-F,则加27H,显示对应小写字母

NEXT:

MOVAH,02H

INT21H;显示A/D转换结果的高四位

MOVDL,BL

ANDDL,0FH

ADDDL,30H

CMPDL,39H

JBENEXT1

ADDDL,27H;若是十六进制数A-F,则加27H,显示对应小写字母

NEXT1:

MOVAH,02H

INT21H;显示A/D转换结果的低四位

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

19.题目:

利用可编程计数定时器8253A的计数器0和计数器2,输出100Hz的的信号,连接必要的连线,编写初始化程序。

上机调试出程序,并将程序记录下来。

CODESEGMENT

ASSUMECS:

CODE

START:

MOVDX,283H

MOVAL,00010110B;计数器0的模式字,只写低八位,工作方式3,计数初值为二进制

OUTDX,AL;写计数器0的工作模式字

MOVAL,100

MOVDX,280H

OUTDX,AL;写计数器0的计数初值,二进制,只写低八位

MOVDX,283H;此句新添加,对计数器2的初始化模式字应写入到控制端口

MOVAL,10010110B;计数器2的模式字,只写低八位,工作方式3,计数初值为二进制

OUTDX,AL;写计数器2的工作模式字

MOVAL,100

MOVDX,282H

OUTDX,AL;写计数器2的计数初值,二进制,只写低八位,至此已完成初始化

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

20.题目:

利用可编程计数定时器8253A的计数器1和计数器2,输出50Hz的的信号,连接必要的连线,编写初始化程序。

上机调试出程序,并将程序记录下来。

codesegment

assumecs:

code

start:

movdx,283h

moval,01010110b

outdx,al

moval,200

movdx,281h

outdx,al

moval,10010110b

outdx,al

moval,200

movdx,280h

outdx,al

movah,4ch

int21h

codeends

endstart

21.用A命令汇编一条INT21H指令,用命令T单步执行该指令,比较指令执行前后CS和IP、堆栈指针SP及堆栈内容变化情况。

提示:

注意21H这个中断类型号与中断向量地址、中断向量的关系,注意执行中断时要压入堆栈保护的内容:

FR、CS、IP

22.用命令A汇编下列程序段,用命令T跟踪执行,判断程序段能否完成指定功能。

程序段完成将DS:

2000H开始的5个字节内存内容相加,并把相加的结果存放在DS:

2005H和DS:

2006H内存单元中,注意:

要考虑进位。

MOVCX,5

MOVAL,0

MOVBX,2000H

next:

ADDAL,[BX]

INCBX

DECCX

LOOPnext;(CX)-1->(CX),(CX)≠0转next

MOV[BX],AL

答案:

MOVCX,5

MOVAL,0

MOVBX,2000H

CLC;应加清进位命令

MOVAH,0;2008年12月份修改

next:

ADDAL,[BX];原先为ADD命令

ADCAH,0

INCBX

DECCX;这一句是多余的,应删除掉,因为loop里面隐含了CX=CX-1

LOOPnext;(CX)-1->(CX),(CX)≠0转next

MOV[BX],AL;保存和

MOVAL,0

ADCAL,0;将进位加到AL中

MOV[BX+1],AH;保存进位

23.编写完整的汇编语言程序,实现两个双字的加法,假设第一个操作数是10008423H,放在2000H处,第二个操作数是2007F00H,放在了3000H处。

DATASEGMENT

ORG2000H

NUM1DD10008423H

CNUMDB?

;存放进位标志

ORG3000H

NUM2DD2007F00H

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX;初始化DS

LEABX,NUM1;取有效地址到BX,以便访问要排序的数

LEASI,NUM2

MOVAX,WORDPTR[BX]

ADDAX,WORDPTR[SI]

MOVWORDPTR[BX],AX

MOVAX,WORDPTR[BX+2]

ADCAX,WORDPTR[SI+2]

MOVWORDPTR[BX+2],AX

MOVAL,0

ADCAL,0

MOVBYTEPTR[BX+4],AL;保存进位原先方括号内为BX+3

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

24.编写完整的汇编语言程序,实现:

把“Hello,LiaochengUniversity”传送到另外一个段的内存单元处,注意:

不准使用movsb/movsw指令。

DATASEGMENT

STR1DB'Hello,LiaochengUniversity'

LENTDB?

DATAENDS

EXTRASEGMENT

STR2DB30DUP(?

EXTRAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

EXTRA

START:

MOVAX,DATA

MOVDS,AX;初始化DS

MOVAX,EXTRA

MOVES,AX

LEASI,STR1;取有效地址到BX,以便访问要排序的数

LEADI,STR2

MOVCX,LENT-STR1

LPTRANS:

MOVAL,[SI]

MOVES:

[DI],AL

INCSI

INCDI

LOOPLPTRANS

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

25.用D命令查看中断向量表,查找int17h对应的中断向量,并把中断向量修改为:

1234H:

5678H。

codesegment

assumecs:

code,ds:

code

start:

xorax,ax

movds,ax

movbx,17h

movcl,2

shlbx,cl

movwordptr[bx],5678h

movwordptr[bx+2],1234h

movah,4ch

int21h

codeends

endstart

26.编写完整的汇编语言程序,把内存3000H:

2000H起30个字节数据传送到内存2000H:

1000H开始处。

datasegment

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,3000h

movds,ax

movsi,2000h

movax,2000h

moves,ax

movdi,1000h

movcx,30

a1:

moval,[si]

moves:

[di],al

incsi

incdi

loopa1

movah,4ch

int21h

codeends

endstart

27.编写完整的汇编语言程序,实现:

显示字符串“HelloWorld!

”,并利用d

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

当前位置:首页 > 总结汇报 > 学习总结

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

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