鱼C论坛

 找回密码
 立即注册
查看: 4842|回复: 38

[争议讨论] 给大家出道X86汇编题

[复制链接]
发表于 2012-7-26 18:12:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 张国祥 于 2012-7-26 18:14 编辑

实现如图效果:
MathTower.png

我称它为数字塔……
要求:转移指令中只能用loop指令,不允许使用栈及涉及到SS,SP寄存器的指令!
发挥大家的才能吧。这道题我不是原创。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-7-26 19:38:56 | 显示全部楼层
是太简单了没人愿意回答还是什么情况- -现在论坛气氛需要活跃一下啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-26 19:41:43 | 显示全部楼层
数字塔指的是什么呀,我没明白什么意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-7-26 19:44:24 | 显示全部楼层

看我用d命令显示的256字节内存:
0000000000000000
0100000000000000
0120000000000000
0123000000000000
0123400000000000
0123450000000000
0123456000000000
.
.
.
0123456789ABCDEF
形如这样的结构,用X86汇编实现
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-26 19:45:15 | 显示全部楼层
我还不知到你干啥的哪
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-7-26 19:45:49 | 显示全部楼层
の祉崭之殇__ 发表于 2012-7-26 19:45
我还不知到你干啥的哪

看我用d命令显示的256字节内存:
0000000000000000
0100000000000000
0120000000000000
0123000000000000
0123400000000000
0123450000000000
0123456000000000
.
.
.
0123456789ABCDEF
形如这样的结构,用X86汇编实现
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-7-26 19:57:46 | 显示全部楼层
额,莫非我还没解释清楚,,
仔细说一下吧:

在某连续的256B内存中,实现形如如下的结构:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 2 3 0 0 0 0 0 0 0 0 0 0 0 0
0 1 2 3 4 0 0 0 0 0 0 0 0 0 0 0
0 1 2 3 4 5 0 0 0 0 0 0 0 0 0 0
0 1 2 3 4 5 6 0 0 0 0 0 0 0 0 0
.
.
.
0 1 2 3 4 5 6 7 8 9 A B C D E F

要求:转移指令中只能用loop指令,不允许使用栈及涉及到SS,SP寄存器的指令!


这样应该很详细了吧~




想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-26 20:53:24 | 显示全部楼层
知道你意思,我不想写指令。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-26 21:37:53 | 显示全部楼层
我知道啦   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-26 21:39:55 | 显示全部楼层
我知道啦            
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-26 21:59:41 | 显示全部楼层
那个0中间的点是什么情况。还是本来就是这样的0?

要洗。我去写写试试……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-7-26 22:15:06 | 显示全部楼层
Potato丶 发表于 2012-7-26 21:59
那个0中间的点是什么情况。还是本来就是这样的0?

要洗。我去写写试试……

DOSBOX里面0都是这样- -我是64位系统
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-7-26 22:15:55 | 显示全部楼层
乄ヤ灬风 发表于 2012-7-26 20:53
知道你意思,我不想写指令。

权当练练手拉~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-26 22:27:24 | 显示全部楼层
路过 受教育啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-26 22:29:05 | 显示全部楼层
  1. assume cs:code

  2. data segment
  3. db 256 dup(0)
  4. data ends

  5. savecx segment
  6. db 16 dup(0)
  7. savecx ends

  8. code segment
  9. potato: mov ax,data
  10. mov ds,ax
  11. mov ax,savecx
  12. mov es,ax
  13. mov bx,10h
  14. mov dx,1

  15. mov cx,0fh

  16. s: mov word ptr es:[0],cx
  17. mov cx,dx
  18. mov al,1
  19. mov si,1

  20. s1: mov [bx+si],al
  21. inc al
  22. inc si
  23. loop s1

  24. inc dx
  25. add bx,10h
  26. mov word ptr cx,es:[0]
  27. loop s

  28. mov ax,4c00h
  29. int 21h


  30. code ends

  31. end potato
复制代码

111.jpg
要洗。搞定!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-27 02:51:15 | 显示全部楼层
我也写一个:lol
assume cs:code,ds:data
data segment
db 256 dup (?)
data ends
code segment
start:
    mov ax,data
    mov ds,ax
    mov bx,0fh
    mov si,0f0h
    mov cx,0fh
   
s1: mov dx,cx
    mov bx,cx
s2:mov [si+bx],bl
    dec bx
    loop s2
    sub si,10h
    mov cx,dx
    loop s1
   
    mov ax,4c00h
    int 21h
code ends
end start
权限不够,不能上传图片,大家可以自己debug下

点评

- -很不错。。比我少用寄存器和内存单元。效率会更高吧哈哈。  发表于 2012-7-27 10:25

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
Potato丶 + 5 + 5 赞一个!测试通过。倒着写- -很不错。。

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-27 14:27:57 | 显示全部楼层
大家踊跃参与吧!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-7-27 14:53:43 | 显示全部楼层
Potato丶 发表于 2012-7-26 22:29
要洗。搞定!

突然发现我弱爆了……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-7-27 14:55:20 | 显示全部楼层
shadowxh 发表于 2012-7-27 02:51
我也写一个
assume cs:code,ds:data
data segment

哦哦,这个更厉害,我还得加倍学习啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-7-27 14:57:39 | 显示全部楼层
唔,,我用了22行代码,,
  1. assume cs:code
  2. data segment
  3. db 256 dup (0)
  4. data ends

  5. code segment
  6.         start:
  7.                 mov ax,data
  8.                 mov ds,ax
  9.                 mov ax,0
  10.                 mov bx,0
  11.                 mov dx,1
  12.                 mov si,0
  13.                 mov di,0
  14.                 mov cx,16
  15.                 s0:
  16.                 mov bx,cx
  17.                 mov cx,dx
  18.                 s:
  19.                 inc ax
  20.                 mov [di+17],al
  21.                 inc di
  22.                 loop s
  23.                 sub di,dx
  24.                 add di,16
  25.                 xor ax,ax
  26.                 add dx,1
  27.                 mov cx,bx
  28.                 loop s0
  29.                
  30.                 mov ax,4c00h
  31.                 int 21h
  32. code ends
  33. end start
复制代码


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-1 08:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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