call 和 ret 的配合使用(1002)

简介: 本文为《汇编语言程序设计》1002小节例程。点击链接…进课程主页。功能:计算2的N次方,计算前,N的值由CX提供。;(下面的程序逻辑上正确,但存在严重错误!)assume cs:codecode segmentstart: mov ax,1 mov cx,3 call s mov bx,ax mov a

本文为《汇编语言程序设计》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
目录
相关文章
|
1月前
|
C#
C#学习相关系列之yield和return的区别
C#学习相关系列之yield和return的区别
|
4月前
|
编译器 C语言
__builtin_return_address()函数的使用方法
__builtin_return_address()函数的使用方法
44 1
|
9月前
End Sub 和 Exit Sub 的区别
End Sub 和 Exit Sub 的区别
85 0
End Sub 和 Exit Sub 的区别
|
9月前
|
JavaScript
return的作用
js中的函数只是实现某种功能,最终的结果需要返回给函数的调用者 函数名( ) 通过return实现的。 只要函数遇到return 就把后面的结果,返回给函数的调用者。 函数名 ( ) = return 后面的结果。
C/C++零散知识点汇总之break、continue、goto、return和exit
C/C++零散知识点汇总之break、continue、goto、return和exit
|
Go 索引
Go基础:range、循环控制Goto、Break、Continue
Go基础:range、循环控制Goto、Break、Continue
219 0