注册 登录
编程论坛 汇编论坛

汇编写1+2+3+```````````+1000

Love嵌入式 发布于 2008-06-29 20:33, 1445 次点击
请问高手们如何处理它的越界问题啊?
给点提示吧。
16位寄存器不能容纳结果啊!!
4 回复
#2
Love嵌入式2008-07-04 11:47
data segment
  s dw 2 DUP(0)
  sum dw 3 DUP(?)
  jia dw 50 DUP(?)
  n dw 0
data ends

code segment
  assume cs:code,ds:data
 main proc far
  start: mov ax,data
         mov ds,ax
         mov ax,0
         mov bx,0
         mov di,offset jia
         mov dx,0
         mov cx,1000
         mov si,0
         mov [di],86a0h
         mov [di+2],0001h
         
  again: inc bx
         add ax,bx
         add si,bx
         jc aa
         loop again
         mov s,ax
         mov s+2,dx
         mov ah,4ch
         int 21h
         
     aa: inc dx
         loop again
         mov s,ax
         mov s+2,dx
         mov ah,4ch
       int 21h
 main endp         
code ends
      end start                  


以上代码在存储器里是以十六进制存的。请问如何输出他的十进制结果呢?

[[it] 本帖最后由 Love嵌入式 于 2008-7-4 11:51 编辑 [/it]]
#3
zgj_1232008-07-04 18:49
使用代码调整指令啊?大概是aaa    BCD码调整指令
#4
zklhp2008-07-05 16:33
[bo][un]Love嵌入式[/un] 在 2008-6-29 20:33 的发言:[/bo]

请问高手们如何处理它的越界问题啊?
给点提示吧。
16位寄存器不能容纳结果啊!!

用32位的寄存器

要不放到内存里
#5
Waiting1592008-07-11 13:10
assume cs:code

code segment

start:    mov cx,1000
    mov ax,0
    mov bx,0
    mov dx,1

s:    add ax,dx
    adc bx,0
    inc dx
    loop s

    mov ax,4c00h
    int 21h

code ends

end start
1