有用汇编写得 关于 逆置 输出 得例子吗 给个·~~~~~

bc00718 2008-05-08 05:01:02
如标题~~~~~~~
...全文
116 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
bc00718 2008-05-09
  • 打赏
  • 举报
回复
没结果呀~~~~~~
wesleyluo 2008-05-09
  • 打赏
  • 举报
回复
強烈支持,樓上的做法。
BAYNPU 2008-05-09
  • 打赏
  • 举报
回复
-d 0b4a:0000
0B4A:0000 01 00 02 00 03 00 04 00-05 00 00 00 00 00 00 00;原始数据
0B4A:0010 B8 4A 0B 8E D8 FF 36 00-00 FF 36 02 00 FF 36 04

-d 0b4a:0000
0B4A:0000 05 00 04 00 03 00 02 00-01 00 00 00 00 00 00 00;逆置输出数据
0B4A:0010 B8 4A 0B 8E D8 FF 36 00-00 FF 36 02 00 FF 36 04
dongyi940333 2008-05-09
  • 打赏
  • 举报
回复
1:LZ用DEBUG中的D命令查看DS:0 9处的值就是结果,

2:可以在程序中填加显示结果的代码,具体如下:



assume cs:code,ds:data
data segment
dw 1,2,3,4,5
data ends
code segment
start:mov ax,data
mov ds,ax
push ds:[0]
push ds:[2]
push ds:[4]
push ds:[6]
push ds:[8]
pop ds:[0]
pop ds:[2]
pop ds:[4]
pop ds:[6]
pop ds:[8]

mov dl, ds:[0]
add dl, 30h
mov ah, 2
int 21h

mov dl, ds:[2]
add dl, 30h
mov ah, 2
int 21h

mov dl, ds:[4]
add dl, 30h
mov ah, 2
int 21h

mov dl, ds:[6]
add dl, 30h
mov ah, 2
int 21h

mov dl, ds:[8]
add dl, 30h
mov ah, 2
int 21h

mov ax,4c00h
int 21h
code ends
end start
BAYNPU 2008-05-08
  • 打赏
  • 举报
回复
逆置输出,这个程序很简单,楼主应该看很懂。
assume cs:code,ds:data
data segment
dw 1,2,3,4,5
data ends
code segment
start:mov ax,data
mov ds,ax
push ds:[0]
push ds:[2]
push ds:[4]
push ds:[6]
push ds:[8]
pop ds:[0]
pop ds:[2]
pop ds:[4]
pop ds:[6]
pop ds:[8]
mov ax,4c00h
int 21h
code ends
end start
bc00718 2008-05-08
  • 打赏
  • 举报
回复
还是 看不懂 呵呵
glchen57 2008-05-08
  • 打赏
  • 举报
回复
你不是要逆序输出吗?
我的那个写法算法思想就是,用两个index,一个指向头,一个指向尾,然后不停的交换这两个index所指向的字符,并且两个index不停的往中间逼近,直到交错。
算法里面很常用的一种逆序输出阿。
bc00718 2008-05-08
  • 打赏
  • 举报
回复
楼上得高手写的看不懂呀 我初学汇编。。。。


一下我写得 没结果 帮我改下 谢谢~~~~~~


DATA SEGMENT
BUF DB 1,2,3,4,5
DATA ENDS

SSEG SEGMENT
STK DB 10 DUP(?)
SSEG ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:SSEG

START:
MOV AX,DATA
MOV DS,AX

A: MOV BX,0
MOV AL,DATA[BX]
PUSH CX
INC BX
LOOP A
POP CX

MOV AH,4CH
INT 21H
CODE ENDS
END START
glchen57 2008-05-08
  • 打赏
  • 举报
回复
movl %ebx
movl %esi
movl %edi

这几个应该都用pushl,呵呵,抱歉
glchen57 2008-05-08
  • 打赏
  • 举报
回复
AT&T语法,gas下汇编。家里没有环境,所以没有调试过,不知道有没有bug,供参考。
假设传入的是字符串指针和长度。


.globl invert
.type invert, @function
invert:
pushl %ebp
movl %esp, %ebp
movl %ebx
movl %esi
movl %edi

movl 8(%ebp), %esi
movl 12(%ebp), %eax
xorl %ebx, %ebx
jmp 1f
0:
movb (%esi, %eax), %al
xchgb %al, (%esi, %ebx)
movb %al, (%esi, %eax)
incl %ebx
decl %eax
1:
cmpl %eax, %ebx
jbe 0b

xorl %eax, %eax

popl %edi
popl %esi
popl %ebx
movl %ebp, %esp
popl %ebp
ret
bc00718 2008-05-08
  • 打赏
  • 举报
回复
嗯 我试下看看~~~~~
用户 昵称 2008-05-08
  • 打赏
  • 举报
回复
最简单的就是反着输出。
dongyi940333 2008-05-08
  • 打赏
  • 举报
回复
对于数值,提取第一位上的数字后和字符串操作一样

----------------------------------------

对于数值,提取每一位上的数字后和字符串操作一样

^_^
BMCRNET 2008-05-08
  • 打赏
  • 举报
回复
顶楼上
.................................
dongyi940333 2008-05-08
  • 打赏
  • 举报
回复
对于字符串,逆置输出可以从字符串的头开始循环执行PUSH操作,完成后执行POP操作就得到其逆置输出.

对于数值,提取第一位上的数字后和字符串操作一样.

不对之处请原谅!!!

21,457

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧