鱼C论坛

 找回密码
 立即注册
查看: 3651|回复: 9

汇编语言实验5(6)

[复制链接]
发表于 2012-1-23 12:32:44 | 显示全部楼层 |阅读模式
2鱼币
那这题写的有错不 ?
题目:将a段的前8个数据逆序存放到b中.
assume cs:code
a segment
dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
a ends
b segment
dw 0,0,0,0,0,0,0,0
b ends
code segment
start: mov ax,a
mov ds,ax
mov bx,16
mov ss,dx
mov sp,16
mov bx,0
mov cx,8
s: push ss:[bx]
sub bx,2
loop s
code ends
end start

最佳答案

查看完整内容

1.要用堆栈存放数据,所以段b应该为堆栈段。但你的程序中没有: mov ax,b mov ss,ax mov sp,16 这样的语句 2.循环体大概要如下: mov bx,0 mov cx,8 s: push ds: add bx,2 loop s
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-1-23 12:32:45 | 显示全部楼层
本帖最后由 仰望天上的光 于 2012-1-23 14:57 编辑

1.要用堆栈存放数据,所以段b应该为堆栈段。但你的程序中没有:
mov ax,b
mov ss,ax
mov sp,16
这样的语句
2.循环体大概要如下:
  mov bx,0
  mov cx,8
s: push ds:[bx]
   add bx,2
   loop s
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-1-23 13:45:46 | 显示全部楼层
sub bx,2    不是减   是ADD
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-1-23 14:02:27 | 显示全部楼层

是逆向啊,我先定义到偏移地址16啊...那复制了08这个字节的内容,粘贴到B了,是不是要到A段中退2个偏移地址再复制7呢?是逆序逆序,不是顺序
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-1-23 19:46:37 | 显示全部楼层
仰望天上的光 发表于 2012-1-23 14:57
1.要用堆栈存放数据,所以段b应该为堆栈段。但你的程序中没有:
mov ax,b
mov ss,ax

你说的我写的里面都有啊...看清楚些...然后帮我看看有没有错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-1-23 21:26:56 | 显示全部楼层
Push 发表于 2012-1-23 19:46
你说的我写的里面都有啊...看清楚些...然后帮我看看有没有错

比如我写的:
mov ax,b
mov ss,ax
在你程序里没有出现,你的程序仅仅将SS设置为DX(天晓得DX的初始值是什么)

并且你写的是push ss:[bx]
我写的是push ds:[bx]这两句是不一样的
你写的是sub bx,2(BX初始值已经为0了,还不断的减2)
我写的是 add bx,2

所以我写的基本都是你没有写的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-1-23 22:26:24 | 显示全部楼层
仰望天上的光 发表于 2012-1-23 21:26
比如我写的:
mov ax,b
mov ss,ax

哦,那么完整的是怎么样的?...还有实验5的答案我也不知道...课后习题实验五答案不在网站上
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-1-24 12:38:22 | 显示全部楼层
牛!!!!!!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-1-24 17:18:45 | 显示全部楼层
这样可以么?
assume cs:code,ds:a,ss:b
data segment
        dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
data ends
stack segment
        dw 0,0,0,0,0,0,0,0
stack ends
code segment
start:  mov ax,data
        mov ds,ax
        mov ax,stack
        mov ss,ax
        mov sp,16
        mov bx,16
        mov cx,8
s:        push bx
        sub bx,2
        loop s
        mov ax,4c00h
        int 21h
code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-1-29 11:29:30 | 显示全部楼层
assume cs:code
a segment
dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
a ends

b segment
dw 0,0,0,0,0,0,0,0
b ends

code segment
   start: mov ax,a
           mov ds,ax
           mov ax,b
           mov ss,ax
           mov sp,16
                  
            mov bx,0
            mov cx,8
         
          s:push ds:[bx]
            add bx,2
            loop s
           mov ax,4c00h
           int 21h
code ends
  end start


试一下我上边的代码,应该可以。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-19 06:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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