汇编语言程序设计 编写程序计算1+2+......+100。以16进制数显示应该怎么写啊

如题所述

;以前给别人写过的1-100相加,10进制输出,只是那人拿了答案就跑了,也不给采纳。
;稍微改一下,增加16进制输出
;sum 1-100
data segment
    result dw 0
    msg db 'sum (1-100) is:$'
    lf  db 0dh, 0ah, '$'
    atab db '0123456789ABCDEF'
data ends
 
code segment
  assume cs:code, ds:data
start:
  mov ax, data
    mov ds, ax
 
  mov cx, 100
    xor ax, ax
L1:
  add ax, cx
    loop L1
 
  mov result, ax
 
  lea dx, msg
    mov ah,9
    int 21h
 
  mov ax,result
  call printHex
 
  lea dx,lf
    mov ah,9
    int 21h
 
  mov ah,4ch
    int 21h

;print the value in AX with base 16
printHex proc near
   lea bx, atab
   mov dx, ax
   mov cx,4
   mov ah, 0eh
R1:
   rol dx, 4
   mov al, dl
   and al, 0Fh
   xlat
   int 10h
   loop R1
   ret
printHex endp

print proc near
  mov cx,0
    mov bx,10
Q0:
  xor dx, dx
    div bx
    xor dx,0e30h
    push dx
    inc cx
    cmp ax, 0
    jnz Q0
Q1:
  pop ax
    int 10h
    loop Q1
    ret
print endp
code ends
    end start

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-06-22
我手上恰好有这样的一份文档,
相似回答