当前位置:首页 > 我的程序 > 正文内容

刚刚上手的一个汇编程序nasm。

Peirre4年前 (2021-04-28)我的程序662

今天使用了masm32软件,总有使不上劲的感觉。

因为intel 指令集很多都没有,自己想测试一下,一边翻资料,一边使用。

windows 编程好用,但是指令不全,心里总是感觉差一点。又不是编大程序,只是学习用。

http://www.nasm.us/ 这个网站找到了一个汇编语言,还不错。更新了好多次。

nasm改变了很多次,这次我下了个新的。当然也不会忘记golink这个链接器。

无标题.png

我使用的是x64dbg 这个64位调试器,可以调试64位的指令。

asm 文件和x64dbg 的文件对比。看见没有些指令在 x64dbg 上没有显示出来。

证明nasm 这汇编编译程序的指令是全的。快快使用吧。

我的版本是NASM version 2.15rc12 和 GoLink.Exe Version 1.0.3.0

附测试umwait 命令是否能运行的源码图片

使用nasm 和 golink 编译。

源码资源打包

t1.zip

源码内容

[bits 32]
extern MessageBoxA
extern GetModuleHandleA
extern ExitProcess
;********************************************************************
; win32n.inc include
;********************************************************************

;%include 'windows.inc'

;===================================================================
; CPU识别UMWAIT指令和MWAIT指令的例子
;
;编译方法:
;NASM -fwin32 t1.asm
;GoLINK /entry start t1.obj kernel32.dll user32.dll msvfw32.dll
;
;           							by Y.Pierre   2021/4/29
;===================================================================
[section .data]
text    db  "信息提示",0
text1	db	"不支持umwait指令",0
text2	db  "支持umwait指令",0
text3   db  "支持mwait指令",0
text4   dd  0
[section .text]
start:
	enter 0,0
	push  0
	call	GetModuleHandleA
	push eax
	;cli
	mov eax,07h				;识别umwait 指令 和umwait指令一起的还有umonitor指令
	mov ecx,0
	cpuid
	
	shr ecx,5
	jnc  c1
	mov eax,1
	umwait eax
	
	;sti
c1:	leave
	pop eax
	push 0
	push text
	jnc c2
	push text2
	jmp c3
c2:	push text1
c3:	push 0
	call	MessageBoxA
	
	clc							;识别nwait 指令,两种方法
	mov eax,01h
	mov ecx,0
	cpuid
	
;	push 0
;	push text
;	mov  [text4],ecx
;	push text4
;	push 0
;	call MessageBoxA

	shr ecx,3	
	jc  c4
	clc							;识别mwait指令
	mov eax,05h
	mov ebx,0
	mov ecx,0
	cpuid
	shr ecx,2
	jnc e1
	mwait
	jmp c4
	
c4:	push 0
	push text
	push text3
	push 0
	call MessageBoxA
	
e1:	push    0
	call	ExitProcess            
	ret     16


分享给朋友:

相关文章

关于 Cannot enable. Maybe the USB cable is bad? 这个问题。

关于 Cannot enable. Maybe the USB cable is bad? 这个问题。

经常摆弄电脑,那USB接口也是插进,拔出多少次。有一天发生了这个问题,什么问题呢?见图:只要是linux 新内核,都会出现这个问题,虚拟机USB功能,DOSBOX等USB功能不可识别。在网上查看了一些...

linux 下的汉字输入法.

linux 下的汉字输入法.

各位老师,才子,同事们好!有很多初级玩linux的同学都会碰到一个难题,也就是在linux 下的汉字输入法.这个问题一直困绕了linux 使用者多年.我还好,每次都使用正常.现在说说心得笔记就可以了....

linux 下的 opengl SDK。

linux 下的 opengl SDK。

opengl 图形库是开放式图形库,最近出了一个freeglut3 我们下载它:sudo apt-get install freeglut3sudo apt-get install freeglut3...

关于编译器不愿意说的那些事。

关于编译器不愿意说的那些事。

计算机发展了好多年。当中也不泛有很多对程序的爱好。很多人不是专业水平,也不是在算法类中特别出众,就是喜欢而已。好像认为自己就只那个水平,或者为一些调试不通过发愁。可以说,实际上都不是你的错,是编译器的...

谈谈引导程序的想法。

谈谈引导程序的想法。

当个人电脑一出现就有了磁盘系统,不管是软盘,光盘,硬盘,计算机要应用操作系统就要引导,引导程序一段代码。这引导代码很小,在第一个磁盘的扇区上,平时没什么人注意它。这段代码损坏一个字节,都会造成计算机瘫...

我谈易语言

我谈易语言

易语言是一个集成打包的中文编程的语言。说实话,只要在电脑上的程序,易语言都可以用自己的方式实现。易语言可以开发linux 控制台下的图文程序和工具,十分好用。易语言的源码和例子量很大,精华源码例子已经...