热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

(汇编)设在一个缓冲区BUF1中存放了一个串“123GOOD”,将其以相反顺序拷贝到另一个缓冲区BUF2中。

程序如下:.386A1SEGMENTUSE16BUF1DB123GOODBUF2DB7DUP(?)A1ENDSB1SEGMENTUSE16STAC
程序如下:
.386
A1 SEGMENT USE16
BUF1 DB '123GOOD'
BUF2 DB 7 DUP(?)
A1 ENDS

B1 SEGMENT USE16 STACK
DB 200 DUP(0)
B1 ENDS

C1 SEGMENT USE16
   ASSUME DS:A1,SS:B1,CS:C1
BEGIN: MOV AX,A1
       MOV DS,AX
       LEA DI,BUF1
       MOV BX,7
PART1: PUSH DI
       INC DI
       DEC BX
       JNZ PART1
       MOV CX,7
       LEA DI,BUF2
PART2: POP BX
       MOV [DI],BX
       INC DI
       DEC CX
       JNZ PART2
       MOV AH,9
       INT 21H
       MOV AH,4CH
       INT 21H
C1 ENDS
   END BEGIN

请指教哪里有错啊。

5 个解决方案

#1


突然发现是把地址压栈了。不过还是请各位帮着改一下吧。

#2


栈对字操作,所以,这里没必有用栈。

D:\MASM>type 329.asm
;This Program Compiled Sucess by Masm 6.15
assume  cs:code,ds:data
data    segment
buf1    db      '123GOOD'
buf2    db      buf2-buf1 dup (?) 
data    ends
code    segment
start:
        mov ax,data
        mov ds,ax

        mov cx,lengthof buf1
        mov si,offset buf1
        add si,cx
        dec si
        mov di,offset buf2
s:
        mov al,[si]
        mov [di],al
        dec si
        inc di
        loop s

        mov byte ptr [di],'$'
        mov dx,offset buf2
        mov ah,9
        int 21h

        mov ah,4ch
        int 21h
code    ends
end     start

D:\MASM>329
DOOG321
D:\MASM>

#3


这么简单的程序,用不到386的指令。

#4


sorry,用栈也可以。
D:\MASM>type 329.asm
;This Program Compiled Sucess by Masm 6.15
assume  cs:code,ds:data,ss:stack
data    segment
buf1    db      '123GOOD'
data    ends
code    segment
stack   segment stack
        db      32 dup (0)
stack   ends
start:
        mov ax,data
        mov ds,ax

        mov cx,lengthof buf1
        mov bx,offset buf1
_p:
        push [bx]
        inc bx
        loop _p

        mov bx,offset buf1
        mov cx,lengthof buf1
_o:
        pop [bx]
        inc bx
        loop _o

        mov byte ptr [bx],'$'
        mov ah,9
        mov dx,offset buf1
        int 21h

        mov ah,4ch
        int 21h
code    ends
end     start

D:\MASM>329
DOOG321
D:\MASM>

#5


本帖最后由 mydo 于 2012-03-29 22:09:32 编辑
你可以这样do(伪代码):


x,str = [],"i love ruby!"

str.each_char {|c| x.push c}
str.clear
while v = x.pop;str< puts str

推荐阅读
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • Java SE从入门到放弃(三)的逻辑运算符详解
    本文详细介绍了Java SE中的逻辑运算符,包括逻辑运算符的操作和运算结果,以及与运算符的不同之处。通过代码演示,展示了逻辑运算符的使用方法和注意事项。文章以Java SE从入门到放弃(三)为背景,对逻辑运算符进行了深入的解析。 ... [详细]
  • 电话号码的字母组合解题思路和代码示例
    本文介绍了力扣题目《电话号码的字母组合》的解题思路和代码示例。通过使用哈希表和递归求解的方法,可以将给定的电话号码转换为对应的字母组合。详细的解题思路和代码示例可以帮助读者更好地理解和实现该题目。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • 摘要: 在测试数据中,生成中文姓名是一个常见的需求。本文介绍了使用C#编写的随机生成中文姓名的方法,并分享了相关代码。作者欢迎读者提出意见和建议。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
  • Redis底层数据结构之压缩列表的介绍及实现原理
    本文介绍了Redis底层数据结构之压缩列表的概念、实现原理以及使用场景。压缩列表是Redis为了节约内存而开发的一种顺序数据结构,由特殊编码的连续内存块组成。文章详细解释了压缩列表的构成和各个属性的含义,以及如何通过指针来计算表尾节点的地址。压缩列表适用于列表键和哈希键中只包含少量小整数值和短字符串的情况。通过使用压缩列表,可以有效减少内存占用,提升Redis的性能。 ... [详细]
  • 本文讨论了一个数列求和问题,该数列按照一定规律生成。通过观察数列的规律,我们可以得出求解该问题的算法。具体算法为计算前n项i*f[i]的和,其中f[i]表示数列中有i个数字。根据参考的思路,我们可以将算法的时间复杂度控制在O(n),即计算到5e5即可满足1e9的要求。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
author-avatar
zwjy2018
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有