call 和 ret 的配合使用(1002)

本文为《汇编语言程序设计》1002小节例程。点击链接…进课程主页。

功能:计算2的N次方,计算前,N的值由CX提供。


;(下面的程序逻辑上正确,但存在严重错误!)
assume cs:code
code segment
start: mov ax,1
       mov cx,3
       call s
       mov bx,ax 
       mov ax,4c00h
       int 21h
    s: add ax,ax
       loop s
       ret
code ends
end start

下面是正确的程序

; 要设置栈段,以便于call和ret指令使用
assume cs:code, ss:stack
stack segment
       db  8 dup (0)
       db  8 dup (0)
stack ends
code segment
start: mov ax,stack       
       mov ss,ax
       mov sp,16
       mov ax,1000
       call s 
       mov ax,4c00h
       int 21h 
    s: add ax,ax 
       ret
code ends
end start
上一篇:U盘启动分区格式由FAT32格式转换为NTFS格式


下一篇:centos 7安装和使用redis,授权远程连接(★firecat推荐★)(一)