RARS,即RISC-V汇编程序、模拟器和运行时,将汇编和模拟RISC-V汇编语言程序的执行。它的主要目标是为开始使用RISC-V的人们提供一个有效的开发环境,创建HelloWorld我们无法访问C标准库,所以让turnputs调用write(fd,buffer,len)直接映射到Linux系统调用,并且让我们将字符串的定义提升到一个全局变量中,因为汇编语言不允许字符串作为参数。

8086/8088指令系统一、数据传送指令1.通用数据传送指令MOV(Move)传送PUSH(Pushontothestack)进栈POP(Popfromthestack)出栈XCHG(Exchange)交换.MOV指令格式为:MOVDST,SRC执行的操作:(DST)<(SRC).PUSH进栈指令格式为:PUSHSRC执行的操作:(SP)<(SP)2((SP)+1,

(SP))(SP)<(SP)+2.XCHG交换指令格式为:XCHGOPR1,OPR2执行的操作:(OPR1)<>(OPR2)2.累加器专用传送指令IN(Input)输入OUT(Output)输出XLAT(Translate)换码这组指令只限于使用累加器AX或AL传送信息..IN输入指令长格式为:INAL,PORT(字节)INAX,

汇编语言里JC是进位则跳转指令;跳转指令分三类:一、无条件跳转:JMP;二、根据CX、ECX寄存器的值跳转:JCXZ(CX为0则跳转)、JECXZ(ECX为0则跳转);三、根据EFLAGS寄存器的标志位跳转。jc就是JumpifCarry如果发生进位则跳转,由标志寄存器CF标志位来判断。jc是一个单测试条件转移指令,转移条件为CF1。
如果cf1跳转到标号处。JCJumpifCarry当运算产生进位标志时,即CF1时,跳转到目标程序处,例如:addal,bljccarrybitincal;如果al+bl产生了进位,这一句就不执行了。carrybit:negal这段程序没有任何意义,仅仅作为示例哈,相同的指令还有:JNC,当CF0时跳转;JZ,当ZF1时跳转,JNZ,当ZF0时跳转;JO,当OF1时跳转,JNO,当OF0时跳转;JP,当PF1时跳转依此类推,标志寄存器的各个位基本上都可以用来做“条件跳转”的条件。