1.计算 1+2+3+...+n=? 其中n通过键盘输入,累加和小于2^16。
assume ds:data,cs:code data segment inf1 db "Please input a number (0-65535):$" ibuf db 7,0,6 dup (?) obuf db 6 dup(?) inf2 db 0ah,0dh,"1+2+...+n=$" data ends code segment start: TenTo2 macro local again mov dx,offset inf1 mov ah,09h int 21h mov dx,offset ibuf mov ah,0ah int 21h mov cl,ibuf+1 mov ch,0 mov si,offset ibuf+2 mov ax,0 again: mov dx,10 mul dx and byte ptr [si],0fh add al,[si] adc ah,0 inc si loop again endm TwoTo10 macro local loop1 mov bx,offset obuf+5 mov byte ptr [bx],'$' mov cx,10 loop1: mov dx,0 div cx add dl,30h dec bx mov [bx],dl or ax,ax jnz loop1 mov dx,bx mov ah,09h int 21h endm ;;;;;;;;;;;;;;;;;;;Begin;;;;;;;;;;;;;;;;;;;;;; mov ax,data mov ds,ax TenTo2 mov cx,ax mov ax,0 mov bx,1 loop2: add ax,bx inc bx loop loop2 push ax mov dx,offset inf2 mov ah,09h int 21h pop ax TwoTo10 mov ah,4ch int 21h code ends end start