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
目录
相关文章
|
2月前
|
语音技术 Python
语音识别,continue和break的使用,循环综合案例,完成发工资案例,函数的初体验,len()是内置好的函数,def 函数名 def xxx(),函数的定义 def xxx() ,调用函数
语音识别,continue和break的使用,循环综合案例,完成发工资案例,函数的初体验,len()是内置好的函数,def 函数名 def xxx(),函数的定义 def xxx() ,调用函数
|
3月前
call()与apply()的作用与区别?
call()与apply()的作用与区别?
|
4月前
call()与apply()的作用与区别
call()与apply()的作用与区别
23 1
|
9月前
|
编译器 C语言
__builtin_return_address()函数的使用方法
__builtin_return_address()函数的使用方法
120 1
|
Web App开发 C语言
分析 chrome 源码中 WARN_UNUSED_RESULT 宏
问题 今天浏览 chrome 源码时,发现了一个非常有意思的宏定义,它就是 WARN_UNUSED_RESULT ,用法如下图所示:
371 0
|
Go 索引
Go基础:range、循环控制Goto、Break、Continue
Go基础:range、循环控制Goto、Break、Continue
267 0
C++ add()函数的四种实现方式
C++ add()函数的四种实现方式
1126 0
|
C语言
exit(0)与exit(1),return三者区别(详解)
exit(0):正常运行程序并退出程序; exit(1):非正常运行导致退出程序; return():返回函数,若在主函数中,则会退出函数并返回一值。 详细说:   1. return返回函数值,是关键字;  exit 是一个函数。
1362 0