吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3419|回复: 11
收起左侧

[其他转载] 【源码】汇编学习笔记(三)

  [复制链接]
spdv123 发表于 2016-3-19 08:00
随手写了一个读入用户输入字符串(以$结尾),程序输出字符串并输出用户输入字符串中字符个数的程序,有一点需要注意就是统计字符串字符个数尽量还是别用dx了,输入输出操作都会覆盖他,20那个数卡了我一会,最后才发现是之前的操作改变了dx导致计数错位。。
[Asm] 纯文本查看 复制代码
stacksegment stack
db 100 dup (?)
stack ends

data segment
xsl db 'Input a string end with dollar char:', 13, 10, '$'
showop db 13, 10, 'Your input string is:$'
showop2 db 13, 10, 'It has $'
showop3 db ' chars.',13, 10, '$'
userstr db 100 dup(0)
data ends

code segment
assume cs:code, ds:data, ss:stack

start:
mov ax, data
mov ds, ax

lea dx, xsl
mov ah, 09h
int 21h

lea si, userstr
mov dx, si
xor dx, dx
callin:
call inputr
inc si
cmp ax, 0
je outp
jmp callin
;采用的计数方法:首先把地址复制到dx,每次读入字符串si偏移量+1,最后si-dx就是读入的字符串长度(+20...)
outp:
lea dx, showop
mov ah, 09h
int 21h
lea dx, userstr
mov ah, 09h
int 21h

lea dx, showop2
mov ah, 09h
int 21h
lea dx, userstr
mov cx, si
sub cx, dx
;sub cx, 20;不减20不对。这里是因为字符串头部还有一些东西?NONONO(因为之前的操作改变了dx)
mov ax, cx
call showint

lea dx, showop3
mov ah, 09h
int 21h

jmp fini

inputr proc
mov ah, 01h
int 21h
mov [si], al
cmp al, '$'
je ret0
mov ax, 1
ret
ret0:
xor ax, ax
ret
inputr endp

showint proc;显示数字函数
cmp ax, 0;0直接输出
jnz notzero
mov dx, '0'
mov ah, 02h
int 21h
jmp endshow

notzero:
xor cx, cx;cx表示位数,初始为0
pushtostack:
xor dx, dx;被除数是dx和ax的组合。。。不清空会溢出
mov bx, 10
div bx
add dx, '0'
push dx
inc cx
cmp ax, 0
jz popandshow
jmp pushtostack

popandshow:
mov ah, 02h
pop dx
int 21h
loop popandshow

endshow:

ret
showint endp

fini:
mov ah, 01h
int 21h
mov ah, 4ch
int 21h
code ends
end start
汇编22.png

免费评分

参与人数 3热心值 +3 收起 理由
lovelypiano + 1 谢谢@Thanks!
英文 + 1 鼓励转贴优秀软件安全工具和文档!
Monitor + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| spdv123 发表于 2016-3-20 17:07
lovelypiano 发表于 2016-3-19 10:10
弱弱问句,这是什么文本编辑器

editplus 有一个插件
 楼主| spdv123 发表于 2016-3-19 08:36
music7887 发表于 2016-3-19 08:14
支持一下楼主,很早想学汇编到现在还没下定决心。。。

慢慢来嘛。。。毕竟这个也是循序渐进的,从hello world 开始咯
Bluesky10 发表于 2016-3-19 08:14
music7887 发表于 2016-3-19 08:14
支持一下楼主,很早想学汇编到现在还没下定决心。。。
孤独飞天 发表于 2016-3-19 08:53
支持楼主,继续加油哦
292219828 发表于 2016-3-19 09:31
楼主加油,坚持~坚持。
pj_s 发表于 2016-3-19 10:02
看下 多谢分享      
lovelypiano 发表于 2016-3-19 10:10
弱弱问句,这是什么文本编辑器{:1_903:}
Norton 发表于 2016-3-19 11:28
感觉不好学呢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 15:20

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表