鱼C论坛

 找回密码
 立即注册
查看: 6466|回复: 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 ...
小甲鱼最新课程 -> https://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:}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-1-23 12:15:52 | 显示全部楼层
好像循环次数弄错了,改成16...大家继续解答
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-1-23 12:24:41 | 显示全部楼层
好像就是8哦...混乱中,大家将就看看吧...
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-1-23 21:27:38 | 显示全部楼层
  1. c segment
  2.     db 0,0,0,0,0,0,0,0
  3. c segment
复制代码
这要能通才怪。
而且MASM里面“c”是保留字符。
你自己最起码要编译下……
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

错误太多,自己编译看一下
  
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

这么改行不行


  1. assume cs:code
  2. datasg segment
  3.         db 1,2,3,4,5,6,7,8
  4. datasg ends
  5. esg segment
  6.         db 1,2,3,4,5,6,7,8
  7. esg ends
  8. stacksg segment
  9.         db 0,0,0,0,0,0,0,0
  10. stacksg segment
  11. code segment
  12. start:        mov ax,stacksg
  13.         mov ss,ax
  14.         mov sp,16
  15.         mov ax,datasg
  16.         mov ds,ax
  17.         mov bx,0
  18.         mov cx,8
  19. s:      push bx
  20.         inc bx
  21.         loop s
  22.         mov ax,esg
  23.         mov ds,ax
  24.         mov cx,8
  25. s1:     add al,ds:[bx]
  26.         inc bx
  27.         loop s1
  28.         mov ax,4c00h
  29.         int 21h
  30. code ends
  31. end start
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-1-30 17:11:43 | 显示全部楼层
第10行的stacksg segment错了
实在看不出第19—21行的循环有什么意义
是在把0到7推进栈吗?
小甲鱼最新课程 -> https://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
           给你看我的,不过我的这个好像也有错。郁闷,偏移位置加起来的就不对,还要整
小甲鱼最新课程 -> https://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
小甲鱼最新课程 -> https://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          
小甲鱼最新课程 -> https://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
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-8 10:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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