版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验一 数据传送1、子程序Move中为什么比较SI、DI?源数据块与目标范围有可能部分重叠,需要考虑从第一个字节开始复制(顺序复制),还是从最后一个字节开始复制(倒序复制)。第一章 源数据块与目标范围有可能部分重叠,需要考虑从第一个字节开始复制(顺序复制),还是从最后一个字节开始复制(倒序复制)。2、编写一个程序,将DS段中的数据传送到实验仪B4区的61C256中。说明:B4区的61C256在I/O设备区,使用、读写。实验二 数制转换实验1. 实验内容1中将一个五位十进制数转换为二进制数(十六位)时,这个十进制数最小可为多少,最大可为多少?为什么?最大65535(FFFF),最小为0.存储器只
2、能存16位,即FFFF。2. 将一个十六位二进制数转换为ASCII码十进制数时,如何确定Di的值?Di:表示十进制数09将十六位二进制数转换为五位ASCII码表示的十进制数,就是求D1D4,并将它们转换为ASCII码。该位除以10取商,加30H。即加30H为对应的 ASCII码。3. 在十六进制转换为ASCII码时,存转换结果后,为什么要把DX向右移四次?取出存入四位十六进制数的下一位。腾出空间。4. 自编ASCII码转换十六进制、二进制转换BCD码的程序,并调试运行。ASCII码转换十六进制SSTACKSEGMENT STACKDW 64 DUP(?)SSTACKENDSCODESEGMEN
3、TASSUME CS:CODESTART:MOV CX,0004HMOV DI,3500HMOV DX,DIA1:MOV AX,DXAND AX,00FFHCMP AL,40HJB A2SUB AL,07HA2:SUB AL,30HMOV DI+0DH,ALDEC DIPUSH CXMOV CL,08HSHR DX,CLPOP CXLOOP A1MOV AX,4C00HINT 21HCODEENDS实验三 运算类编程实验1. 求累加和程序设计,在偏移地址为1000H开始依顺序填入16个字(16个16位数),利用程序求和,存放在偏移地址2000H;2. 多字节加法程序设计,参考原程序,编写个两个
4、64位数的减法程序,结果保存到具体内存单元,调试并记录。实验四 分支程序设计实验1、将源数据首址改为3100H,目的数据地址改为310A,再加以验证(注意单步调试);2、将源数据首址改为310AH,目的数据地址改为3100,再加以验证(注意单步调试)。实验六 排序程序设计实验1、注意两个循环是如何循环的,如果想减少判断次数,比如说几次交换后就不再有数据交换了,如何修改程序来减少程序执行时间;2、编一程序把3000H-3009H中内容按从大到小排列;如果是有符号数怎么改写程序。思考题2. 编一程序把3000H-3009H的内容从大到小排列SSTACKSEGMENT STACKDW 64 DUP(
5、?)SSTACKENDSCODESEGMENTASSUME CS:CODESTART:MOV CX, 000AHMOV SI, 300AHMOV BL, 0FFHA1:CMP BL, 0FFHJNZ A4MOV BL, 00HDEC CXJZ A4PUSH SIPUSH CXA2:DEC SIMOV AL, SIDEC SICMP AL, SIJB A3XCHG AL, SIMOV SI+01H, ALMOV BL, 0FFHA3:INC SILOOP A2POP CXPOP SIJMP A1A4: MOV AX,4C00HINT 21H;程序终止CODEENDSEND START思考题3.若
6、是有符号数,该怎么处理(需要增加比较数字正负的环节)SSTACKSEGMENT STACKDW 64 DUP(?)SSTACKENDSCODESEGMENTASSUME CS:CODESTART:MOV CX, 000AHMOV SI, 300AHMOV BL, 0FFHA1:CMP BL, 0FFHJNZ A7MOV BL, 00HDEC CXJZ A7PUSH SIPUSH CXA2:DEC SIMOV AL, SIDEC SIMOV AH, 80HCMP AL, AHJB A3CMP SI , AHJB A5CMP AL, SIJB A6JMP A5A3: CMP SI , AH JB
7、A4 JMP A6A4: CMP AL,SI JB A5 JMP A6A5: XCHG AL,SI MOV SI+01H,AL MOV BL,0FFHA6: INC SI LOOP A2POP CXPOP SIJMP A1A7: MOV AX,4C00HINT 21H;程序终止CODEENDSEND STARTEND START硬件一 静态存储器扩展实验(接线只有一种)5. 改变实验程序,按非规则字写存储器,观察实验结果。规则字是低位地址为奇数,否者是非规则字,非规则字读取需要两个周期,而规则字只需要一个周期在计算机中,一个字占两个字节。一个字在存储器中按字节存储,若高地址为偶数,低地址为奇数
8、,则为规则字。相反,若高地址为奇数,低地址为偶数,则为非规则字。6. 改变实验程序,按字节方式写存储器,观察实验现象。字节(Byte)是计算机信息技术用于计量存储容量和传输容量的一种计量单位,一个字节等于8位二进制数,在UTF-8编码中,一个英文字符等于一个字节7. 将实验程序改为死循环程序,分别按规则字与非规则字的方式写存储器。5. 改变实验程序,按非规则字写存储器,观察实验结果。SSTACKSEGMENT STACKDW 32 DUP(?)SSTACKENDSCODESEGMENTSTARTPROC FAR ;远过程名ASSUME CS:CODE;分配代码段csMOV AX, 8000H;
9、 存储器扩展空间MOV DS, AX ;数据段ds地址AA0:MOV SI, 0001H; 首地址 8000:0001si是偏移地址,01非规则字MOV CX, 0010H ;cx计数寄存器10h十六进制=16十进制MOV AX, 0000H ;ax是累加器从0开始AA1:MOV SI, AXINC AX ;+1INC SI ;+1INC SI ;+1 一个字si要+2LOOP AA1 ;cx不等于0则循环MOV AX,4C00HINT 21H;程序终止STARTENDPCODEENDSEND START6. 改变实验程序,按字节方式写存储器,观察实验现象。SSTACKSEGMENT STAC
10、KDW 32 DUP(?)SSTACKENDSCODESEGMENTSTARTPROC FARASSUME CS:CODE MOV AX, 8000H; 存储器扩展空间段地址MOV DS, AXAA0:MOV SI, 0000H; 数据首地址cx计数16MOV CX, 0010HMOV AX, 0000HAA1:MOV SI, AXINC AXINC SI ;SI只加1一个字节LOOP AA1MOV AX,4C00HINT 21H;程序终止STARTENDPCODEENDSEND START7. 将实验程序改为死循环程序,分别按规则字与非规则字的方式写存储器。(1)规则字方式SSTACKSEG
11、MENT STACKDW 32 DUP(?)SSTACKENDSCODESEGMENTSTARTPROC FARASSUME CS:CODE MOV AX, 8000H; 存储器扩展空间段地址MOV DS, AXAA0:MOV SI, 0000H; 数据首地址(偶地址开始)MOV CX, 0010HMOV AX, 0000HAA1:MOV SI, AXINC AXINC SIINC SI LOOP AA1MOV AX,4C00H JMPAA0;跳转到AA0开始执行INT 21H;程序终止STARTENDPCODEENDSEND START(2)非规则字方式SSTACKSEGMENT STACK
12、DW 32 DUP(?)SSTACKENDSCODESEGMENTSTARTPROC FARASSUME CS:CODE MOV AX, 8000H; 存储器扩展空间段地址MOV DS, AXAA0:MOV SI, 0001H; 数据首地址(奇地址开始)MOV CX, 0010HMOV AX, 0000HAA1:MOV SI, AXINC AXINC SIINC SI LOOP AA1MOV AX,4C00H JMPAA0;跳转到AA0开始执行INT 21H;程序终止STARTENDPCODEENDSEND START硬件二 8259中断控制实验1.在中断中完成BCD码转换为二进制数。 将四个
13、二位十进制数的BCD码存放于3500H起始的内存单元中,将转换的二进制数存入3510H起始的内存单元中,每次中断完成一个二位十进制数的BCD码转换。 实验步骤:将四个二位十进制数的BCD码存入3500H3507H中,即:先键入E3500,然后输入01 02 03 04 05 06 07 08.运行程序,按一次单次脉冲开关KK1,查看3510内容,应为0ch。再按一次单次脉冲开关KK1,查看3511内容,应为22。继续发中断,依次查看3512,3513内容。在中断中完成BCD码转换为二进制数。.MODELTINYIO8259_0EQU0260H ;EUQ等值赋值语句0260H?端口地址 ?IO8
14、259_1EQU0261H.DATABUFFERDB8 DUP(?)ReDisplayFlagDB0.STACK100.CODESTART:MOVAX,DATAMOVDS,AX ;ds整数段寄存器es附加段寄存器MOVES,AXPUSH DSCALLWriIntverCLI ;中断标志置0 cpu禁止响应可屏蔽中断INTRPOP DS ;ds出栈 后面为初始化8259;icw1初始化主片8259 ;icw指初始化命令字 iow指方式设置命令字MOV DX,IO8259_0 ;0260H送入dxMOV AL, 13H ;13=00010011送入alOUT DX, AL;ICW1执行000100
15、11即;写入偶地址标志位为1边沿触发单级使用需设置icw4MOV DX,IO8259_1 ;0261送入dxMOV AL, 08H ;08=00001000 icw2写入奇地址尾三位指000即ir0;引入的中断引脚信号,终端类型码00001 000查表8.1中断类信号为08H,中断源系统时钟OUT DX, AL;ICW2执行设置MOV AL, 09H ;09=00001001;写入1奇地址,000标志位1全嵌套方式00非缓冲方式18086配置OUT DX, AL;ICW4执行设置MOV AL, 0;OCW1 IMR各位置清0?OUT DX, AL ;执行操作(p270页)?MOV SI, 35
16、00H ;si源変址寄存器MOV DI, 3510H ;目的変址寄存器STI ;中断标志置1允许cpu响应可屏蔽中断AA1:NOP ;无操作JMP AA1WriIntverPROCNEAR ;近过程名PUSHES ;es入栈MOVAX,0 ;ax置0MOVES,AX ;es置0MOVDI,20H ;di目的変址寄存器?20H?LEAAX,MIR7 ;装入mir7的有效/偏移地址STOSW;将累加器al/ax中的一个字(w)送入附加断中以di为目的指针的串中,且;且di+-1或2MOVAX,CS ;cs代码段寄存器?STOSWPOPES ;当前sp栈顶出栈一个字送入目的操作数es,且sp+2RE
17、T ;对于call调用的返回指令WriIntverENDP;本段短程序结束MIR7:STI ;数制变换程序XOR AX,AX ;异或ax=0MOV AL, SI ;偏移地址si送入al即al=siADD AL, AL ;al+al即al*2MOV BL, AL ;al送入bl=2al ADD AL, AL ;al=4alADD AL, AL ;al=8alADD AL, BL ;al=8al+2al=10alINC SI ;si+1 ADD AL, SI ;al=10al+si+1=11si+1(11*1+1/11*3+1/11*5+1/11*7+1)MOV DI, AL ;al送入目的変址寄
18、存器 INC SI ;si再加1(即总共加2)(1/3/5/70INC DI ;di+1=al+1=10al+1MOV AL, 20H ;?8259A的口地址为20H/21HMOV DX,IO8259_0OUT DX, AL;中断结束命令IRETEND START2. 在上述试验基础上,第五次中断结束中断,再按单次脉冲开关KK1将无法进入中断服务程序。.MODELTINYIO8259_0EQU0260HIO8259_1EQU0261H.DATABUFFERDB8 DUP(?)ReDisplayFlagDB0 ;0-不需要显示counter DB 06H ;中断次数,计数conter.STACK
19、100.CODESTART:MOVAX,DATA ;数据引入MOVDS,AXMOVES,AXPUSH DSCALLWriIntverCLI ;中断标志置0 cpu禁止响应可屏蔽中断INTRPOP DS;初始化主片8259MOV DX,IO8259_0MOV AL, 13HOUT DX, AL;ICW1同上MOV DX,IO8259_1MOV AL, 08HOUT DX, AL;ICW2同上MOV AL, 09HOUT DX, AL;ICW4同上MOV AL, 0;OCW1同上OUT DX, ALMOV SI, 3500HMOV DI, 3510HSTIAA1:NOPJMP AA1WriIntv
20、erPROCNEAR ;近过程名 内容同上PUSHESMOVAX,0MOVES,AXMOVDI,20HLEAAX,MIR7STOSWMOVAX,CSSTOSWPOPESRETWriIntverENDPMIR7:STI ;允许响应INTR可屏蔽型中断DEC counter ;计数减1JNA AA3 ;cf V(或计算)zf=1时 低于等于/不高于,转移,;cf进位标志(此处用不到,cf=0,无进位),zf零标志结果为0时zf=1;54321(前5次)时cf.zf均为0不转移程序正常下走,结果为0时zf=1转移aa3空循环终止XOR AX,AX MOV AL, SIADD AL, ALMOV BL
21、, ALADD AL, ALADD AL, ALADD AL, BLINC SIADD AL, SIMOV DI, ALINC SIINC DIMOV AL, 20HMOV DX,IO8259_0OUT DX, AL;中断结束命令IRET ;call调用转换程序结束 AA3: NOP JMP AA3END START3:编写程序利用8254计数器0和计数器1分别作为8259IR6,IR7的中断请求信号;将8255PA0接到发光二极管D0,8255PA7接到发光二极管D1;使DO,D1闪动,D0每闪动10次D1闪动一次。4、 利用中断实现8255实验一(基本输入输出实验)硬件三 8255并行接口
22、实验1:执行程序后,使发光二极管闪动。(接线1)2:执行程序后,使发光二极管高八位和低八位亮灭相反。(X86文档)(接线1)1、例子程序中只展示了8155的输入输出和读写数据RAM的功能,8155还有定时器/计数器的功能,有兴趣读者可以自己编写程序,通过8155来实现定时,当作定时器用时,如何接线?2、若是要对PC口位操作,应该如何编写程序?3、如何使用8155实现键盘扫描和LED显示?(星研文档)1、 如何对8255的PC口进行位操作?方法 1若是要对PC口位操作,应该如何编写程序?.MODELTINY.STACK 32.CODESTART:MOV DX, 0273HMOV AL, 90HO
23、UT DX, ALAA1:;MOV DX, 0270H;IN AL, DX;CALL DELAYMOV AL,00001011B ;PC5=1MOV DX, 0273HOUT DX, ALJMP AA1DELAY:PUSH CXMOV CX, 0F00HAA2:PUSH AXPOP AXLOOP AA2POP CXRETEND START方法2SSTACKSEGMENT STACKDW 32 DUP(?)SSTACKENDSCODESEGMENTASSUME CS:CODESTART:MOV DX, 0273H MOV AL,10000000B ;D3为0 C高口输出 D0为0 C低口输出 O
24、UT DX,ALMOV AL, 00001111B ;D3D2D1均为1 PC7置1 不亮OUT DX, ALMOV AL, 00000001B ;PC0 IS 1OUT DX,ALMOV AL,000000111B ;PC3 IS 1OUT DX,ALJMP $CODE ENDS END START 思考题:1:执行程序后,使发光二极管闪动。2:执行程序后,使发光二极管高八位和低八位亮灭相反。片选区片选地址范围说明mCS080000HBFFFFH存贮器芯片的片选,16位数据总线CS10270H027FHI/O芯片的片选,8位数据总线CS20260H026FHCS30250H025FHCS40
25、240H024FHCS50230H023FHI/O芯片的片选,16位数据总线 思考1(已经确认)SSTACKSEGMENT STACKDW 32 DUP(?)SSTACKENDSCODESEGMENTASSUME CS:CODE ;声明代码段START:MOV DX, 0273H ;控制端口的地址(我们接的是CS1非,其他具体查表) MOV AL, 80H ;A(D6.5wei) 0方式 B(D21wei) 0方式 1000 0000BOUT DX, AL ;输入al,即执行方式选择控制字MOV BX, 0000H ;0000 0000 0000 0000(灯全亮)AA1:MOV DX, 02
26、70H ;端口A地址MOV AL, BH ;高八位OUT DX, ALNOT BH ;NOT是做灭/亮灯信号MOV DX, 0271H ;端口B地址MOV AL, BL ;高八位OUT DX, ALNOT BL CALL DELAYJMP AA1DELAY PROC NEAR ;延时程序MOV CX, 0FFF0HAA2:PUSH AXPOP AXLOOP AA2RETDELAY ENDPCODEENDSEND START思考题:使发光二极管高八位和低八位亮灭相反(已经确认)SSTACKSEGMENT STACKDW 32 DUP(?)SSTACKENDSCODESEGMENTASSUME C
27、S:CODESTART:MOV DX, 0273H ;控制端口的地址(我们接的是CS1非,其他具体查表) MOV AL, 80H ;A0方式 B0方式 1000 0000BOUT DX, ALMOV BX, 00FFH ;0000 0000 1111 1111(灯全闪初始高低相反)AA1:MOV DX, 0270H ;端口A地址MOV AL, BHOUT DX, ALNOT BH ;NOT是做灭/亮灯信号MOV DX, 0271H ;端口B地址MOV AL, BLOUT DX, AL NOT BL ; NOT亮/灭CALL DELAYJMP AA1DELAY PROC NEARMOV CX,
28、0FFF0HAA2:PUSH AXPOP AXLOOP AA2RETDELAY ENDPCODEENDSEND START思考题3:利用中断完成实验一。(已经确认).MODELTINY ;同上IO8259_0EQU0260HIO8259_1EQU0261H.DATABUFFERDB8 DUP(?)CounterDB?ReDisplayFlagDB0.STACK100.CODESTART:MOVAX,DATA ;同上 MOVDS,AX MOVES,AXPUSH DSCALLWriIntver ;同上CLIPOP DS MOV DX, 0273H ;初始化主片8255 MOV AL, 90HOUT
29、 DX, ALMOV DX,IO8259_0 ;初始化主片8259同上MOV AL, 13HOUT DX, AL;ICW1MOV DX,IO8259_1MOV AL, 08HOUT DX, AL;ICW2MOV AL, 09HOUT DX, AL;ICW4MOV AL, 0;OCW1OUT DX, ALSTIAA1:NOP ;死循环,利用脉冲跳出JMP AA1WriIntverPROCNEAR ;近过程名同上PUSHESMOVAX,0MOVES,AXMOVDI,20HLEAAX,MIR7STOSWMOVAX,CSSTOSWPOPESRETWriIntverENDPMIR7:STI ;允许响应I
30、NTR可屏蔽型中断AA2:MOV DX, 0270H ;?IN AL, DXMOV DX, 0271HOUT DX, ALMOV AL, 20HMOV DX,IO8259_0OUT DX, AL;中断结束命令IRETEND START硬件四 8254定时/计数器应用实验1:将CLK0接到时钟源,使程序每隔一秒显示一次M。2: 编写程序使8254计数器0工作于方式0,OUT0接到发光二极管,使其闪动。(x86文档)1、8253还有其它五种工作方式,其它工作模式下,硬件如何设计?程序如何编写?1,8253端口0工作在方式0(程序正确性有疑问)?.MODELTINYCOM_ADDREQU0263HT
31、0_ADDREQU0260HT1_ADDREQU0261H.STACK100.CODESTART:MOVDX,COM_ADDRMOVAL,31HOUTDX,AL ;计数器T0设置在模式0状态,BCD码计数31H 50H 83HMOVDX,T0_ADDRMOVAL,50HOUTDX,ALMOVAL,83HOUTDX,ALJMP$ END START2,8253端口0工作在方式1(1953).MODELTINYCOM_ADDREQU0263HT0_ADDREQU0260HT1_ADDREQU0261H.STACK100.CODESTART:MOVDX,COM_ADDRMOVAL,33HOUTDX,AL ;计数器T0设置在模式1状态,BCD码计数33H 06H 39H MOVDX,T0_ADDRMOVAL,06HOUTDX,ALMOVAL,39HOUTDX,ALJMP$ENDSTART3,8253的T0工作方式2(1953)(输出一个负脉冲).MODELTINYCOM_ADDREQU0263HT0_ADDREQU0260HT1_ADDREQU0261H.STACK100.CODESTART:MOVDX,COM_ADDRMOVAL,35HOUTDX,AL ;计数器T0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025中国电信山东烟台分公司校园招聘高频重点提升(共500题)附带答案详解
- 2025中国安全生产科学研究院第一批公开招聘补充高频重点提升(共500题)附带答案详解
- 2025中国农业科学院蜜蜂研究所资源昆虫保护团队招聘科研助理高频重点提升(共500题)附带答案详解
- 2025东方航空公司江西分公司招聘地面服务部特种车辆司机1名高频重点提升(共500题)附带答案详解
- 2025下半年福建南平浦城县事业单位招聘56人历年高频重点提升(共500题)附带答案详解
- 2025下半年浙江省杭州市部分市属事业单位招聘71人历年高频重点提升(共500题)附带答案详解
- 2025下半年安徽肥西县部分单位招聘人员拟聘人员历年高频重点提升(共500题)附带答案详解
- 2025上半年江苏事业单位判断模块突破历年高频重点提升(共500题)附带答案详解
- 古马隆树脂行业相关投资计划提议
- 音乐节特邀舞蹈演员聘用协议
- 制药企业-质量风险评估表
- 病历书写规范2023年版(2023年3月)
- 《咏鹅》ppt课件(幼儿园PPT课件)
- 《慢性肺源性心脏病》
- GB/T 23050-2022信息化和工业化融合管理体系供应链数字化管理指南
- GB/T 5585.1-2005电工用铜、铝及其合金母线第1部分:铜和铜合金母线
- GB/T 19960.1-2005风力发电机组第1部分:通用技术条件
- 2023译林版新教材高一英语必修二全册单词表(仅英语)
- 2022年伊犁哈萨克自治州林业系统事业单位招聘笔试试题及答案解析
- 让财务助推业务-业财融合课件
- 华为绩效与激励:价值创造、价值评价、价值分配PPT版
评论
0/150
提交评论