zhong 程序设计练习.ppt_第1页
zhong 程序设计练习.ppt_第2页
zhong 程序设计练习.ppt_第3页
zhong 程序设计练习.ppt_第4页
zhong 程序设计练习.ppt_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1、试编程序将BUFFER 中的一个8位二进制数,转换为ASCII 码,并按位数高低顺序存放在ANSWER 之下.,DATA SEGMENT BUFFER DB FFH ANSWER DB 5 DUP(0) DATA ENDS STACK SEGMENT DB 100DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS: DATA,SS:STACK BINA : MOV AX, DATA MOV DS,AX,MOV CX,2 XOR DX,DX MOV AL,BUFFER MOV BL,10 MOV DI,OFFSET ANSWER BINB: DI

2、V BL ADD DL,30 MOV DI ,DL INC DI AND AL,AL JZ STOP MOV DL,0 LOOP BINB STOP: HLT CODE ENDS END BINA,2、试编程序将 MOLT 中的一个8位二进制数乘以20 ,乘积放在ANS单元及其下一单元中,DATA SEGMENT MOLT DB XXH ANS DB 2 DUP(0) DATA ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE BIN: MOV AX,DATA MOV DS,AX MOV AX, MOLT SHL AX, 1 MOV BX,AX,SHL AX,1

3、 SHL, AX,1 SHL, AX,1 ADD AX,BX MOV BX,AX ADD AX,BX MOV DI OFFSET ANS MOV DI,AL INC DI MOV DI,AH HLT CODE ENDS END BIN,3、在DATA1之下存放100个8位无符号数,找出最大的放在KVFF中。,DATA SEGMENT DATA1 DB 10H. KVFF DB DUP(0) DATA ENDS STACK SEGMENT PARA STACK STACK DB 50 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE ,DS:DADA,

4、SS:STACK,MAX : MOV AX, DATA MOV DS,AX LEA SI ,DATA1 MOV CX ,100 CLD ; DF=0 LODSB ;(AL)(SI) MOV KVFF,AL DEC CX NEXT : LODSB CMP AL,KVFF JG MAX1 JMP MIN MAX1: MOV KVFF,AL MIN : LOOP NEXT HLT CODE ENDS END MAX,4、在BVFF单元中有一个BCD数A, 试写程序,计算Y,结果送DES中单元 A20 3A 20A60 A-20 A60 80 DATA SEGMENT BVFF DB A DES DB

5、 4 DUP(0) DATA ENDS STACK SEGMENT DB 200 DUP(?) STACK ENDS,CODE SEGMENT ASSUM CS:CODE,DS: DATA, SS:TSACK BIN MOV AX,DATA MOV DS, AX MOV AL, KVFF MOV AH, AL ; BCD AH AND AH, 0FH MOV BL , AH ;保存BCD低位 AND AL,0F0H MOV CX,4 ROR AL,CL; 把BCD数高位移到低位 MOV BH,0AH MUL BH ;AL*0AH 结果在AX 中 ADD AL,BL,CMP AL,60 JGE

6、LOOP1 CMP AL,14H;20 JGE LOOP2 MOV BL,3 MUL BL MOV DES AX JMP JSHU LOOP1 :MOV DES,50H;80 JMP JSHU,LOOP2 : SUB AL,20 MOV DES,AL JSHU: HLT CODE ENDS END BIN,5、在当前数据段(DS决定的)的 DAT1和DAT2 分别存放两个有符号的 8位数,现求两数差的绝对值,放在 DAT3中 DATA SEGMENT DAT1 DB FFH DAT2 DB EEH DAT3 DUP(0) DATA ENDS STACK SEGMENT DB 50 DUP(?)

7、 STACK ENDS CODE:ASSUME CS:CODE,DS:DADA START: MOV AX,DATA MOV DS,AX,mov si offset DAT1 MOV AX, SI mov si offset DAT2 MOV BX, SI CMP AX,BX JGE LOOP ; AXBX SUB BX, AX MOV DAT3,BX JMP DD LOOP: SUB AX,BX MOV DAT3,AX DD: HLT CODE ENDS END START,5、将内存从40000H 到4BFFFH 的 每个单元中均写入55H ,并读出比 较,全对,AL置7EH,只要有错,A

8、L置81H。 MOV AX,4000H MOV DS, AX MOV SI, 0000H MOV CX 0BFFFH XOR AX,AX MOV AL,55H LOOP1 MOV SI,AL INC SI DEC CX JZN LOOP1,MOV CX,0BFFFH XOR AX,AX MOV AL,55H LOOP2: CMP AL,SI JNZ LOOP3 DEC SI DEC CX JNZ LOOP2 MOV AL, 7EH JMP DD LOOP3 :MOV AL, 81H DD: HLT CODE ENDS END,7 在内存的40000H开始16k个单元,中存放一组数顺序移到A00

9、00H开始的顺序16K单元中 MOV AX, 4000H MOV DS,AX MOV SI,0000H MOV AX, AOOOH MOV ES, AX MOV DI, 0000H MOV CX, 4000H; 16K CLD REPS MOVSB ; CX=0 止,8、比较,错误 BL= 00H 全对 BL= FFH MOV AX, 4000H MOV DS,AX MOV SI,0000H MOV AX, AOOOH MOV ES, AX MOV DI, 0000H MOV CX, 4000H; 16K CLD REPS CMPSB ; CX=0 止 JCXZ LOOP1 MOV BL,00

10、H JMP DD LOOP1:MOV BL,FFH DD: HLT CODE ENDS END,9 、对AL 中的数据进行偶校 验,并将经过校验的结果放回 AL中(子程序),SSY PROC FAR PUSH AX PUSH DX PUSH SI MOV AL, FFH;数 AND AL,AL JP SSY1;奇偶为1转移 ADD AL,80H SSY1: POP SI POP DX POP AX RET SYY ENDP,10、DAC0832数模转换芯片通过8255A与8086CPU接口电路如下图所示,设8255端口地址分别为0E000H0E003H 。 1写出8255A的方式控制字, 2设

11、计应用程序,在输出端产生锯齿波(包括8255初始化程序和应用程序),;8255A初始化 MOVDX,0E003H;8255A的控制端口地址 MOVAL,80H;设置8255A的方式字 OUTDX,AL ;B口控制DAC的转换 MOVDX,0E001H;8255A的B口地址 MOVAL,10H;置0830为直通工作方式 OUTDX,AL,控制程序清单如下:,生成锯齿波 MOVDX,0E000H;设置DAC端口号 MOVAL,00H;设置初值 L1:OUTDX,AL;向DAC送数据 INCAL;输出数据加1 NOP;延时 JMP L1 说明: 通过AL加1,可得到正向的锯齿波。如要得到负向的锯齿波

12、,则只要将程序中的INC AL改为DEC AL即可。可以通过延时的办法改变锯齿波的周期,若延迟时间较短,则可用NOP指令来实现;若延迟时间较长,则可用一个延时子程序。延迟时间不同,波形周期不同,锯齿波的斜率就不同。,11 设计一个打印机通过8255与CPU的接口电路,其中A口作为输出口向打印机输出数据打印机,C口作为控制,PC6作为选通信号与打印机的STB连接,PC1与打印机的忙信(BUSY)连接。 1、画出接口电路图 2、确定8255的编程接口地址范围,根据功能写出编程所需控制字, 3 、编写程序段,通过接口CPU采用查询方式将存放BUF 缓冲区的256个字符送去打印。,8255的编程地址:

13、A口地址:0000H , B 口地址:0001H , C 口地址:0002H,控制口地址:0003H四个端口地址。 控制字 1000001B,START: MOV DX,03H ; 8255 命令口 MOV AL,1000001B ;工作方式字 OUT DX,AL MOV AL,00001101B ;使STB=1 OUT DX,A MOV SI,OFFSET BUF ;打印字符的内存首址 MOV CX,OFFH ;打印字符个数 L: MOV DX,02H ; PC 口地址 IN AL,DX ;检查是BUSY=0 AND AL,01H,JNZ L ; 忙,等待,不忙 转向B 口送数 MOV DX

14、,00H ;A 口地址 MOV AL,SI ;从内存取数 OUT DX,AL ;送数到A 口 MOV DX,03H ;8255 命令口 MOV AL,00001100B ;使STB=0 OUT DX,AL NOP MOV AL,00001101B ;使STB=1 OUT DX,AL INC SI ;内存地址加1 DEC CX ;字符数减1 JNZ L ;未完,继续 MOV AX,4COOH ;已完,退出 INT 21H END START,12 采用全地址译码,将6264芯片与8088CPU的系统总线连接,其所占地址范围为00000H-01FFFH(BE000HBFFFFH),画出连接线路图,

15、13 线性键盘识别程序设计 (设地址为0020H ),INAL,20H,SHRAL,1,JNCK0;转键K0的处理程序,SHRAL,1,JNCK1;转键K1的处理程序,SHRAL,1,JNCK2,;转键K2的处理程序,SHRAL,1,JNCK3;转键K3的处理程序,设8255A的端口地址为00H(A口)、02H(B口)、04H(C口)和06H(控制口),,14 矩阵键盘识别程序设计,;确定按键闭合,等待键按下,MOVAL,82H,OUT 06H,AL ;8255A初始化方式0,A口为输出,B口为输入,MOVAL,0,OUT00H,AL ;使各行线接地(为0电平),LOP1: INAL,02H;

16、读列线状态,ANDAL,0FH;屏蔽无用位,保留列线位,CMP AL,0FH;有列线为0电平吗?,JZLOP1;无,则继续查列线状态,等待键按下,键处理的程序如下:,;识别按下的键,MOVBL,3;行数送BL,MOVBH,4;列数送BH,LOP2: OUT00H,AL;逐行扫描,MOV AL,11111110B ;起始扫描码,第一次使行线0接地,MOVCH,0FH;设置屏蔽码,MOVCL,0FFH;取键号初值为FFH,ROLAL;修改扫描码,准备扫描下一行,MOVAH,AL;扫描码送AH保存,INAL,02H;读列线数据,ANDAL,CL;屏蔽无用位,保留列线位,CMPAL,CL;有列线接地吗

17、?,JNZLOP3;有,转去找该列线,ADDCH,BH;否,修改键号,使适合下一行,MOVAL,AH;扫描码送AL,DECBL;行数减1,JNZLOP2;未扫描完,转下一行,JMPBEGIN,LOP3: INCCH;键号加1,RCRAL;带进位循环右移一位,JC LOP3 ;C=1,说明该列未接地,转去检查下一列线,MOVAL,CH;是,键号送AL,CMPAL,0;是0号键吗?,JZKEY0;转0号键处理程序,CMPAL,1;是1号键吗?,JZKEY1;转1号键处理,CMPAL,0BH;是B号键吗?,JZKEY口;转B号键处理,15 LED 显示系统设计,利用8086的换码指令XLAT,便可方

18、便地实现数字到显示代码的译码。,假设要显示的数据存放的BL的低四位中,利用下面几条指令就可实现软件译码。,MOVAL,BL;把要显示的数据送入AL,ANDAL,0FH;屏蔽无用位,LEABX,DISPCODE;显示代码表的首地址送BX,XLAT ;换码,相应的显示代码即被存入AL,16 多位LED 设计,上面是一段实现8位数码管依次显示一遍的子程序。实际应用中,只要按一定频率重复调用它,就可以获得稳定的显示效果。,MOVDI,OFFSET BUFDATA;指向数字缓冲区,MOVCL,0FEH;指向最左边数码管,ROLCL,1;指向下一个数码管,DISP: MOVAL,DI;取出数字,MOVBX,OFFSET TABLE;指向显示代码表,XLAT;得到显示代码,MOVDX,SEGPORT;segport为段控制端口,OUTDX,AL;送出段码,MOVAL,CL;取出位

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论