zoukankan      html  css  js  c++  java
  • 汇编子程序使用

    1: 引子

    基本定义格式:

      1: far       不再相同代码段  调用: call far ptr max

      2: near    在相同代码段     调用: call max

    name proc  far|naer
    
    name endp

     操作数因子:

      1: 取数

    通用操作:
    push bp
    mov  bp,sp 
    
    1: 取第一个数 mov ax,[bp+4] '特殊 bp指向堆栈段bp
    2: 取第二个数 mov ax,[bp+6]

    基本结构:

    assume cs:code, ss:stack
    stack segment
           db  16 dup (0)
    stack ends
    code segment
    
    main proc     ;这是我们的主程序
    start: mov ax,stack
           mov ss,ax
           mov sp,16
           mov ax,1000
           call far ptr s  ;依然用s标识调用的入口
           mov ax,4c00h
           int 21h
    main endp
    
    subp proc   ;这个作为子程序
        s: add ax,ax
           ret
    subp endp
    
    code ends
    end start

    2:熟悉基本程序

    题目: 实现 MAX (int a,int b)函数 即为返回a b中的最大值

    datas segment
        a dw '1';
        b dw '2';
        res dw 0;
    datas ends
    
    stacks segment stack
        dw 100 dup(?)
    stacks ends
    
    codes segment
    assume cs:codes,ds:datas,ss:stacks
    
    main proc ; 主程序
    start:
        mov ax,datas;
        mov ds,ax;
        push a;
        push b;
        call max 
        mov sp,4;
        mov  res,ax
        mov ah,4ch;
        int 21h
    main endp
    
    max proc near ;子程序
        push bp;
        mov bp,sp;
        mov ax,[bp+4]
        mov bx,[bp+6]
        cmp ax,bx
        jg let
        mov ax,bx;
        let:
        pop bp
        ret 0
    max endp    
    codes ends
    end start

  • 相关阅读:
    Linux系统格式化磁盘+挂载分区
    ELK日志处理
    memcached安装+绑定访问ip
    Redis安装+密码认证
    linux安全
    Mysql备份与恢复
    MySql binlog
    gitlab自动备份
    Rabbitmq安装与配置
    Hadoop实战-Flume之Source interceptor(十一)(2017-05-16 22:40)
  • 原文地址:https://www.cnblogs.com/dgwblog/p/11914092.html
Copyright © 2011-2022 走看看