aini414 发表于 2022-5-10 20:26:09

实验五第五题

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 es,ax
      mov ax,c
      mov ds,ax
      mov bx,0
      mov cx,8
s:      mov al,es:
      mov ,al
      inc bx
      loop s
      
      mov ax,b
      mov es,ax
      mov bx,0
      mov cx,8
s1:      mov al,es:
      add ,al
      inc bx
      loop s1

      mov ax,4c00h
      int 21h
      

      
code ends

end start


编译的时候总是在 a,b,c segment 代码行报错不知道什么原因?大佬们帮忙解释一下!!谢谢

竹逸 发表于 2022-5-10 21:24:24

我这个用的是一个循环写的

jackz007 发表于 2022-5-10 22:00:17

本帖最后由 jackz007 于 2022-5-10 22:07 编辑

      楼主的代码用 MASM 5.10b 编译不存在任何问题。
      不过,代码可略作简化如下:
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,c
      mov ds,ax
      xor bx,bx
      mov cx,8
      push bx
      push cx
      mov ax,a
      mov es,ax
s1:   mov al,es:
      mov ,al
      inc bx
      loop s1
      mov ax,b
      mov es,ax
      pop cx
      pop bx
s2:   mov al,es:
      add ,al
      inc bx
      loop s2
      mov ax,4c00h
      int 21h
code ends
end start

aini414 发表于 2022-5-11 12:00:07

jackz007 发表于 2022-5-10 22:00
楼主的代码用 MASM 5.10b 编译不存在任何问题。
      不过,代码可略作简化如下:

谢谢

月下孤井 发表于 2022-5-19 13:26:57

楼主的代码我运行着也没问题,我的写法可能有点不太规范,因为这个程序没有用到栈,我把ss也拿来当附加段用了,只用一个循环就可以:
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 ax,b
        mov ss,ax
        mov ax,c
        mov es,ax
        mov bx,0
        mov cx,8
        s:mov al,ds:
        add al,ss:
        mov es:,al
        inc bx
        loop s
       
        mov ax,4c00h
        int 21h
code ends
end start
页: [1]
查看完整版本: 实验五第五题