运行后若输入:       运行后若输入:
1                   3
则结果输出:           则结果输出:
A移1个盘到C         A移1个盘到CA移1个盘到B
运行后若输入:      C移1个盘到B
2                   A移1个盘到C
则结果输出:           B移1个盘到A
A移1个盘到B         B移1个盘到C
A移1个盘到C         A移1个盘到C
B移1个盘到C.386
.model flat, stdcall
include kernel32.inc
includelib kernel32.lib
includelib  msvcrt.lib              ;引用C库文件
printf PROTO C:ptr sbyte,:vararg    ;C语言printf函数原型声明
scanf PROTO C:ptr sbyte,:vararg ;C语言scanf函数原型声明
option casemap :none ;*【*/
.data
a dword 'A'
b dword 'B'
d dword 'C'
N dword ?
infmt byte '%d',0
outfmt byte '%c移1个盘到%c',13,0
.code
F proc n:dword,x:dword,y:dword,z:dword
.if n<=1
invoke printf,addr outfmt,x,z
.else
mov ecx,n
dec ecx
invoke F,ecx,x,z,y
invoke printf,addr outfmt,x,zmov ecx,n
dec ecx
invoke F,ecx,y,x,z
.endifret
F endp
start:
invoke scanf ,addr infmt ,addr N
invoke F,N,a,b,d
invoke ExitProcess,0
end start;*】*/

先序遍历二叉树(树根先输出->左节点->右节点)
若运行后若输入:
ABCDEFG
则运行结果输出:
ABDECFG.386
.model flat, stdcall
include kernel32.inc
includelib kernel32.lib
includelib  msvcrt.lib      ;引用C库文件
printf PROTO C:ptr sbyte,:vararg    ;C语言printf函数原型声明
scanf PROTO C:ptr sbyte,:vararg ;C语言scanf函数原型声明
option casemap :none;*【*/
.data
B byte 80 dup(0)
infmt byte '%s',0
outfmt byte '%c',0
.code
Pre proc i:dword,n:dword
mov eax,i
.if eax<n
mov ebx,i
invoke printf,addr outfmt,dword ptr B[ebx]
mov ebx,i
imul ebx,2
add ebx,1
invoke Pre,ebx,n
mov ebx,i
imul ebx,2
add ebx,2
invoke Pre,ebx,n
.endif
ret
Pre endp
start:
invoke scanf,addr infmt,addr B
mov al,0
lea edi,B
mov ecx,80
repne scasb
lea eax,B+1
sub edi,eax
invoke Pre,0,edi
invoke ExitProcess,0
end start;*】*/

中序遍历二叉树
(LDR 如图字符数组B的值为“ABCDEFGH^JK^MNOP^^^T”,其中“^”表示不存在的结点)
若运行后若输入:
ABCD^^G
则运行结果输出:
DBACG.386
.model flat, stdcall
option casemap :none
include kernel32.inc
includelib kernel32.lib
includelib  msvcrt.lib      ;引用C库文件
printf PROTO C:ptr sbyte,:vararg    ;C语言printf函数原型声明
scanf PROTO C:ptr sbyte,:vararg ;C语言scanf函数原型声明;*【*/
.data
B byte 80 dup(0)
infmt byte '%s',0
outfmt byte '%c',0
.code
LDR proc i:dword,n:dword
mov eax,i
.if eax<n
mov ebx,i
imul ebx,2
add ebx,1
invoke LDR,ebx,nmov ebx,i       ;eax之前运行会刷新
.if B[ebx]!='^'
invoke printf,addr outfmt,dword ptr B[ebx]
.endifmov ebx,i
imul ebx,2
add ebx,2
invoke LDR,ebx,n
.endif
ret
LDR endpstart:
invoke scanf,addr infmt,addr B
mov al,0
lea edi,B
mov ecx,80
repne scasb
lea eax,B+1
sub edi,eax
invoke LDR,0,edi
invoke ExitProcess,0
end start;*】*/

Win32汇编(SMU—递归子程序)相关推荐

  1. win32 汇编基础概念整理

    一.关于寄存器 寄存器有EAX,EBX,ECX,EDX,EDI,ESI,ESP,EBP等,似乎IP也是寄存器,但只有在CALL/RET在中会默认使用它,其它情况很少使用到,暂时可以不用理会. EAX是 ...

  2. win32汇编基础概念

    一.关于寄存器 寄存器有EAX,EBX,ECX,EDX,EDI,ESI,ESP,EBP等,似乎IP也是寄存器,但只有在CALL/RET在中会默认使用它,其它情况很少使用到,暂时可以不用理会. EAX是 ...

  3. 【win32汇编】0x01 开篇一些乱七八糟的话

    之前弄完了16位汇编,现在正式学习win32汇编,首先就是一些原理了,其实就是在16位的基础上增加了一些内容,其程序主要的结构记录如下 (1)指令集     .386     这是指定指令集 必须工作 ...

  4. Win32汇编_基础

    Win32汇编_基础 包含全部段的源程序结构: .386 .model flat, stdcall Option casemap:none ;<一些include语句> .stack [堆 ...

  5. Win32汇编基本编程框架

    Win32汇编编程框架如下: .386 .model flat,stdcall option casemap:none <一些include语句> .stack [堆栈段的大小] .dat ...

  6. C指针原理(23)-win32汇编及.NET调试

    2018-12-28 20:36:07 在WINDOWS系统能用到汇编的机会不多,基本都可以用C或C++代劳,更何况现在MICROSOFT的Visual Studio 系列工具非常强大,WINDOWS ...

  7. Win32汇编学习笔记之基础篇

    基础篇 第一章 背景知识 1.1 Win32的软硬件平台 1.1.1    80x86系列处理器简史 Win32可以在多种硬件平台上运行,但使用最广泛的硬件平台是基于Intel公司80x86系列处理器 ...

  8. win32汇编琢石成器第三章笔记

    这章主要还是讲一些masm这个编译器所适用的一些语法,和win32汇编语法 目录) 第三章 完整的程序结构 3.1.1 3.1.2段 3.1.4注释和换行 3.2.2调用函数 3.2.3API中的等值 ...

  9. Win32汇编环境配置

    放假了,发现自己知识面窄,趁有时间就打算折腾下Win32汇编.其实在学校也上过汇编课,是基于dos的.那时老师不务正业,老跟我们讲政治经济文化,唯独不怎么讲课;再加上自己的问题,导致了dos汇编学得好 ...

最新文章

  1. ldconfig及 LD_LIBRARY_PATH
  2. LeetCode--448
  3. async/await工作机制探究--NodeJS
  4. Windows Azure Storage (19) 再谈Azure Block Blob和Page Blob
  5. Origin绘制大小和颜色可变的3D散点图
  6. python3源代码_Python3源代码编译安装
  7. c语言点按钮弹窗口,【iOS】按钮点击弹窗
  8. 干货 | 局部特征图像配准用于缺陷检测
  9. 整合Flask中的目录结构
  10. python词嵌入_【自然语言处理】收藏!使用Python的4种句嵌入技术
  11. 实现百战铁路售票系统临时车次的添加功能
  12. visual foxpro v6.0官方版
  13. 强化学习策略迭代及收敛证明
  14. 【JZOJ B组】【NOIP2013模拟】Heaven Cow与God Bull
  15. PTA习题 计算某年某月某日是该年中的第几天
  16. Java核心类库之(常用API、字符串类、集合类、泛型)
  17. 你算过这笔账么?月薪5000在中国和美国的生活各是怎样?
  18. 【学习笔记】NLP之影评情感分类
  19. PHP redis配置说明
  20. 地下城英雄 java_用java开发dota英雄最华丽的技能(实例讲解)

热门文章

  1. 佛家经典禅语语录句子
  2. 抽象代数——群的基本定义和一些例子
  3. Chicken Soup 【你,远比你以为的更美丽】
  4. 51单片机风扇转动c语言代码,基于51单片机的智能风扇控制系统设计.doc
  5. VMware 收费太贵? 试试这款更轻量级的虚拟机, 完全免费!
  6. Spring Boot SOAP系列之WSDL是什么“Lese”
  7. PowerShell 运行ps1文件
  8. 一个阿里P8的程序员,一年能赚多少钱?
  9. Effective C++ 规则40:明智而审慎地使用多重继承
  10. 一个显示器分屏显示两个画面_测了两个爆款游戏显示器,结果我发现他们都有坑。...