cld指令功能:
将标志寄存器flag的方向标志位df清零。
在字串 *** 作中使变址寄存器si或di的地址指针自动增加,字串处理由前往后。
例如,以下三条指令执行后,si自动加1,更新为0001h:
cld,mov si,0000h
lodsb 将字串中的si指针所指的一个字节装入al;
扩展资料:
汇编语言作为第二代计算机语言,用一些容易理解和记忆的字母,单词来代替一个特定的指令,比如:用“ADD”代表数字逻辑上的加减,“ MOV”代表数据传递等等,通过这种方法,人们很容易去阅读已经完成的程序或者理解程序正在执行的功能,对现有程序的bug修复以及运营维护都变得更加简单方便。
但计算机的硬件不认识字母符号,这时候就需要一个专门的程序把这些字符变成计算机能够识别的二进制数。因为汇编语言只是将机器语言做了简单编译,所以并没有根本上解决机器语言的特定性,所以汇编语言和机器自身的编程环境息息相关,推广和移植很难,但是还是保持了机器语言优秀的执行效率,因为他的可阅读性和简便性,汇编语言到现在依然是常用的编程语言之一。
汇编语言不像其他大多数的程序设计语言一样被广泛用于程序设计。在今天的实际应用中,它通常被应用在底层,硬件 *** 作和高要求的程序优化的场合。驱动程序、嵌入式 *** 作系统和实时运行程序都需要汇编语言。
汇编语言源文件是保存为扩展名为.asm的文件,需要经过编译器编译成.exe 或者.com文件,才能在命令行中运行。.ASM扩展名:汇编语言源文件,Pro/E装配文件。
汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的 *** 作码,用地址符号(Symbol)或标号(Label)代替指令或 *** 作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。
许多汇编程序为程序开发、汇编控制、辅助调试提供了额外的支持机制。有的汇编语言编程工具经常会提供宏,它们也被称为宏汇编器。
汇编语言不像其他大多数的程序设计语言一样被广泛用于程序设计。在今天的实际应用中,它通常被应用在底层,硬件 *** 作和高要求的程序优化的场合。驱动程序、嵌入式 *** 作系统和实时运行程序都需要汇编语言。
对于广泛使用的个人计算机来说,可以自由选择的汇编语言编译器有MASM、NASM、TASM、GAS、FASM、RADASM等。
会汇编当然最好硬件控制可以直接用C语言
#include <stdio.h>
extern void swi_handler(void)
/*中断处理子程序*/
void do_swi(int num)
{
/*
switch (num)
{
case 0x1: ...
case 0x2: ...
}
*/
printf("%d helloworld\n", num)
}
//swi_handler
void install_swi_handler(void (*fun)(void))
{
unsigned int cmd
//1.构造一条跳转指令
*((unsigned int *)0x38) = (unsigned int)fun
cmd = 0xe59ff028
//2.把此指令机器码放到0x8地址
*((unsigned int *)0x8) = cmd
}
int main(void)
{
int i = 0
install_swi_handler(swi_handler)
for (i = 0i <10i++) {
if (i == 3) {
__asm
{
swi 0x123
}
}
else
printf("aa\n")
}
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)