微机原理与接口技术编程18Word格式.docx

上传人:b****4 文档编号:16741385 上传时间:2022-11-25 格式:DOCX 页数:19 大小:22.76KB
下载 相关 举报
微机原理与接口技术编程18Word格式.docx_第1页
第1页 / 共19页
微机原理与接口技术编程18Word格式.docx_第2页
第2页 / 共19页
微机原理与接口技术编程18Word格式.docx_第3页
第3页 / 共19页
微机原理与接口技术编程18Word格式.docx_第4页
第4页 / 共19页
微机原理与接口技术编程18Word格式.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

微机原理与接口技术编程18Word格式.docx

《微机原理与接口技术编程18Word格式.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术编程18Word格式.docx(19页珍藏版)》请在冰豆网上搜索。

微机原理与接口技术编程18Word格式.docx

COUNTEQU($-BIN)/2

STRDB0DH,0AH,5DUP(?

),‘$’

DATAENDS

CODESEGMENT

CODE,DS:

DATA,ES:

DATA

MOVAX,DATA

MOVES,AX

MOVBX,OFFSETBIN

NEXT:

MOVDX,[BX]

CALLBTOD

INCBX

LOOPNEXT

BTODPROCNEAR

PUSHBX

PUSHCX

MOVDI,OFFSETSTR+2

MOVAL,‘‘

MOVCX,5

CLD

REPSTOSB

MOVAX,DX

MOVBX,10

MOVSI,OFFSETSTR+6

MOVDX,0

DIVBX

ADDDL,30H

MOV[SI],DL

DECSI

CMPAX,0

JNEGOON

MOVDX,OFFSETSTR

MOVAH,9

POPCX

POPBX

RET

BTODENDP

CODEENDS

3.对一个字符串中的字符进行统计,分别统计大写字母、小写字母、数字和其他字符的个数。

STRINGDB‘Thepriceis$500.’

COUNTEQU$-STRING

X1DB?

X2DB?

X3DB?

X4DB?

MOVSI,OFFSETSTRING

MOVBX,0

MOVDX,0

MOVAL,[SI]

CMPAL,‘0’

JBL1

CMPAL,‘9’

JBEL4

CMPAL,‘A’

CMPAL,‘Z’

JBEL2

CMPAL,‘a’

CMPAL,‘z’

JBEL3

L1:

INCDL

JMPNEXT

L2:

INCBH

L3:

INCBL

L4:

INCDH

INCSI

MOVX1,BH

MOVX2,BL

MOVX3,DH

MOVX4,DL

4.阅读下面的汇编语言程序,写出程序执行后屏幕上显示的内容。

STRDB0DH,0AH,3DUP(‘’),‘$’

MOVCX,1

CMPCL,0

JESTOP

MOVAX,CX

CALLHTOD

SALCX,1

STOP:

MOVAH,4CH

HTODPROCNEAR

MOVSI,OFFSETSTR+4

HTODENDP

 

1

2

4

8

16

32

64

128

5.编写程序,把数组ARRAY中的100个16位带符号数按从小到大的顺序排列。

(答案见书)

6.已知数组ARRAY中包含下列元素:

-9、6、10、-2、-12、-8、1、5、16,请编写程序找出其中的最小元素和最大元素,分别把它们存入MIN和MAX单元。

写出完整汇编语言程序。

ARRAYDW-9、6、10、-2、-12、-8、1、5、16

COUNTEQU($-ARRAY)/2

MINDW?

MAXDW?

MOVBX,OFFSETARRAY

MOVAX,[BX]

MOVDX,[BX]

CMPAX,[BX]

JGESKIP1

SKIP1:

CMPDX,[BX]

JLESKIP2

SKIP2:

INCBX

MOVMAX,AX

MOVMIN,DX

7.编写程序,比较两个字符串STR1和STR2是否相同。

如果相同,则把1送入变量RESULT中;

如果不同,则把0送入变量RESULT中。

DATASEGSEGMENT

STR1DB‘Theprogramistoolong.’

LEN1EQU$-STR1

STR2DB‘Theprogramisnotlong.’

LEN2EQU$-STR2

RESULTDB?

DATASEGENDS    

CODESEGSEGMENT

CODESEG,DS:

DATASEG,ES:

DATASEG

MOVAX,DATASEG

MOVES,AX  

MOVCX,LEN1

CMPCX,LEN2

JNENOSAME  

LEASI,STR1

LEADI,STR2

REPECMPSB  

JNENOSAME

MOVRESULT,1

JMPSTOP

NOSAME:

MOVRESULT,0

CODESEGENDS

ENDBEGIN 

8.请用80x86汇编语言编写程序,从键盘输入一个字符串,把其中所有的小写字母转换成对应的大写字母,然后在屏幕输出该字符串。

DATA SEGMENT

STRING DB 255

DB ?

DB 255 DUP(?

DATA ENDS

CODE SEGMENT

ASSUME CS:

CODE,DS:

DATA

BEGIN:

MOV AX,DATA

MOV DS,AX

LEA DX,STRING

MOV AH,10

INT 21H

LEA SI,STRING+2

MOV CL,STRING+1

MOV CH,0

GOON:

LODSB

CMP AL,”a”

JB SKIP

CMP AL,”z”

JA SKIP

SUB AL,32

SKIP:

MOV DL,AL

MOV AH,2

LOOP GOON

MOV AH,4CH

CODE ENDS

END BEGIN

9.请用80x86汇编语言编写程序,从数组ARRAY中搜索变量VAL的值,如果找到,则把所找到结果在数组中的位置序号(起始位置从1开始)送入变量RESULT中;

如果未找到,则把0送入变量RESULT中。

假定数组ARRAY中包含下列元素:

-9、6、10、-2、-12、-8、1、5、16,VAL为5。

COUNTEQU($-ARRAY)/2

VALDW5

RESULTDW?

DATAENDS           

MOVAX,VAL

LEABX,ARRAY-2

MOVDX,0

MOVCX,COUNT      

SEARCH:

INCDX

CMPAX,[BX]

LOOPNESEARCH     

JNEFAILURE

MOVRESULT,DX

FAILURE:

MOVRESULT,0      

ENDBEGIN        

10.请用80x86汇编语言编写程序,从键盘输入一个不超过3位的十进制数,把该数的值保存到变量VALUE中。

要求程序能对非法输入(指按下了非数字键)进行检测,并在屏幕上显示该十进制数,当用户按回车键时表示输入结束。

VALUE DW ?

MOV BX,0

MOV CX,4

MOV AH,8

CMP AL,0DH

JE STOP

CMP AL,‘0’

JB GOON

CMP AL,‘9’

JA GOON

SAL BX,1

MOV DX,BX

ADD BX,DX

AND AL,0FH

MOV AH,0

ADD BX,AX

STOP:

MOV VALUE,BX

11.AX中存放4位16进制数,编写程序把这4位十六进制数转成ascii码,比如12ABh是个数字,把它转化成字符串’12AB’,存到DS段BUFF处。

(答案参考书第四章例题或题2,与题2不同处在于除以16,然后对0-9和A-Fh作不同处理)

12.请用80x86汇编语言编写程序,把缓冲区BLOCK中的正负数分开。

其中非负数存入POSITIVE缓冲区,负数存入NEGATIVE缓冲区。

BLOCKDW-6,5,0,-3,-1,-8,2,10,-5,-3,7,9,-2

COUNTEQU($-BLOCK)/2

POSITIVEDWCOUNTDUP(0)

NEGATIVEDWCOUNTDUP(0)

LEABX,BLOCK

LEASI,POSITIVE

LEADI,NEGATIVE

MOVAX,[BX]

JGEABOVE

MOV[DI],AX

INCDI

ABOVE:

MOV[SI],AX

INCSI

二、硬件编程

13.下图是8255A作为打印机接口的示意图。

图中BUSY是忙信号,如果BUSY=1,表示打印机正在打印字符,否则,表示打印机空闲;

STB是选通信号,负脉冲驱动打印机工作。

现在利用8255A的端口A输出字符编码,端口C传输BUSY和STB信号,端口A和端口C都采用方式0工作。

假设8255A的端口地址分配如下:

端口A  40H

端口B  41H

端口C  42H

控制口  43H

请根据上述条件编写一个完整的汇编语言程序,把内存缓冲区BUFFER中的字符串通过打印机输出,假设该字符串为"

Theprogramistestingaprinter"

BUFFERDB‘Theprogramistestingaprinter.’

SLENEQU$-BUFFER

DATASEGENDS     

MOVAL,81H

OUT43H,AL

MOVAL,0DH

OUT43H,AL   

LEABX,BUFFER

MOVCX,SLEN

INAL,42H

ANDAL,04H

JNEGOON   

MOVAL,[BX]

OUT40H,AL

MOVAL,0CH

INCAL

OUT43H,AL  

ENDBEGIN 

14.某微型机的中断系统由3片8259A组成,以级联方式进行连接。

其中作为主片的8259A的端口地址为80H和81H,工作方式为特殊全嵌套、电平触发、缓冲及中断非自动结束,中断类型号为38~3FH。

第一个从片8259A的端口地址为82H和83H,工作方式为一般全嵌套、电平触发、非缓冲及中断非自动结束,中断类型号为40~47H,中断请求输出端INT与主片的IR3连接在一起;

第二个从片8259A的端口地址为84H和85H,工作方式为一般全嵌套、电平触发、非缓冲及中断非自动结束,中断类型号为48~4FH,中断请求输出端INT与主片的IR5连接在一起。

请编写程序分别对上述三个8259A芯片进行初始化。

主片的初始化程序:

MOVAL,19H

OUT80H,AL

MOVAL,38H

OUT81H,AL

MOVAL,28H

MOVAL,1DH

第一个从片的初始化程序:

OUT82H,AL

MOVAL,40H

OUT83H,AL

MOVAL,03H

MOVAL,01H

第二个从片的初始化程序:

OUT84H,AL

MOVAL,48H

OUT85H,AL

MOVAL,05H

15.假设8254的四个端口地址分别为1F0H~1F3H,其A1和A0分别与对应的地址线连接。

现在要求计数器0工作在方式0,计数初值为1000,按二进制计数;

计数器1工作在方式1,计数初值为50,按BCD码计数;

计数器2工作在方式3,计数初值为200,按二进制计数。

请写出对该8254初始化的程序段,以及读取计数器0当前值的程序段,要求把读出结果保存到寄存器AX中。

;

对计数器0初始化

MOVAL,30H

MOVDX,1F3H

OUTDX,AL

MOVAX,1000

MOVDX,1F0H

MOVAL,AH

对计数器1初始化

MOVAL,53H

MOVAL,50H

MOVDX,1F1H

对计数器2初始化

MOVAL,96H

MOVAL,200

MOVDX,1F2H

读取计数器0的当前值

MOVAL,00000000B

MOVDX,1F3H

OUTDX,AL

MOVDX,1F0H

INAL,DX

MOVAH,AL

XCHGAH,AL

16.假设8255A的4个端口地址分别为300H~303H,请编写程序首先将A口设置为工作方式1且为输入,B口设置为工作方式0且为输出,然后从PC5引脚输出一个正脉冲。

CODE

MOVAL,10110000B

MOVDX,303H

OUTDX,AL         

MOVAL,00001010B

NOP

MOVAL,00001011B

ENDBEGIN             

17.有一个终端输出设备,它的数据端口地址为8000H,状态端口地址为8001H。

其中状态端口的D2位若为1表示此时可以向该设备输出字符,请编写一个程序,向该设备输出50个字符,已知这些字符保存在BUFFER开始的内存缓冲区中。

BUFFERDB50DUP(?

MOVBX,OFFSETBUFFER

MOVCX,50

MOVDX,8001H

INAL,DX

TESTAL,04H

JZGOON

MOVDX,8000H

MOVAL,[BX]

18.有一个CRT终端设备,它的数据端口地址为8000H,状态端口地址为8001H。

其中状态端口的D6位为READY,若为0表示输入数据有效,此时CPU可从数据端口输入一个数据。

请编写一个程序,从终端上输入100个字符,并传送到以BUFFER开始的内存缓冲区中。

BUFFERDB100DUP(?

MOVCX,100

TESTAL,40H

MOV[BX],AL

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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