汇编语言编写一简单查表程序
发布网友
发布时间:2022-04-20 09:51
我来回答
共3个回答
热心网友
时间:2023-08-25 13:32
0-9循环显示,经验证完全无误。。谢谢采纳。
ORG 0000H
MOV DPTR,#TAB ;DPTR此时指向0C0H,以后由于A值的不停加1会不停的往后指,在循环
MAIN:MOV R5,#0 ;给初值
MOV A,R5;A=0
LP: MOVC A,@A+DPTR ;查表
MOV P1,A; 显示
MOV A,R5
INC A ;加1
MOV R5,A
LCALL DELAY ;延时
CJNE A,#10,LP ;是否 到9.
SJMP MAIN
DELAY:MOV R3,#255
DEL1: MOV R4,#255
DEL2: NOP
DJNZ R4,DEL2
DJNZ R3,DEL1
RET
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;共阳字符。0-9。
END 如有疑问,可以HI我。。
热心网友
时间:2023-08-25 13:32
;本程序通过编译,运行正确。
datasegment
mes1db'92,85,74,81,70,68,65,78,54,43',0ah,0dh
db'94,100,83,88,79,83,79,69,62,60',0ah,0dh,'$';定义用于显示的字符串
mes2dw92,85,74,81,70,68,65,78,54,43
dw94,100,83,88,79,83,79,69,62,60;存放20个十进制数
elementsequ($-mes2)/typemes2;元素个数
mes3db'averagesore=$'
dataends
codesegment
assumecs:code,ds:data
start:movax,data
movds,ax
leadx,mes1;第一行显示20个同学的成绩
movah,9
int21h
leadx,mes3;第二行显示averagescore=求得的平均分数。
movah,9
int21h
cld
leasi,mes2
movcx,elements
xorax,ax
adding:addax,[si];累加20个同学的分数
incsi
incsi
loopadding
movbl,elements
divbl;计算20个分数的平均值
xorah,ah
movbl,10
divbl
orax,3030h;把商和余数转换成十进制显示的ascii码
movdx,ax
movah,2;以十进制值表示将平均值十位数显示在屏幕上
int21h
movdl,dh
movah,2;以十进制值表示将平均值个位数显示在屏幕上
int21h
movah,4ch;结束程序
int21h
codeends
endstart;编译到此结束
程序运行结果如下:
92,85,74,81,70,68,65,78,54,43
94,100,83,88,79,83,79,69,62,60
averagesore=75
热心网友
时间:2023-08-25 13:33
表格是
TAB:DB 0FFH,0FFH
A是需要查询表格第A个的值
MOV DPTR, #TAB
MOVC A,@A+DPTR
A中的就是查表得的值
汇编语言里面的查表法是什么意思啊。在单片机里面是怎么运行的啊...
51单片机汇编语言有一条查表指令是:MOVC A, @A+DPTR 它不是单独使用的,要和 DB 伪指令配套使用。例如:若累加器A中有一个0~9的数,请用查表法求出该数的平方值,设平方表表头地址为1000H。程序如下:;--- MOV DPTR,#1000H MOVC A,@A+DPTR ……ORG 1000H DB 0, 1, 4, 9, 16...
汇编语言编写一简单查表程序
MOV DPTR,#TAB ;DPTR此时指向0C0H,以后由于A值的不停加1会不停的往后指,在循环 MAIN:MOV R5,#0 ;给初值 MOV A,R5;A=0 LP: MOVC A,@A+DPTR ;查表 MOV P1,A; 显示 MOV A,R5 INC A ;加1 MOV R5,A LCALL DELAY ;延时 CJNE A,#10,LP ;是否 到9.SJMP MAIN DELAY:MOV R3...
查表程序 汇编语言
查表求x的立方值 并把结果存到tab2 要求输入的数及最后结果要显示在屏幕上assume cs:code, ds:datadata segment table dw 0, 1, 8, 27, 64, 125, 216, 343, 512, 729; display db 0AH, 0DH, "Please input a number(0~9): ", '...
汇编语言XLAT指令如何使用
XLAT是查表指令,将BX指向表的首地址,AL中放得是要做相互转换的参数,比如说如下程序段:BUF DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH LEA BX,BUF MOV AL,01H XLAT 再送去数码管显示,就会显示出“1”了,也就是说XLAT可以用于码制转换。
汇编语言程序理解
MOVC A,@A+DPTR是查表指令,执行顺序是:A+DPTR→DPTR (DPTR)→A ANL A,#0FH这里是为了保险将累加器高四位清零,表的长度为16个字节,如果高四位有数,那么就查出表格之外了,会得到无效数据。
汇编语言查表程序求分析!每一行代表什么意思? 程序如下:
MAIN: ; 主程序开始 MOV DPTR,#0030H ;将数字#0030H放到DPTR MOV B,#6 ; 将数字6放倒寄存器B MOV A,B ; 将B放倒A RL A ;将A左移 MOVC A,@A+DPTR ;A加DPTR内容放到A,MOV R5,A ;将A放到R5 MOV A,B ;将B的内容放到A RL A ;将A左移 INC A ...
汇编语言:输入0~9数字,查表求平方值
30H PUSH DX CMP AL,0 JNE @DSPAL1 MOV AH,2 @DISPAL2: POP DX INT 21H LOOP @DISPAL2 MOV DL,32 INT 21H POPF POP
XLAT指令的举例
XLAT X。在执行XLAT之前,先将X的地址送给BX,偏移次数送给AL。XLAT即为查找指令 (一个字节)。 ;xlat指令测试。; 汇编语言查表指令 XLAT。; 查表指令 XLAT。; 即(AL)<--((BX)+(AL)). 执行XLAT将使待查内容送到累加器。 注意:是将bx和al中的值相加再取地址;...
汇编语言, 1 利用查表法求Y=X2值,设X放在数据区XVAL单元,结果存入YVAL...
我先按你的思路给了程序(平方表只有0~9的平方)。。关键在用xlat查表。。。data segment ms1 db "the value x is:$"ms2 db 10,13,"the value Y is:$"tab db 0,1,4,9,16,25,39,49,56,81;0~9的平方 xval db 3 yval db ?data ends code segment assume ds:data,cs:code sta...
单片机查表指令movc什么意思
MOVC指令用于在单片机中实现程序存储器与累加器A之间的数据传送。这一指令是单片机汇编语言的一部分,汇编语言是一种用于编程微处理器和微控制器的低级语言。它包含了多种数据传输指令,例如MOV用于通用数据传输,CMOVcc用于条件传输,以及堆栈操作指令如PUSH和POP,还有交换指令XCHG等。此外,还有LEA等用于...