鱼C论坛

 找回密码
 立即注册
查看: 5824|回复: 11

汇编语言-实验5

[复制链接]
发表于 2012-1-23 12:13:12 | 显示全部楼层 |阅读模式
2鱼币
本帖最后由 Push 于 2012-1-23 22:03 编辑

题目:把a、b段依次相加,结果存放c中.
这样写通不通?
assume cs:code
a segment
    db 1,2,3,4,5,6,7,8
a ends
b segment
    db 1,2,3,4,5,6,7,8
b ends
c segment
    dw 0,0,0,0,0,0,0,0
c segment
code segment
start: mov ax,a
         mov ss,ax
         mov sp,16
         mov dx,c
         mov bx,0
         mov cx,8
s:       push dx:[bx]
          add bx,2
          loop s
          mov ax,b
          mov bx,0
          mov cx,8
s1:     add dx:[bx],ax[bx]
          add bx,2
          loop s1
code ends
end start

最佳答案

查看完整内容

assume cs:code a segment db 1,2,3,4,5,6,7,8 a ends b segment db 1,2,3,4,5,6,7,8 b ends d segment db 0,0,0,0,0,0,0,0 d ends code segment start: mov ax,a mov ds,ax mov ax,b mov es,ax mov bx,0 mov cx,8 s: mov al, mov ah,0 add es:,al inc bx loop s mov ax,d mov ds,ax mov ax,b mov es,ax mov bx,0 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-1-23 12:13:13 | 显示全部楼层
assume cs:code
a segment
  db 1,2,3,4,5,6,7,8
a ends
b segment
  db 1,2,3,4,5,6,7,8
b ends
d segment
  db 0,0,0,0,0,0,0,0
d ends
code segment
start: mov ax,a
       mov ds,ax
          
           mov ax,b
           mov es,ax
       
           mov bx,0
           mov cx,8
        s: mov al,[bx]
           mov ah,0
           add es:[bx],al
           inc bx
           loop s
          
           mov ax,d
           mov ds,ax
           mov ax,b
           mov es,ax
           mov bx,0
           mov cx,8
        s1:mov al,es:[bx]
           mov ds:[bx],al
           inc bx
           loop s1

           mov ax,4c00h
           int 21h
code ends
end start
           看了下别人的,改了我的下,借我觉得写程序的时候AX在LOOP里面要清零,可以少错误吧。想了,不过没去试,不知你现在还要不要。{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-1-23 12:15:52 | 显示全部楼层
好像循环次数弄错了,改成16...大家继续解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-1-23 12:24:41 | 显示全部楼层
好像就是8哦...混乱中,大家将就看看吧...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-1-23 21:27:38 | 显示全部楼层
c segment
    db 0,0,0,0,0,0,0,0
c segment
这要能通才怪。
而且MASM里面“c”是保留字符。
你自己最起码要编译下……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-1-23 21:48:45 | 显示全部楼层
第二个  c segment      
       mov dx,c        s:     
   push dx:[bx]  
  s1:     add dx:[bx],ax[bx]

错误太多,自己编译看一下
  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-1-23 23:57:52 | 显示全部楼层
本帖最后由 Push 于 2012-1-24 16:50 编辑

这么改行不行
assume cs:code
datasg segment
        db 1,2,3,4,5,6,7,8
datasg ends
esg segment
        db 1,2,3,4,5,6,7,8
esg ends
stacksg segment
        db 0,0,0,0,0,0,0,0
stacksg segment
code segment
start:        mov ax,stacksg
        mov ss,ax
        mov sp,16
        mov ax,datasg
        mov ds,ax
        mov bx,0
        mov cx,8
s:      push bx
        inc bx
        loop s
        mov ax,esg
        mov ds,ax
        mov cx,8
s1:     add al,ds:[bx]
        inc bx
        loop s1
        mov ax,4c00h
        int 21h
code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-1-30 17:11:43 | 显示全部楼层
第10行的stacksg segment错了
实在看不出第19—21行的循环有什么意义
是在把0到7推进栈吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-2-3 21:48:04 | 显示全部楼层
assume cs:code
a segment
  db 1,2,3,4,5,6,7,8
a ends
b segment
  db 1,2,3,4,5,6,7,8
b ends
d segment
  db 0,0,0,0,0,0,0,0
d ends
code segment
start: mov ax,a
       mov ds,ax
          
           mov ax,b
           mov es,ax
       
           mov bx,0
           mov cx,8
        s: mov bl,[bx]
           mov bh,0
           add es:[bx],bl
           inc bx
           loop s
          
           mov ax,d
           mov ds,ax
           mov ax,b
           mov es,ax
           mov bx,0
           mov cx,8
        s1:mov bl,es:[bx]
           mov ds:[bx],bl
           inc bx
           loop s1

           mov ax,4c00h
           int 21h
code ends
end start
           给你看我的,不过我的这个好像也有错。郁闷,偏移位置加起来的就不对,还要整
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-2-4 16:02:11 | 显示全部楼层
assume cs:code
data segment
     db 1,2,3,4,5,6,7,8
         
     db 1,2,3,4,5,6,7,8

     dw 0,0,0,0,0,0,0,0
data ends



code segment

start: mov ax,data
        mov ds,ax
                mov bx,0
                mov si,8
                mov di,16
                mov cx,8
                mov ax,0
               
s:                mov al,[bx]
        add al,ds:[si]
                mov ds:[di],ax
                inc bx
                inc si
                add di,2
                loop s
               
                mov ax,4c00h
                int 21h
               
code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-10 17:53:57 | 显示全部楼层
assume cs:code
a segment
db 1,2,3,4,5,6,7,8
a ends
b segment
db 1,2,3,4,5,6,7,8
b ends
c segment
db 0,0,0,0,0,0,0,0
c ends
code segment
start:mov cx,8
mov bx,0
s:mov ax,a
mov ds,ax
mov ax,0

mov al,[bx]
mov dl,al

mov ax,b
mov ds,ax
mov ax,0

mov al,[bx]
add dl,al

mov ax,c
mov ds,ax
mov [bx],dl

inc bx
loop s

mov ax,4c00h
int 21h

code ends
end start          
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-2-2 23:02:06 | 显示全部楼层
我的思路:
1.把数据段ds 指向数据段a, es指向数据段c
2.a里的值依次和c里的值相加,结果存入c
3.再将ds指向数据段b,b里的值在依次和C里的数据相加,结果仍然存在C里
assume cs:code

a segment
                db 1,2,3,4,5,6,7,8
a ends

b segment
                db 1,2,3,4,5,6,7,8
b ends

c segment
                db 0,0,0,0,0,0,0,0
c ends

code segment

start:        mov ax,a  
                mov ds,ax
                mov bx,0
               
                mov ax,c
                mov es,ax
               
                mov cx,8
        s:        mov ax,0
                mov al,[bx]
                add es:[bx],al
                inc bx
                loop s
               
                mov ax,b
                mov ds,ax
                mov bx,0
                mov cx,8
        s0:        mov ax,0
                mov al,[bx]
                add es:[bx],al
                inc bx
                loop s0


                mov ax,4c00H
                int 21H
code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 15:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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