无知 发表于 2012-3-26 01:43:11

汇编 实验5 第5题 代码 麻烦大鸟看对否

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,d
                mov es,ax
                mov bx,0
                mov cx,8
        s:        mov dx,ds:
                mov es:,dx
                inc bx
                loop s
               
                mov ax,b
                mov ds,ax
                mov bx,0
                mov dl,0
                mov cx,8
       s1:mov dl,
          add es:,dl
                inc bx
                loop s1
               
      mov ax,4c00h
                int 21
               
      code ends
end start
从没接触过任何编程 学起来真吃力啊{:5_100:}

libocdf 发表于 2012-3-26 03:37:16

明显不行,光是语法错误就一大堆,利用两次循环的思路是对的。
题目要求是对字节的操作,你用s: mov dx,ds:明显不合适。而s1:mov dl,虽然注意到这个问题,但这种用法是错误的。你将两个字节的数据传给一个字节,编译器会报错。还有就是最后返回时,是int 21h,H无论大小写,都要加上,在Debug下写源代码和在源程序中写代码是有区别的。编译器会将源程序中的数值默认为10进制,所以一定要加h,。。你好歹编译一下吧,哥们。以下提供正确方法,按照你的思路,两次循环:
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,

       add es:,al

       inc bx

       loop s

       mov ax,d

       mov ds,ax

       mov bx,0

       mov cx,8

   s0: mov al,es:

       mov ,al

       inc bx

       loop s0

    mov ax,4c00h

    int 21h

code ends

end start

libocdf 发表于 2012-3-26 03:38:29

注意一下你的代码风格,这个很重要。。

无知 发表于 2012-3-26 23:29:16

{:5_100:} 谢谢了 一定改
页: [1]
查看完整版本: 汇编 实验5 第5题 代码 麻烦大鸟看对否