吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5465|回复: 12
收起左侧

[其他转载] 【笔记】汇编基础源码详解与debug调试

[复制链接]
嵌入式.h 发表于 2017-8-23 15:16

[Asm] 纯文本查看 复制代码
ASSUME CS:HIKE, DS:AMY, SS:AMI;假设代码段,数据段,栈段
AMY SEGMENT;数据段开始
    DW 1111H,2222H,3333H,4444H,5555H,6666H,7777H,8888H;define word 定义了8个字型数据
AMY ENDS;数据段结束
AMI SEGMENT;栈段开始
    DW 0,0,0,0,0,0,0,0;define word定义8个字型数据、等于16个字节的栈空间
AMI ENDS;栈段结束
HIKE SEGMENT;代码段开始
START:MOV AX,AMI;把栈段放入通用寄存器,这里start是程序入口标记
      MOV SS,AX;SS指向栈段、段寄存器只能通过寄存器赋值,不能直接赋值
	  MOV SP,16;设置栈顶位置、我们总共定义8个字型数据(占用16个内存单元)从0~15、所以栈顶在16(十进制)位置(16进制为10H)
	  MOV BX,0;设置偏移地址为0;
	  MOV CX,8;循环8次、(基础知识,cx作为通用寄存器、经常用来存放计数值、与LOOP有密切的关系)
	  MOV AX,AMY;把数据段传入通用寄存器
	  MOV DS,AX;段地址指向数据段
    S:PUSH [BX];数据入栈
	  ADD BX,2;偏移地址+2、一个字型数据是两个字节、内存单元是以字节为一个单位、入栈一个数据后偏移地址+2
	  LOOP S ;cx-1、跳到s标记地址继续执行、cx=0、循环完成程序向下继续执行
	  MOV CX,8 ;循环次数
	  MOV BX,0;内存偏移归零
   S1:POP DS:[BX];数据出栈到内存单元
      ADD BX,2;偏移地址递增2个内存单元
	  LOOP S1;循环8次cx为0、出栈结束、
	  MOV AX,4C00H;程序返回
	  INT 21H;
HIKE  ENDS;代码段结束
      END START ;程序结束	  



系统分配的数据段、和栈段位置

系统分配的数据段、和栈段位置


  

数据入栈

数据入栈



出栈

出栈


本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

花生土豆 发表于 2017-8-23 15:26
崇拜大神,我才开始学,学习学习
飞天蜗牛 发表于 2017-8-23 18:38
风予 发表于 2017-8-24 19:55
a46213599 发表于 2017-9-26 20:49
才开始学,学习学习
ljs999 发表于 2017-9-29 20:52
请问这个是看的什么教程啊
 楼主| 嵌入式.h 发表于 2017-9-30 08:33
ljs999 发表于 2017-9-29 20:52
请问这个是看的什么教程啊

看书《汇编语言》
ljs999 发表于 2017-10-1 00:28
谢谢,厉害了
xhlshlllll 发表于 2017-11-17 23:44
汇编新手  希望大佬有资料多多分享
micanswer 发表于 2018-11-22 02:43
汇编新手  感谢分享~
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 22:22

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表