
ORG 1000H
MOV A,30H ;取数到累加器A
MOV DPTR,#SQTAB ;DPTR取得数据表的没吵首地址
MOVC A,@A+DPTR;查表,取平方值送累加器A
MOV 31H,A ;存键察锋结果
SJMP $
SQTAB: DB 0,1,4,9,16,25,36,49,64,81
;定义平方表
END
查表程序设计实验一、实验目的
学习查表程序的设计方法
二、实验内容及步骤
所谓查表,就是根据某孙拆个值,在数据表格中寻找与之对应的一一个数据,在很多情况下,通
过查表比通过计算要使程序更简单,更容易编制。
通过查表的方法实现十六进制数转换为ASCII码。根据2.2章节的表2.1可知,0~9的
ASCII码为30H~39H,而A~F的ASCII码为41H~46H,这样就可以将0~9与A~F对
应的ASCII码保存在-一个数据表格中。当给定一个需要转换的十六进制数时,就可以快速的在
表格中找出相应的ASCII码值。
实验步骤:
1.根据设计思想绘制程序流程图,编写实验程序(例程文件名为: A8-1 .ASM)。
2.经编译、链接无误后,则旅枣将目标代码装入系统。
3.将变量HEX, ASCH, ASCL添加到变量监视窗口中,并修改HEX的值,如12。
4.在语句JMP AA1处设置断点,然后运行程序。
5.程序会在断点行停止运行,并更新变量窗镇销口中变量的值,查看变量窗,ASCH应为31,
ASCL应为32。
6.反复修改HEX的值,观察ASCH与ASCL的值,验证程序功能。
程序代码:
ASSUME DS:DATA,CS:CODE
DATA SEGMENT
TABLE DB 30H,31H,32H,33H,34H,35H,36H,37H
DB 38H,39H,40H,41H,42H,43H,44H,45H
HEX DB 08H
ASCLL DB 0
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
LEA SI,TABLE
MOV AL,HEX
MOV BX,SI
XLAT
MOV ASCLL,AL
CODE ENDS
END START
Z8279 EQU212HD8279 EQU210H
LEDMODEQU00左边输入,八位显示外部译码八位显纯碰谈示
LEDFEQEQU38H 扫做碰描频率
CODE SEGMENT
ASSUME CS:CODE,DS:code
START:push cs
popds
calldelay
MOVDX,Z8279
MOVAL,LEDMOD
OUTDX,AL
MOVAL,LEDFEQ
OUTDX,AL
MOVCX,06H
XZ: MOVDX,D8279
MOVAL,00H
OUTDX,AL
LOOP XZ
MOVDX,D8279
MOVAL,5eH
OUTDX,AL
MOVDX,D8279
MOVAL,77H
OUTDX,AL以上为写(AD )
NOP
bg: movdx,208h
moval,0
outdx,al
calldelay
in al,dx
这里用ah保存输入的低4位值
movah,al
andah,0fh
=======================
movcl,04h
roral,cl
andal,0fh
查表,将键码放入AL中
push ax
mov dx,z8279
mov al,83h
out dx,al
pop ax
LEA BX,LED
XLAT
这里已经处理了al中的高4位,还需要处理ah中的低4位
XCHGah,al
XLAT
=======================
MOV DX,D8279 将AL中内容写到数码管上
OUT DX,AL
这里再将高4位显示在led上
OUT DX,AH
=======================
calldelay
jmp bg
LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H
DB 5EH,79H,71H
delay proc near
push cx
mov cx,0f00h
loop $
pop cx
ret
delay endp
CODE ENDS
END START
并不需要修改LED表,由吵历于不是很清楚该LED芯片如何下配置,仅以你提供的代码来改写的话就是在我上面标注的那些地方插入那些代码应该就可以了
但是不排除需要修改控制码值的情况,但是那种情况我就没办法推测如何修改了。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)