shihuai1999 发表于 2008-7-3 19:52

各位帮下忙,期末复习题目,100个无符号数相加,急!!!

设计一个加法程序,将从BUF存储单元开始的100个无符号数(16位)相加,结果存入BUF单元。

哪位高手能给个答案啊,无限感激

明天就考试了

[[it] 本帖最后由 shihuai1999 于 2008-7-3 19:54 编辑 [/it]]

[[it] 本帖最后由 shihuai1999 于 2008-7-3 19:55 编辑 [/it]]

[[it] 本帖最后由 shihuai1999 于 2008-7-3 21:41 编辑 [/it]]

shihuai1999 发表于 2008-7-3 22:27

大家觉得这个怎样?有没有要修改的地方?
Data segment
BUF dw 101 dup(1)

Data ends



CODE   SEGMENT
        ASSUME    CS:CODE,DS:Data
START:
     mov ax,Data
     mov ds,ax
     mov bx,offset BUF
     mov cx,100
     mov ax,00h
replay:
     add ax,[bx]
     inc bx
     inc bx
     loop replay
  
     mov [bx],ax
     
     
      mov ah,4ch
      int 21h

CODE    ENDS        
END  START

zklhp 发表于 2008-7-3 22:36

.model small
.stack 200h
.data
       
        buf dw 100d dup (1)
       
.CODE
START:
        mov ax,@data
        mov ds,ax
        xor ax,ax
        xor bx,bx
        mov cx,100d
               
@@:
        add ax,[buf+bx]
        inc bx
        inc bx
        dec cx
        jcxz @finish
        jmp @b
       
@finish:
       
        mov WORD ptr [buf],ax
        mov BYTE ptr [buf+2],'$'
        lea dx,buf
        mov ah,9h
        int 21h
       
        ;暂停,任意键关闭
        mov ah,1
        int 21h
        mov ah,4ch     ;结束,可以修改al设置返回码
        int 21h
       
END START

zklhp 发表于 2008-7-3 22:38

这样好象也行


.model small
.stack 200h
.data
       
        buf dw 100d dup (1)
       
.CODE
START:
        mov ax,@data
        mov ds,ax
        xor ax,ax
        xor bx,bx
        mov cx,100d
               
@loop:
        add ax,[buf+bx]
        inc bx
        inc bx
        loop @loop
       
        mov WORD ptr [buf],ax
        mov BYTE ptr [buf+2],'$'
        lea dx,buf
        mov ah,9h
        int 21h
       
        ;暂停,任意键关闭
        mov ah,1
        int 21h
        mov ah,4ch     ;结束,可以修改al设置返回码
        int 21h
       
END START

zklhp 发表于 2008-7-3 22:41

貌似也行

.model small
.stack 200h
.data
       
        buf dw 100d dup (1)
       
.CODE
START:
        mov ax,@data
        mov ds,ax
        xor ax,ax
        xor bx,bx
        mov cx,100d
        lea si,buf
               
@loop:
        lodsw
        add bx,ax
        loop @loop
       
        mov WORD ptr [buf],bx
        mov BYTE ptr [buf+2],'$'
        lea dx,buf
        mov ah,9h
        int 21h
       
        ;暂停,任意键关闭
        mov ah,1
        int 21h
        mov ah,4ch     ;结束,可以修改al设置返回码
        int 21h
       
END START

zklhp 发表于 2008-7-3 22:43

怎么偶一开始写了个

buf dw 100d dup ('1')

就有问题?

[[it] 本帖最后由 zklhp 于 2008-7-3 22:49 编辑 [/it]]

zklhp 发表于 2008-7-3 23:02

[quote][bo][un]zklhp[/un] 在 2008-7-3 22:43 的发言:[/bo]

怎么偶一开始写了个

buf dw 100d dup ('1')

就有问题?

[ 本帖最后由 zklhp 于 2008-7-3 22:49 编辑 [/it]] [/quote]


13C6:0000  24 13 24 00 31 00 31 00-31 00 31 00 31 00 31 00   $.$.1.1.1.1.1.1.
13C6:0010  31 00 31 00 31 00 31 00-31 00 31 00 31 00 31 00   1.1.1.1.1.1.1.1.
13C6:0020  31 00 31 00 31 00 31 00-31 00 31 00 31 00 31 00   1.1.1.1.1.1.1.1.
13C6:0030  31 00 31 00 31 00 31 00-31 00 31 00 31 00 31 00   1.1.1.1.1.1.1.1.
13C6:0040  31 00 31 00 31 00 31 00-31 00 31 00 31 00 31 00   1.1.1.1.1.1.1.1.
13C6:0050  31 00 31 00 31 00 31 00-31 00 31 00 31 00 31 00   1.1.1.1.1.1.1.1.
13C6:0060  31 00 31 00 31 00 31 00-31 00 31 00 31 00 31 00   1.1.1.1.1.1.1.1.
13C6:0070  31 00 31 00 31 00 31 00-31 00 31 00 31 00 31 00   1.1.1.1.1.1.1.1.

郁闷………………

'1' == 49d
4900d == 1324h

高高低低正好是  '$'

555555555

页: [1]

编程论坛