assembly x86(nasm)串比较
预留字符串口令,输入口令串与预留密码串比较。若匹配则显示“MATCH!CONGRATULATION”,否则显示“NOMATCH!”,并让用户重新输入,程序能对口令进行测试,但测试次数最多3次,若3次输入密码皆错,给出相应的提示信息,程序退出。
两种做法:
data segment message db 'This is a sample program of passward'db 0dh,0ah,'Please strike the key!',0dh,0ah,'$' passward db 'huangchangsheng$' buf1 db 20db ?db 20 dup('$') FAULT db 0dh,0ah,'NOMATCH!Please enter again!',0dh,0ah,'$' RIGHT db 0dh,0ah,'MATCH!CONGRATULATION!',0dh,0ah,'$' ending db 0dh,0ah,'You have typed the wrong passward for three times!',0dh,0ah,'$' data ends code segment assume cs:code,ds:data start: mov ax,datamov ds,ax mov dx,offset message mov ah,9 int 21h mov cl,3jmp input rinput: mov dx,offset FAULT ;提示错误mov ah,9 int 21h input: lea dx, buf1 ;字符串输入mov ah, 0ah int 21hxor si,si strcmp: ;串比较mov al,passward[si]cmp al,'$'jz output2mov al,passward[si] cmp buf1[si+2],aljnz output1inc sijmp strcmp output1: loop rinputmov dx,offset ending mov ah,9 int 21hjmp exit output2: mov dx,offset RIGHT ;提示正确mov ah,9 int 21h exit: mov ah,4ch int 21h code ends end start
第二种比较难受,因为di和附加段搞了好久,然后是看大佬代码才发现自己错哪了的
https://blog.csdn.net/pengwill97/article/details/79249631传送门
data segment message db 'This is a sample program of passward'db 0dh,0ah,'Please strike the key!',0dh,0ah,'$' buf1 db 20,?,20 dup('$') FAULT db 0dh,0ah,'NOMATCH!Please enter again!',0dh,0ah,'$' RIGHT db 0dh,0ah,'MATCH!CONGRATULATION!',0dh,0ah,'$' ending db 0dh,0ah,'You have typed the wrong passward for three times!',0dh,0ah,'$' data ends ext segment passward db 'huangchangsheng$' ext ends code segment assume cs:code,ds:data,es:ext start: mov ax,datamov ds,axmov ax,extmov es,ax mov dx,offset message mov ah,9 int 21h mov cx,3jmp input rinput: mov dx,offset FAULT ;提示错误mov ah,9 int 21h input: lea dx, buf1 ;字符串输入mov ah, 0ah int 21hlea di,passwardlea si,buf1+2push cxmov cl,buf1+1repz cmpsb ;当前字符相同则继续循环jz output2jnz output1 output1:pop cxloop rinputmov dx,offset ending mov ah,9 int 21hjmp exit output2: mov dx,offset RIGHT ;提示正确mov ah,9 int 21h exit: mov ah,4ch int 21h code ends end start
如果使用repz cmpsb,密码应该放在附加段,不然可能会出bug,原因可能是di是目的变址寄存器,可用来存放相对于 ES 段之目的变址指针。
转载于:https://www.cnblogs.com/lanclot-/p/10963477.html
assembly x86(nasm)串比较相关推荐
- assembly x86(nasm)画三角形等图形的实现(升级版)
https://www.cnblogs.com/lanclot-/p/10962702.html接上一篇 本来就有放弃的想法,可是有不愿退而求次, 然后大神室友写了一个集海伦公式计算三角形面积, 三点 ...
- 【TVM 巡礼】How to optimize cpu(x86) gemm串讲
[GiantPandaCV导语]最近在整理一些编译器方面的基础知识翻译,回顾了一下TVM的Schedule然后想起自己1年前做的一些GEMM相关的实验和探索没做什么总结.所以基于TVM的三个教程也即T ...
- c++ dll返回容器_Windows x86 Shellcode开发:寻找Kernel32.dll地址
前言 针对一个已经学习了Linux Shellcode开发,并开始在Windows上尝试的研究人员来说,这一过程可能要比想象的更加艰难.Windows内核与Linux完全不同.尽管如此,但Linux内 ...
- linux修改栈指针x86,为什么x86-64 Linux系统调用会修改RCX,这个值意味着什么?
我正在尝试使用sys_brk syscall在linux中分配一些内存.这是我尝试过的: BYTES_TO_ALLOCATE equ 0x08 section .text global _start ...
- C/C++通用Makefile
最近的项目又回到了Linux上运行,这就需要在Linux下编译项目,写Makefile针对习惯了Windows的程序员来说是一件痛苦的事,如果有一个通用的Makefile该多好啊,本着这样的目的,我再 ...
- 汇编指令prefix rep:
F3: prefix rep: C3 retn OD中看到这,弄不明白第一句是什么意思了,有人能告诉一下吧,谢谢了,我在线等高人帮忙 答案: r ...
- libjpeg-turbo在Windows VS2010下的编译
去年曾经写过文章使用libjpeg-turbo,不过当时是基于Linux X86平台的,现在需要在Windows下使用这个库,于是上网找了一些编译方法,形成此文. 一.先期工作 1.下载CMake 下 ...
- 虚函数与虚函数表剖析(动多态)
探索C++虚函数在g++中的实现 本文是我在追查一个诡异core问题的过程中收获的一点心得,把公司项目相关的背景和特定条件去掉后,仅取其中通用的C++虚函数实现部分知识记录于此. 在开始之前,原谅我先 ...
- 探索C++虚函数在g++中的实现
本文是我在追查一个诡异core问题的过程中收获的一点心得,把公司项目相关的背景和特定条件去掉后,仅取其中通用的C++虚函数实现部分知识记录于此. 在开始之前,原谅我先借用一张图黑一下C++: &quo ...
最新文章
- vue加百度统计代码(亲测有效)
- js网页文件资源加载器
- C#算法设计查找篇之05-二叉树查找
- MySQL8.0版本升级建议及各类场景的操作方法
- 程序员面试金典——1.1确定字符互异
- vSphere Client 连接ESXi 或者是vCenter 时虚拟机提示VMRC异常的解决办法
- SecureCRT8.1下载+注册机+破解教程
- imagemagick /tmp/magick-xxxxxxxx
- Nginx学习使用记录
- 个性化定制软件安装包流程指导(按照步骤即可定制化安装流程)
- 计算机视觉快速入门一 —— 图像基本操作(二)
- 共模电压你了解多少?陈老师带你搞清楚
- Mask RCNN -- Mask Scoring R-CNN
- python常用的集成开发工具,python的主流开发工具
- java excel 设置列为日期,POI - 如何将单元格值设置为日期并应用默认Excel日期格式?...
- 苹果开放降级_潮讯:苹果官网又崩了;微信新功能被群嘲;小米11性能跑分;LOL手游封杀加速器;华为新平板有高刷...
- 中医移动医疗_搜狗切入移动医疗领域 推中医识方APP
- k8s tfjob批调度-volcano调研
- 宇宙是计算机程序,宇宙是被设计好的,和计算机程序100%相似,这些对比看宇宙的运行...
- mkdoc安装与使用说明
热门文章
- 模板设计模式,简单Java代码实现
- Java 里的HashMap(HashTable) 简介.
- 120xa正反转参数_RFID的软件SOPAS参数设置
- python贪婪匹配顺序_Python正则表达式:贪婪模式返回多个空匹配
- 计算机组成原理试卷五套,计算机组成原理(五套试题)
- 教师资格证考试计算机知识题库,教师资格证考试题库
- CCNA必会知识点:路由器PAP单向认证怎么配置?
- flutter嵌入HTML5页面,Flutter加载Html并实现与JS 的双向调用
- 互动赠新书|当云原生遇到混合云:如何实现“求变”与“求稳”的平衡
- 独家解读 etcd 3.4版本 |云原生生态周报 Vol. 18