; 软件实验三 二进制到ASCII码转换 S3.ASM
; 将 A 拆为二个 ASCII 码, 并存入 Result 开始的二个单元
Result equ 20h
org 0
ljmp Start
ASCIITab:
db '0123456789ABCDEF' ; 定义数字对应的ASCII表
BinToHex:
mov dptr, #ASCIITab
mov b, a ; 暂存 A
swap a
anl a, #0fh ; 取高四位
movc a, @a+dptr ; 查ASCII表
mov Result, a
mov a, b ; 恢复 A
anl a, #0fh ; 取低四位
movc a, @a+dptr ; 查ASCII表
mov Result+1, a
ret
Start:
mov sp, #40h
mov a, #1ah
call BinToHex
ljmp $
end
程序解释:
1,ASCIITab:
db '0123456789ABCDEF' ; 定义数字对应的ASCII表
2,mov dptr,#ASCIITab
把#ASCIITab的地址赋给dptr
3,swap a
SWAP:累加器ACC半字节交换指令
SWAP A ; 11000100(指令编码)
指令功能是将累加器ACC的高半字节(ACC.7~ACC.4)和低半字节(ACC.3~ACC.0)互换。
4,anl a, #0fh ; 取高四位(右高?)
anl按位与
ANL 位与运算
ORL 位或运算
0FH = 0000 1111 h
80H = 0100 0000 h
或后= 0100 1111 h = 8FH
所以A=0FH,执行ORL后是8FH
0FH = 0000 1111 h
88H = 0100 0100 h
与后= 0000 0100 h = 08H
所以A=0FH,执行ANL A,#88H后是08H
口诀:
与 有0则0
或 有1则1
知识点:
1,db(define byte)
DB 指令以表达式的值的字节形式初始化代码空间。
格式: [标号:] DB 表达式表
表达式中可包含符号、字符串、或表达式等项,
各个项之间用逗号隔开,字符串应用引号括起来。
括号内的标号是可选项,如果使用了标号,
则标号的值将是表达式表中第一字节的地址。
DB 指令必须位于 CODE 段之内,否则将会发生错误。
例
TABLE:
DB 0C0H, 0F9H, 0A4H
TABLE1:
DB " WEINA "
还有:
db = define byte(定义一个字节)
dw = define word (定义一个字)
dd = define dword(定义两个字)
2,dptr
通常写作:DPTR(Data Pointer)
数据指针DPTR是80C51中一个功能比较特殊的寄存器。从结构DPTR是一个16位的特殊功能寄存器, 其高位字节寄存器用DPH表示,低位字节寄存器用DPL表示,DPTR既可以作为一个16位的寄存器来处理,也可以作为两个独立的8位寄存器来使用。主要功能是存放16位地址,作为片外RAM寻址用的地址寄存器(间接寻址),故称数据指针。
访问片外数据存储器的指令为:
MOVX A,@DPTR 读
MOVX @DPTR,A 写
DPTR的另一个作用是变址寻址,访问程序存储器,做查表指令:如:
以dptr为基址寄存器,将dptr的内容与累加器a的内容相加得到变址地址
movc a, @a+dptr ; (a)<-----((a)+(dptr))
<!--EndFragment-->
分享到:
相关推荐
LAB_4_KEYPAD.asm
《深入解析Spring ASM库:org.springframework.asm-3.0.5.RELEASE.jar》 Spring框架是Java开发领域中不可或缺的一部分,而org.springframework.asm-3.0.5.RELEASE.jar是Spring框架中的一个关键组件,主要涉及到字节...
asm字节码jar包,仅需要一个就可以。具体使用,可以参考http://blog.csdn.net/gaoshan12345678910/article/details/78131784
org.springframework.asm-sources-3.0.5.release.jar
E158255MatrixKey.asm.asm.asm
程序2.asm
严重: Exception sending context initialized event to listener instance ... nested exception is java.lang.NoClassDefFoundError: org/objectweb/asm/Type ssh 框架的java web项目部署到tomcat报上面错误 添加此包
IO.ASM就是用来编写这些低级别I/O操作的程序。 IO.ASM的编写通常包括以下部分: 1. **初始化**:在程序开始时,可能需要设置某些寄存器或者端口,以便后续的I/O操作。例如,设置中断向量或配置设备的工作模式。 2...
rg.springframework.asm-3.0.1.RELEASE-A.jar
jar包,官方版本,自测可用
汇编\示例\Sample.asm汇编\示例\Sample.asm汇编\示例\Sample.asm汇编\示例\Sample.asm
标题中的“lcd.asm.rar_lcd.asm”表明这是一个与液晶显示屏(LCD)编程相关的资源,其中包含一个名为“lcd.asm”的汇编语言源代码文件。汇编语言是计算机编程的基础语言之一,它将机器指令以人类可读的形式表示出来...
5.5.5菜单程序设计.asm
实验七程序讲解.asm
《深入理解DSP源码:以SINX.ASM为例》 在数字信号处理(DSP,Digital Signal Processing)领域,源代码是实现算法的核心。这里提到的"DSP_examples.rar"压缩包,内含"DSP_examples"文件夹,以及一个名为"SINX.ASM...
jar包,官方版本,自测可用
在提供的文件名"Mader.C.ASM"中,我们可以推测这可能是一个使用Mader.C.ASM编码器编写的汇编程序源文件。打开这个文件,我们可以看到一系列的汇编指令,以及可能的宏定义和数据结构,这些都是为了实现特定的功能。...
标题中的"written_mult.asm.rar_Mult.asm_space"表明这是一个关于汇编语言编程的资源,特别是与多重(Mult)操作和空间控制(space control)相关的。这个压缩包可能包含一个名为"Mult.asm"的源代码文件,该文件是用...
lxt.ASM.asm
9.ASM.asm