微机实验思考题.docx
- 文档编号:11357088
- 上传时间:2023-05-31
- 格式:DOCX
- 页数:30
- 大小:757.86KB
微机实验思考题.docx
《微机实验思考题.docx》由会员分享,可在线阅读,更多相关《微机实验思考题.docx(30页珍藏版)》请在冰点文库上搜索。
微机实验思考题
实验一数据传送
1、子程序Move中为什么比较SI、DI?
源数据块与目标范围有可能部分重叠,需要考虑从第一个字节开始复制(顺序复制),还是从最后一个字节开始复制(倒序复制)。
第一章源数据块与目标范围有可能部分重叠,需要考虑从第一个字节开始复制(顺序复制),还是从最后一个字节开始复制(倒序复制)。
2、编写一个程序,将DS段中的数据传送到实验仪B4区的61C256中。
说明:
B4区的61C256在I/O设备区,使用
、
读写。
实验二数制转换实验
1.实验内容1中将一个五位十进制数转换为二进制数(十六位)时,这个十进制数最小可为多少,最大可为多少?
为什么?
最大65535(FFFF),最小为0.存储器只能存16位,即FFFF。
2.将一个十六位二进制数转换为ASCII码十进制数时,如何确定Di的值?
Di:
表示十进制数0~9
将十六位二进制数转换为五位ASCII码表示的十进制数,就是求D1~D4,并将它们转换为ASCII码。
该位除以10取商,加30H。
即加30H为对应的ASCII码。
3.在十六进制转换为ASCII码时,存转换结果后,为什么要把DX向右移四次?
取出存入四位十六进制数的下一位。
腾出空间。
4.自编ASCII码转换十六进制、二进制转换BCD码的程序,并调试运行。
ASCII码转换十六进制
SSTACKSEGMENTSTACK
DW64DUP(?
)
SSTACKENDS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVCX,0004H
MOVDI,3500H
MOVDX,[DI]
A1:
MOVAX,DX
ANDAX,00FFH
CMPAL,40H
JBA2
SUBAL,07H
A2:
SUBAL,30H
MOV[DI+0DH],AL
DECDI
PUSHCX
MOVCL,08H
SHRDX,CL
POPCX
LOOPA1
MOVAX,4C00H
INT21H
CODEENDS
实验三运算类编程实验
1.求累加和程序设计,在偏移地址为1000H开始依顺序填入16个字(16个16位数),利用程序求和,存放在偏移地址2000H;
2.多字节加法程序设计,参考原程序,编写个两个64位数的减法程序,结果保存到具体内存单元,调试并记录。
实验四分支程序设计实验
1、将源数据首址改为3100H,目的数据地址改为310A,再加以验证(注意单步调试);
2、将源数据首址改为310AH,目的数据地址改为3100,再加以验证(注意单步调试)。
实验六排序程序设计实验
1、注意两个循环是如何循环的,如果想减少判断次数,比如说几次交换后就不再有数据交换了,如何修改程序来减少程序执行时间;
2、编一程序把3000H-3009H中内容按从大到小排列;如果是有符号数怎么改写程序。
思考题2.编一程序把3000H-3009H的内容从大到小排列
SSTACKSEGMENTSTACK
DW64DUP(?
)
SSTACKENDS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVCX,000AH
MOVSI,300AH
MOVBL,0FFH
A1:
CMPBL,0FFH
JNZA4
MOVBL,00H
DECCX
JZA4
PUSHSI
PUSHCX
A2:
DECSI
MOVAL,[SI]
DECSI
CMPAL,[SI]
JBA3
XCHGAL,[SI]
MOV[SI+01H],AL
MOVBL,0FFH
A3:
INCSI
LOOPA2
POPCX
POPSI
JMPA1
A4:
MOVAX,4C00H
INT21H;程序终止
CODEENDS
ENDSTART
思考题3.若是有符号数,该怎么处理(需要增加比较数字正负的环节)
SSTACKSEGMENTSTACK
DW64DUP(?
)
SSTACKENDS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVCX,000AH
MOVSI,300AH
MOVBL,0FFH
A1:
CMPBL,0FFH
JNZA7
MOVBL,00H
DECCX
JZA7
PUSHSI
PUSHCX
A2:
DECSI
MOVAL,[SI]
DECSI
MOVAH,80H
CMPAL,AH
JBA3
CMP[SI],AH
JBA5
CMPAL,[SI]
JBA6
JMPA5
A3:
CMP[SI],AH
JBA4
JMPA6
A4:
CMPAL,[SI]
JBA5
JMPA6
A5:
XCHGAL,[SI]
MOV[SI+01H],AL
MOVBL,0FFH
A6:
INCSI
LOOPA2
POPCX
POPSI
JMPA1
A7:
MOVAX,4C00H
INT21H;程序终止
CODEENDS
ENDSTARTENDSTART
硬件一静态存储器扩展实验(接线只有一种)
5.改变实验程序,按非规则字写存储器,观察实验结果。
规则字是低位地址为奇数,否者是非规则字,非规则字读取需要两个周期,而规则字只需要一个周期
在计算机中,一个字占两个字节。
一个字在存储器中按字节存储,若高地址为偶数,低地址为奇数,则为规则字。
相反,若高地址为奇数,低地址为偶数,则为非规则字。
6.改变实验程序,按字节方式写存储器,观察实验现象。
字节(Byte)是计算机信息技术用于计量存储容量和传输容量的一种计量单位,一个字节等于8位二进制数,在UTF-8编码中,一个英文字符等于一个字节
7.将实验程序改为死循环程序,分别按规则字与非规则字的方式写存储器。
5.改变实验程序,按非规则字写存储器,观察实验结果。
SSTACKSEGMENTSTACK
DW32DUP(?
)
SSTACKENDS
CODESEGMENT
STARTPROCFAR;远过程名
ASSUMECS:
CODE;分配代码段cs
MOVAX,8000H;存储器扩展空间
MOVDS,AX;数据段ds地址
AA0:
MOVSI,0001H;首地址8000:
0001si是偏移地址,01非规则字
MOVCX,0010H;cx计数寄存器10h十六进制=16十进制
MOVAX,0000H;ax是累加器从0开始
AA1:
MOV[SI],AX
INCAX;+1
INCSI;+1
INCSI;+1一个字si要+2
LOOPAA1;cx不等于0则循环
MOVAX,4C00H
INT21H;程序终止
STARTENDP
CODEENDS
ENDSTART
6.改变实验程序,按字节方式写存储器,观察实验现象。
SSTACKSEGMENTSTACK
DW32DUP(?
)
SSTACKENDS
CODESEGMENT
STARTPROCFAR
ASSUMECS:
CODE
MOVAX,8000H;存储器扩展空间段地址
MOVDS,AX
AA0:
MOVSI,0000H;数据首地址cx计数16
MOVCX,0010H
MOVAX,0000H
AA1:
MOV[SI],AX
INCAX
INCSI;SI只加1一个字节
LOOPAA1
MOVAX,4C00H
INT21H;程序终止
STARTENDP
CODEENDS
ENDSTART
7.将实验程序改为死循环程序,分别按规则字与非规则字的方式写存储器。
(1)规则字方式
SSTACKSEGMENTSTACK
DW32DUP(?
)
SSTACKENDS
CODESEGMENT
STARTPROCFAR
ASSUMECS:
CODE
MOVAX,8000H;存储器扩展空间段地址
MOVDS,AX
AA0:
MOVSI,0000H;数据首地址(偶地址开始)
MOVCX,0010H
MOVAX,0000H
AA1:
MOV[SI],AX
INCAX
INCSI
INCSI
LOOPAA1
MOVAX,4C00H
JMPAA0;跳转到AA0开始执行
INT21H;程序终止
STARTENDP
CODEENDS
ENDSTART
(2)非规则字方式
SSTACKSEGMENTSTACK
DW32DUP(?
)
SSTACKENDS
CODESEGMENT
STARTPROCFAR
ASSUMECS:
CODE
MOVAX,8000H;存储器扩展空间段地址
MOVDS,AX
AA0:
MOVSI,0001H;数据首地址(奇地址开始)
MOVCX,0010H
MOVAX,0000H
AA1:
MOV[SI],AX
INCAX
INCSI
INCSI
LOOPAA1
MOVAX,4C00H
JMPAA0;跳转到AA0开始执行
INT21H;程序终止
STARTENDP
CODEENDS
ENDSTART
硬件二8259中断控制实验
1.在中断中完成BCD码转换为二进制数。
将四个二位十进制数的BCD码存放于3500H起始的内存单元中,将转换的二进制数存入3510H起始的内存单元中,每次中断完成一个二位十进制数的BCD码转换。
实验步骤:
将四个二位十进制数的BCD码存入3500H~3507H中,即:
先键入E3500,然后输入0102030405060708.运行程序,按一次单次脉冲开关KK1+,查看3510内容,应为0ch。
再按一次单次脉冲开关KK1+,查看3511内容,应为22。
继续发中断,依次查看3512,3513内容。
在中断中完成BCD码转换为二进制数。
.MODELTINY
IO8259_0EQU0260H;EUQ等值赋值语句0260H?
?
?
?
端口地址?
IO8259_1EQU0261H
.DATA
BUFFERDB8DUP(?
)
ReDisplayFlagDB0
.STACK100
.CODE
START:
MOVAX,@DATA
MOVDS,AX;ds整数段寄存器es附加段寄存器
MOVES,AX
PUSHDS
CALLWriIntver
CLI;中断标志置0cpu禁止响应可屏蔽中断INTR
POPDS;ds出栈后面为初始化8259
;icw1初始化主片8259;icw指初始化命令字iow指方式设置命令字
MOVDX,IO8259_0;0260H送入dx
MOVAL,13H;13=00010011送入al
OUTDX,AL;ICW1执行00010011即
;写入偶地址标志位为1边沿触发单级使用需设置icw4
MOVDX,IO8259_1;0261送入dx
MOVAL,08H;08=00001000icw2写入奇地址尾三位指000即ir0
;引入的中断引脚信号,终端类型码00001000查表8.1中断类信号为08H,中断源系统时钟
OUTDX,AL;ICW2执行设置
MOVAL,09H;09=00001001
;写入1奇地址,000标志位1全嵌套方式00非缓冲方式18086配置
OUTDX,AL;ICW4执行设置
MOVAL,0;OCW1IMR各位置清0?
?
?
OUTDX,AL;执行操作(p270页)?
?
MOVSI,3500H;si源変址寄存器
MOVDI,3510H;目的変址寄存器
STI;中断标志置1允许cpu响应可屏蔽中断
AA1:
NOP;无操作
JMPAA1
WriIntverPROCNEAR;近过程名
PUSHES;es入栈
MOVAX,0;ax置0
MOVES,AX;es置0
MOVDI,20H;di目的変址寄存器?
?
?
?
?
?
?
?
?
?
20H?
?
?
?
?
?
?
?
?
LEAAX,MIR7;装入mir7的有效/偏移地址
STOSW;将累加器al/ax中的一个字(w)送入附加断中以di为目的指针的串中,且
;且di+-1或2
MOVAX,CS;cs代码段寄存器?
?
?
?
STOSW
POPES;当前sp栈顶出栈一个字送入目的操作数es,且sp+2
RET;对于call调用的返回指令
WriIntverENDP;本段短程序结束
MIR7:
STI;数制变换程序
XORAX,AX;异或ax=0
MOVAL,[SI];偏移地址si送入al即al=si
ADDAL,AL;al+al即al*2
MOVBL,AL;al送入bl=2al
ADDAL,AL;al=4al
ADDAL,AL;al=8al
ADDAL,BL;al=8al+2al=10al
INCSI;si+1
ADDAL,[SI];al=10al+si+1=11si+1(11*1+1/11*3+1/11*5+1/11*7+1)
MOV[DI],AL;al送入目的変址寄存器
INCSI;si再加1(即总共加2)(1/3/5/70
INCDI;di+1=al+1=10al+1
MOVAL,20H;?
?
?
?
?
?
?
?
?
?
8259A的口地址为20H/21H
MOVDX,IO8259_0
OUTDX,AL;中断结束命令
IRET
ENDSTART
2.在上述试验基础上,第五次中断结束中断,再按单次脉冲开关KK1+将无法进入中断服务程序。
.MODELTINY
IO8259_0EQU0260H
IO8259_1EQU0261H
.DATA
BUFFERDB8DUP(?
)
ReDisplayFlagDB0;0-不需要显示
counterDB06H;中断次数,计数conter
.STACK100
.CODE
START:
MOVAX,@DATA;数据引入
MOVDS,AX
MOVES,AX
PUSHDS
CALLWriIntver
CLI;中断标志置0cpu禁止响应可屏蔽中断INTR
POPDS
;初始化主片8259
MOVDX,IO8259_0
MOVAL,13H
OUTDX,AL;ICW1同上
MOVDX,IO8259_1
MOVAL,08H
OUTDX,AL;ICW2同上
MOVAL,09H
OUTDX,AL;ICW4同上
MOVAL,0;OCW1同上
OUTDX,AL
MOVSI,3500H
MOVDI,3510H
STI
AA1:
NOP
JMPAA1
WriIntverPROCNEAR;近过程名内容同上
PUSHES
MOVAX,0
MOVES,AX
MOVDI,20H
LEAAX,MIR7
STOSW
MOVAX,CS
STOSW
POPES
RET
WriIntverENDP
MIR7:
STI;允许响应INTR可屏蔽型中断
DECcounter;计数减1
JNAAA3;cfV(或计算)zf=1时低于等于/不高于,转移,
;cf进位标志(此处用不到,cf=0,无进位),zf零标志结果为0时zf=1
;54321(前5次)时cf.zf均为0不转移程序正常下走,结果为0时zf=1转移aa3空循环终止
XORAX,AX
MOVAL,[SI]
ADDAL,AL
MOVBL,AL
ADDAL,AL
ADDAL,AL
ADDAL,BL
INCSI
ADDAL,[SI]
MOV[DI],AL
INCSI
INCDI
MOVAL,20H
MOVDX,IO8259_0
OUTDX,AL;中断结束命令
IRET;call调用转换程序结束
AA3:
NOP
JMPAA3
ENDSTART
3:
编写程序利用8254计数器0和计数器1分别作为8259IR6,IR7的中断请求信号;将8255PA0接到发光二极管D0,8255PA7接到发光二极管D1;使DO,D1闪动,D0每闪动10次D1闪动一次。
4、利用中断实现8255实验一(基本输入输出实验)
硬件三8255并行接口实验
1:
执行程序后,使发光二极管闪动。
(接线1)
2:
执行程序后,使发光二极管高八位和低八位亮灭相反。
(X86文档)(接线1)
1、例子程序中只展示了8155的输入输出和读写数据RAM的功能,8155还有定时器/计数器的功能,有兴趣读者可以自己编写程序,通过8155来实现定时,当作定时器用时,如何接线?
2、若是要对PC口位操作,应该如何编写程序?
3、如何使用8155实现键盘扫描和LED显示?
(星研文档)
1、如何对8255的PC口进行位操作?
方法1
若是要对PC口位操作,应该如何编写程序?
.MODELTINY
.STACK32
.CODE
START:
MOVDX,0273H
MOVAL,90H
OUTDX,AL
AA1:
;MOVDX,0270H
;INAL,DX
;CALLDELAY
MOVAL,00001011B;PC5=1
MOVDX,0273H
OUTDX,AL
JMPAA1
DELAY:
PUSHCX
MOVCX,0F00H
AA2:
PUSHAX
POPAX
LOOPAA2
POPCX
RET
ENDSTART
方法2
SSTACKSEGMENTSTACK
DW32DUP(?
)
SSTACKENDS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVDX,0273H
MOVAL,10000000B;D3为0C高口输出D0为0C低口输出
OUTDX,AL
MOVAL,00001111B;D3D2D1均为1PC7置1不亮
OUTDX,AL
MOVAL,00000001B;PC0IS1
OUTDX,AL
MOVAL,000000111B;PC3IS1
OUTDX,AL
JMP$
CODEENDS
ENDSTART
思考题:
1:
执行程序后,使发光二极管闪动。
2:
执行程序后,使发光二极管高八位和低八位亮灭相反。
片选区
片选
地址范围
说明
mCS0
80000H~BFFFFH
存贮器芯片的片选,16位数据总线
CS1
0270H~027FH
I/O芯片的片选,8位数据总线
CS2
0260H~026FH
CS3
0250H~025FH
CS4
0240H~024FH
CS5
0230H~023FH
I/O芯片的片选,16位数据总线
思考1(已经确认)
SSTACKSEGMENTSTACK
DW32DUP(?
)
SSTACKENDS
CODESEGMENT
ASSUMECS:
CODE;声明代码段
START:
MOVDX,0273H;控制端口的地址(我们接的是CS1非,其他具体查表)
MOVAL,80H;A(D6.5wei)0方式B(D21wei)0方式10000000B
OUTDX,AL;输入al,即执行方式选择控制字
MOVBX,0000H;0000000000000000(灯全亮)
AA1:
MOVDX,0270H;端口A地址
MOVAL,BH;高八位
OUTDX,AL
NOTBH;NOT是做灭/亮灯信号
MOVDX,0271H;端口B地址
MOVAL,BL;高八位
OUTDX,AL
NOTBL
CALLDELAY
JMPAA1
DELAYPROCNEAR;延时程序
MOVCX,0FFF0H
AA2:
PUSHAX
POPAX
LOOPAA2
RET
DELAYENDP
CODEENDS
ENDSTART
思考题2:
使发光二极管高八位和低八位亮灭相反(已经确认)
SSTACKSEGMENTSTACK
DW32DUP(?
)
SSTACKENDS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVDX,0273H;控制端口的地址(我们接的是CS1非,其他具体查表)
MOVAL,80H;A0方式B0方式10000000B
OUTDX,AL
MOVBX,00FFH;0000000011111111(灯全闪初始高低相反)
AA1:
MOVDX,0270H;端口A地址
MOVAL,BH
OUTDX,AL
NOTBH;NOT是做灭/亮灯信号
MOVDX,0271H;端口B地址
MOVAL,BL
OUTDX,AL
NOTBL;NOT亮/灭
CALL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 实验 思考题