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

Peirre3年前我的程序609

今天使用了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


相关文章

发布一个雷达显示程序,仅测试,有问题请交流。

发布一个雷达显示程序,仅测试,有问题请交流。

下载地址:雷达显示程序.rar这个雷达显示程序用来显示雷达数据的。使用易语言编写。数据部分还没完善。欢迎提意见。...

linux 下的 opengl SDK。

linux 下的 opengl SDK。

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

linux 下的《仙剑奇侠传》

linux 下的《仙剑奇侠传》

以前的DOS游戏《仙剑奇侠传》是炙制人口的一个很容易上手的游戏。这个游戏流行了很多年。很多人在玩过多年以后,重温旧梦,回味游戏之中的情感。这个游戏再版了很多次了。现在linux 下也可以直接玩这个游戏...

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

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

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

我谈易语言

我谈易语言

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

nasm 汇编命令2021年2月后增补。

nasm 汇编命令2021年2月后增补。

;=========================================================== ;nasm 增补新汇编命令集 ; ;引用方式  ;把icpup.inc...