zoukankan      html  css  js  c++  java
  • 汇编第二日

    显存中某区域改变,显示器便会在对应区域改变

    出入栈以为单位,  push al  错误

    pop ax把栈顶数据赋值给寄存器

    pop [0]把栈顶数据赋值到ds:[0]

    push到栈中,高位数据对应高位地址,低位数据对应低位地址

    ss存放栈顶数据的段地址,sp存放栈顶的偏移地址,任意时刻ss:sp指向栈顶元素

    操作分成两步完成:

    push:sp = sp - 2;  mov ss:sp, xxx;

    pop: mov XXX, ss:sp;sp = sp+2;

    图示:

    注意:

    当栈为空时,SS:SP为1000F+1 = 10010,这样push时,经过SP+=2,SS:SP会跳到1000EH

    SS像DS一样可以用寄存器赋值,但是段寄存器中CS以及IP寄存器只能通过jmp指令来改变值:

    mov ax, xxx

    mov ss, ax

    mov sp, XXX

    将ax清零:

    1.mov ax, 0   机器指令占了三个存储单元

    2.sub ax, ax  机器指令占了两个存储单元

    3.xor ax, ax

    可以用栈存储以后需要恢复的寄存器内容

    i386 32位栈的使用:

    CPU只认ss:sp指向的地方就是栈段,但是把内存当作栈段只是我们编程时的一种安排。

    进程P2调用P1进程,P1进程结束返回到P2进程,使用mov ax,4c00Hint 21H

    链接作用:

    1.当源程序很大,多个.c文件时,汇编/编译后对应多个.o文件,通过链接将它们链接成可执行文件

    2.程序中调用某库文件中函数时(stdio.h中print),须将库文件和.o文件链接到一起

    3.本身.o文件中机器码也不能直接升成可执行文件

    用户使用shell来操作计算机系统工作,达到人机交互,只要是人与电脑之间交互的接口,就可以称为 Shell

    标号:程序入口地址

    assum cs:xxx

    xxx segment

    XXX(标号):

           assembly code

    xxx ends

    end XXX(标号)

     程序加载进内存后

    cs和ds会有个差值,将cs和ds的值化到物理地址,两者差值大小为256byte,该区域作为PSP(为了调用进程和被调用进程通信)

     

       Done!!!

  • 相关阅读:
    激活win10系统的方法(亲测)
    java使用jxl,自动导出数据excle,quartz自动发送邮件
    java对接网银支付案例
    将数字转换成Excel表头格式的字母序号
    mysql date_add日期函数的使用
    itext A4纸张横向创建PDF
    Spring 定时器 定时访问数据库并发送邮件
    mvc路由报错
    eval()和$.parseJSON()注意事项
    跨域学习笔记
  • 原文地址:https://www.cnblogs.com/chaunceyctx/p/7270825.html
Copyright © 2011-2022 走看看