汇编教程:毕业设计想用用汇编做,汇编适合做什

 2021-07-01 8:17    77  

用汇编语言编写程序汇编教程,关键不在语言本身,而在于选择和汇编语言集成的IT环境。如果用汇编语言只是编写一个完全独立的系统,这样的开发用汇编肯定是低效的,使用汇编语言在于突破正常情况下的IT环境集成中标准的或公开的接口限制,而直接进入底层进行集成。这样来看,做的题目基本是选择那些在系统的后门或底层进行集成才能完成的工作,比如:系统监控或日志管理,底层重载或嵌入争强系统功能,设备驱动程序,反病毒,后台运行和事件截取,实时控制等。

用汇编写一个操作系统的微内核吧汇编教程,从bootloader做起,一直到进入保护模式并加载runtime为止,这一路可以学习很多东西,基本上整个系统的底层都照顾到了

设备(硬件)固化驱动程序 实时控制程序 呵呵 ?

十六进制转换成二进制(汇编)

  这是我曾经写的一个程序,这段代码的作用是循环4次输入4位16进制数,我把它转换位2进制数,方法就是对于每一位数(现在是ASCII码)转化为0——9或a——f的数,然后左移4位,放到一个变量里面,循环就行了,也就是16进制转换为2进制的基本算法,左移4位,不断的进行汇编教程。
  。

XOR BX,BX ;BX里面放输入后经转换的2进制数

MOV CL,04 ;转换的时候移位次数

MOV AH,01

MOV DI,4 ;循环4次输入

LP1: SHL BX,CL ;由于最高位也只移3个4位,所以就放在前面。
  

INT 21H

SUB AL,30H ;输入的1位数与0的ascii比较

CMP AL,9

JBE DEAL1 ;不小于9的为A,B,C等值

SUB AL,7 ;根据位置关系再减7

DEAL1: ADD BL,AL ;转换后的数存入BL

DEC DI

CMP DI,0

JNZ LP1


  

目前最好的高中数学,物理,化学竞赛教程是什么?

《高中数学竞赛教程》,作者:熊斌,刘诗雄。 武汉大学出版社。

《高中物理竞赛培优教程》,作者:舒幼生。 浙江大学出版社。

《高中化学奥林匹克竞赛教程》,作者:任学宝。出版社不祥。

只是我的一点意见,敬请参考!

高中数学竞赛教程》,作者:熊斌,刘诗雄。 武汉大学出版社。

《高中物理竞赛培优教程》,作者:舒幼生。 浙江大学出版社。

《高中化学奥林匹克竞赛教程》,作者:任学宝

《理科王》

浙江教育出版社的竞赛教程

汇编和c语言如何结合的?

  汇编语言没有高级语言要占用较大的存储空间和较长的运行时间等缺点,它的运行速度快是高级语言所不能比拟的。可以说高级语言与汇编语言各有千秋。有时我们采用高级语言编程速度达不到要求,全部采用汇编语言编程工作量又大,此时可以采用"混合"编程,彼此相互调用,进行参数传递,共享数据结构及数据信息,是一种有效的编程方法。
  这种方法可以发挥各种语言的优势和特点,充分利用现有的多种实用程序、库程序等使软件的开发周期大大缩短。
1 高级语言与汇编语言的接口需要解决的问题
1、需要说明和建立调用者与被调用者间的关系被调用的过程或函数应预先说明为外部类型,如汇编子程序,应用PUBLIC说明其可被外部模块引用;调用程序则应预先说明要引用的外部模块名。
  
2、参数传递问题在汇编子程序之间通常采用寄存器作为参数传递的工具,汇编语言与高级语言程序间的参数传递,一般采用堆栈来传递,即调用程序将参数依次压入堆栈中,当被转调用程序后,再从堆栈中依次弹出参数作为操作数使用。为此,必须了解各种语言的堆栈结构、生成方式和入栈方式等。
  BASIC、FORTRAN、PASCAL等语言其参数进栈顺序是与参数在参数表中出现的顺序相同,即从右到左;而C语言则相反。
2 C语言与汇编语言的接口
2。1 C语言调用汇编子程序
●在C程序中使用关键字"ExTERn"对函数作显式说明。
  
●参数传递顺序是按其在参数表中出现的顺序的反序被压入堆栈中,即第一个参数最后进入堆栈,它在栈中的地址最低。
●对不同的存储模式(极小、小、紧凑、中、大和巨)要选用不同的汇编语言格式,如C程序为小模式,汇编用近过程,C程序为大模式,汇编用远过程。
  
●汇编程序取C的参数。远过程返回地址占四个字节,BP压入占二字节,所以第一个参数在BP 6所指向的单元。对于近过程第一个参数在BP 4所指向的单元。
●汇编程序中寄存器的保护。TuRboC允许子过程使用SI和DI存放局部变量,当寄存器变量多于二个时,多余部分会自动转到堆栈中存储。
  因此,汇编过程的格式为:
PUSH BP
MOV BP,SP
PUSH DI
PUSH SI?
………。
语 句?
…………。
  
POP SI
POP DI
POP BP
RET
●返回值。每种C数据类型都有一个标准的返回位置,一般在AX中(极小、小、中模式),DX:AX(紧凑、大、巨模式),如:chaR,unSignEdchaR,Enum,ShoRTinT等,返回值位置为AX,且返回数据必须放置在RET指令之前。
  汇编子程序要定义为远过程,并用PUBLIC伪指令把过程名定义为公共。例
:#includE〃STdio。h〃
#includE〃STdlib。h〃
chaRMESSagE[]=〃MESSagE〃;
inTfaRREVSTR(chaRfaR STR);
Voidmain(Void)
{ REVSTR((chaRfaR )MESSagE);
printf(〃%S〃,MESSagE);
}
REVSTR。
  asm

PUBLIC-REVSTR-
REVSTR PROC
PUSH BP
MOVBP,SP
PUSH DS
PUSH SI
PUSH DI

POP SI
POP AX
MOV DS,AX
POP BP
MOV AX,CX
RET
REVSTR ENDP
END
2。
  2 C语言嵌入汇编
在C程序中允许直接编写汇编语言代码,这称作嵌入汇编。C程序中嵌入汇编后可以无分号(C语言的语句以分号结束,汇编语句是C语言中唯一以换行结束的语句),以关键词ASM张一个嵌入汇编指令,如需多个ASM语句,可以将它们放在花括号内。
  如,
ASMMOVAX,DX/ 注释 /
ASM
PUSHAX}/ 注释 /
C语言允许嵌入四类汇编命令:一般指令、串指令、跳转指令、数据分配和定义指令,嵌入汇编比调用汇编子程序更方便、灵活、功能也更强。
  但嵌入汇编不是一个完整的汇编程序,所以许多错误不能马上检查出来。
3 结 束 语
采用两种或两种以上的编程语言组合编程,彼此相互调用,进行参数传递,是一种有效的程序设计方法。这种方法可以充分发挥各种语言的优势,充分利用现有的实用程序,是当前程序接口技术的一个重要研究和应用领域。
  

本文标签:语言结合汇编

原文链接:https://www.xgfox.com/jsyd/221.html

本文版权:如无特别标注,本站文章均为原创。