字符串合并,在汇编语言,一般是用loop循环和cx寄存器,自己编程实现;

如果是win32汇编,可以使用movsb指令;

一般开发应用程序都会碰到拼接SQL语句,在C#这些语言用字符串连接的加号就可以了;在汇编中如果用上述两种方法,要拼接出SQL语句极其麻烦;

考虑使用调用win32 API来实现;

1.asm; 使用了lstrcpy,lstrcat函数;

MessageBox是调试用的,可注释掉;

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; by bobo
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.386.model flat, stdcalloption casemap :none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include     windows.inc
include     user32.inc
includelib  user32.lib
include     kernel32.inc
includelib  kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Equ 等值定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN    equ     1000h   ;图标
DLG_MAIN    equ     1
IDC_TXT1        equ             2001
IDC_TXT2    equ         2002
IDC_TXT3        equ             2003
IDC_TXT4    equ         2004
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.data?
hInstance   dd      ?
sztxt1      db  50 dup (?)
sztxt2      db  50 dup (?)
sztxt3      db  50 dup (?).data
insstr BYTE "insert into mytable ",0h
jhstr BYTE " + ",0h
caption db "SQL拼接",0
sqlstr BYTE SIZEOF insstr DUP(0),0h;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcDlgMain    proc    uses ebx edi esi hWnd,wMsg,wParam,lParammov eax,wMsg.if eax == WM_CLOSEinvoke EndDialog,hWnd,NULL.elseif  eax == WM_INITDIALOGinvoke    LoadIcon,hInstance,ICO_MAINinvoke   SendMessage,hWnd,WM_SETICON,ICON_BIG,eax.elseif eax == WM_COMMANDmov  eax,wParam.if   ax == IDOK;invoke EndDialog,hWnd,NULLinvoke   GetDlgItemText,hWnd,IDC_TXT1,addr sztxt1,sizeof sztxt1invoke    GetDlgItemText,hWnd,IDC_TXT2,addr sztxt2,sizeof sztxt2invoke    GetDlgItemText,hWnd,IDC_TXT3,addr sztxt3,sizeof sztxt3invoke      lstrcpy, addr sqlstr, addr insstrinvoke      lstrcat, addr sqlstr, addr sztxt1invoke      lstrcat, addr sqlstr, addr jhstrinvoke      lstrcat, addr sqlstr, addr sztxt2invoke      lstrcat, addr sqlstr, addr jhstrinvoke      lstrcat, addr sqlstr, addr sztxt3invoke    MessageBox,NULL,addr sqlstr,addr caption,MB_OKinvoke    SetDlgItemText,hWnd,IDC_TXT4,addr sqlstr.endif.elsemov  eax,FALSEret.endifmov   eax,TRUEret_ProcDlgMain endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:invoke    GetModuleHandle,NULLmov hInstance,eaxinvoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULLinvoke   ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>end    start

1.rc;

 #include        <resource.h>#define   ICO_MAIN        0x1000  //图标
#define DLG_MAIN        1
#define IDC_TXT1        2001
#define IDC_TXT2        2002
#define IDC_TXT3        2003
#define IDC_TXT4        2004ICO_MAIN    ICON        "Main.ico"DLG_MAIN DIALOG 350, 250, 300, 250
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Win32汇编拼接SQL语句"
FONT 9, "宋体"
{EDITTEXT IDC_TXT1, 50, 15, 200, 25, ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOPCTEXT "姓名:", -1, 5, 15, 40, 25EDITTEXT IDC_TXT2, 50, 60, 200, 25, ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOPCTEXT "职务:", -1, 5, 60, 40, 25EDITTEXT IDC_TXT3, 50, 105, 200, 25, ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOPCTEXT "部门:", -1, 5, 105, 40, 25EDITTEXT IDC_TXT4, 50, 150, 200, 25, ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOPCTEXT "拼接的SQL:", -1, 5, 150, 40, 25DEFPUSHBUTTON "GO!", IDOK, 58, 210, 50, 14CONTROL "", -1, "Static", SS_ETCHEDHORZ | WS_CHILD | WS_VISIBLE, 6, 190, 103, 1
}

运行如下;拼接出的内容放到最后一个文本框;

构建过程;

看上去基本可用;拼接出的SQL中的双引号、字段名这些,可自己加、改代码;界面可自己调rc文件;

win32汇编实现拼接SQL语句相关推荐

  1. 【NCRE】---拼接SQL语句(Case....When语句)

    开发到了这个紧要关头,功能基本都已经完成,剩下来的就是需要解决软件的性能问题!     我们一开始设计的时候是:每一个得分点都判断一次,并将考生答案和考生得到的分数update到数据库中,也就是每判一 ...

  2. java拼接sql语句的in条件

    1.问题 java拼接sql语句的in条件,需要将列表或数组转换为(" "," ")的格式 2.代码 StringBuffer sbuffer= new Str ...

  3. oracle数据库拼接sql语句字符串问题

    近日遇到一个问题,在使用存储过程拼接动态语句时,传输参数一直提示无效标识符,研究发现拼接sql语句的时候,作为字符串参数的变量要加' ',具体代码如下: declarevc_sql varchar2( ...

  4. java sql特殊字符处理_java用字符串拼接SQL语句的特殊字符转义问题

    在实际的项目开发中,往往会根据用户在界面的文本框中输入的信息,去数据库中做模糊查询.如果使用的是原始的JDBC和SQL,往往需要对用户的输入进行转义,避免生成的sql语法错误,或者防止SQL注入.比如 ...

  5. python sql拼接_python 字典 拼接SQL语句

    def gen_sql(table_name, data): """ :param table_name: 表名称 :param data: 字典对象 key为字段(要与 ...

  6. 关于Excel拼接sql语句,批量导入数据

    需求: 当我们需要把Excel中的数据(成百上千.成千上万条-)全部导入到数据库中,一条条写sql语句明显不理智,于是我们可以使用excel函数拼接sql语句,然后往下拉的方式自动拼接所有sql,批量 ...

  7. java sql 引号_java拼接sql语句里的单双引号

    一.场景描述 平时在用字符串拼接sql语句的时候,有没有遇到过下面的情况: 没错,就是单双引号问题.其实,关于双引号我们是容易理解的,sql语句是用String字符串拼接的,因此需要用到双引号.但是为 ...

  8. 利用Attribute特性简化多查询条件拼接sql语句的麻烦

    最近公司在做武汉公交信息化管理系统,做这种管理项目,最让人痛苦的就是表单的添加.修改.查询.添加.修改在我以前的文章中提到过,利用反射机制可以做到基本不写代码来完成.参见<ORM框架实现数据的自 ...

  9. oracle创建表语句_利用FME去拼接SQL语句并创建表

    在之前的工作中,我遇到了这么一个需求,需要将数据库内一千多个旧表按其原来表结构,重新创建对应的新表.然后对旧数据的进行处理后,存储新的数据. 不只是结构需要保持一致,还有用户.表空间.约束.备注等也需 ...

最新文章

  1. 对于插入和删除数据越频繁的操作 ,单链表较顺序存储结构效率越有优势
  2. 单个正态总体均值的区间估计_考研数学闭关修炼习题讲解(3536)统计、估计与检验...
  3. Microsoft 数据访问组件 (MDAC) 的版本历史记录
  4. zencart后台订单客户资料显示不全的原因
  5. c++的头文件与源文件
  6. Linux的slab和nginx的区别,Nginx核心知识100讲》nginx Slab管理器
  7. (7)Linux进程调度-O(1)调度算法
  8. 性能测试之二——性能测试的流程
  9. AndroidStuido连接不上手机的解决方法
  10. 【李宏毅2020 ML/DL】P53-55 Conditional Generation by RNN Attention Pointer Network Recursive
  11. Django实战(一)-----用户登录与注册系统2(数据模型、admin后台、路由视图)
  12. MCGS图库 触摸屏组态图库 触摸屏图库 昆仑通态触摸屏专用CGS
  13. oracle数据对应函数,Oracle函数取得姓名对应的拼音
  14. WPF ScrollViewer跟随鼠标滑动设置
  15. 1次阿里面试经验,4天走完全部流程,看这里对你有帮助!
  16. 崔希凡-javaWeb-笔记day07-day09(2016年7月26日23:17:27)
  17. 醉林疯的PTA 7-2 换硬币 (20分)
  18. IT行业基础知识:云计算到底是什么
  19. TM1637数码管显示
  20. Android 数据持久化

热门文章

  1. FisherVector编码的来龙去脉
  2. Machine Learning 网络资源
  3. shiro的用户认证
  4. Python 技术篇-使用time库获取秒级时间戳、毫秒级时间戳实例演示
  5. jquery/css实现步骤条
  6. 数字电路技术基础一二章
  7. python 3读网页文件及保存成本地文件,遇到的编码问题
  8. 特征值和特征向量(Eigenvalues and Eigenvectors)
  9. 贝叶斯分类器(Normal Bayes 分类器)
  10. OpenCV2: Mat属性type,depth,step