background image

main    proc    far
        mov     ax,s1             ;栈初始化——
        mov     ss,ax
        lea     sp,top

  ;——栈初始化

        mov     ax,s2             ;数据段初始化——
        mov     ds,ax

  ;——数据段初始化

        mov     si,15
l:      mov     dl,s[si]   ;dl 获取字符串 s 的最后一个(从零开始的第十五个字符)
        mov     ah,2

  ;调用 int 21h 2 号功能输出 dl 上的值

        int     21h
        dec     si                ;寄存器减一,准备获取下一个字符
        cmp     si,0
        ja      l
        mov     ah,4ch            ;终止
        int     21h
main    endp
s3      ends
        end     main

2.从键盘上输入两个数,分别放到 x,y 单元,求出它们的和

s1      segment stack
        dw      100h    dup(?)
top     label   word
s1      ends

s2      segment
h1      db      'Please input x:','$'   ;提示输入
h2      db      'Please input y:','$'   ;提示输入
h3      db       'z=x+y:','$'           ;提示输出
crlf    db      0dh,0ah,24h             ;定义回车换行
x       dw      ?
y       dw      ?
s2      ends

s3      segment
        assume  cs:s3,ds:s2,ss:s3
main    proc    far
        mov     ax,s1        ;初始化

——

        mov     ss,ax
        lea     sp,top
        mov     ax,s2