文章目录

  • 用汇编语言编写源程序
  • 由源程序到程序运行
  • 运行与跟踪
  • Loop指令
  • 段前缀
  • 在代码段中使用数据
  • 在代码段中使用栈
  • 将数据、代码、栈放入不同段

用汇编语言编写源程序


  • 一些简介


  • 源文件怎么写

1.与debug直写区别
2.区分三段的写法
3.注释的写法


由源程序到程序运行


  • 运行文件
  1. 新建p4-1.asm文件于masm文件夹中
  2. 用editor打开新建文件
assume cs:codesg
codesg segmentmov ax,0123hmov bx,0456hadd ax,bxadd ax,axmov ax,4c00hint 21h
codesg ends
end

输出为0错误和警告,且生成OBJ文件在,则成功

  • 连接link

对于小的程序,会提示no srack segment没有栈段

  • 在末尾加分号会简化过程

  • 直接输入程序名,无显示

原因:

运行与跟踪


  • 进入p4-1文件


g命令还可以指定执行,格式:g+cs:ip

  • [ ]与( )


自己遮住答案多做几遍

inc 就是+1

Loop指令


  • 正确输出

  • 自己输出

loop失效,莫名原因语法错误

段前缀


  • 计算ffff:0~ffff:b字节单元中的数据的和,结果存储在dx中

  • 将内存ffff:0~ ffff:b中的数据拷贝到0:200~ 0:20b单元中

  • 初始方案
;初始方案
assume cs:code
code segmentmov bx,0mov cx,12s:mov ax,0ffffhmov ds,axmov dl,[bx]mov ax,0020hmov ds,axmov [bx],dlinc bxloop smov ax,4c00hint 21h
code ends
end

  • 使用附加段寄存器
;初始方案
assume cs:code
code segmentmov ax,0ffffhmov ds,axmov ax,0020hmov es,axmov bx,0mov cx,12s:mov dl,[bx]mov es:[bx],dlinc bxloop smov ax,4c00hint 21h
code ends
end

在代码段中使用数据

原因:

使用问题:


改进:


在代码段中使用栈


push;入栈。数据到栈底
pop:出栈。数据放栈顶

assume cs:codesg
codesg segmentdw 0123h,0456h,0789h,0abch,0defh,0cbah,0987h  dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0   ;用来做栈段的
start:mov ax,csmov ss,ax   ;ss作为栈顶mov sp,30h  ;sp作为栈底;入栈mov bx,0mov cx,8s:push cs:[bx]add bx,2loop s;出栈mov bx,0mov cx,8s0:pop cs:[bx]add bx,2loop s0mov ax,4c00hint 21h
codesg ends
end

将数据、代码、栈放入不同段


疑问:出栈过程不是很懂

【汇编语言】3.汇编语言程序相关推荐

  1. 计算机能不能直接识别汇编语言程序,计算机能直接识别执行用汇编语言编写的程序吗...

    不能.用汇编语言编写的程序,计算机是不能直接识别和执行的:必须先把汇编语言源程序翻译成机器语言程序(即目标程序),然后才能被执行.当目标程序被安置在内存的预定位置上后,就能被计算机的CPU处理和执行. ...

  2. 用计算机语言编写累加程序,用汇编语言实现如下程序:进行自然数相加(1+2+3... 汇编语言 编写程序实现自然数1到100的累加。要求用......

    导航:网站首页 > 用汇编语言实现如下程序:进行自然数相加(1+2+3... 汇编语言 编写程序实现自然数1到100的累加.要求用... 用汇编语言实现如下程序:进行自然数相加(1+2+3... ...

  3. 用汇编语言写一个程序,它先接收一个字符串,然后显示其中数字符的个数、英文字母的个数和字符串的长度

    ## 用汇编语言写一个程序,它先接收一个字符串,然后显示其中数字符的个数.英文字母的个数和字符串的长度 DATAS SEGMENT str1 db 0dh,0ah,'please enter a st ...

  4. linux 汇编 cmp,使用汇编语言编写C程序的函数

    我必须实现应该是原子操作的set_bit函数.我在linux源代码中发现了这个汇编代码. (我正在使用sparc),并希望将其更改为可在C程序中使用的函数.使用汇编语言编写C程序的函数 static ...

  5. c汇编语言例题,汇编语言例题分析.doc

    汇编语言例题分析 汇编语言例题分析 <汇编语言程序设计>练习题 作者名:不详 来源:网友提供 06年6月8日 一.基本概念 1.8088/8086CPU内部寄存器有______个 ,其中的 ...

  6. ARM汇编语言中的程序结构

    在 ARM ( Thumb )汇编语言程序中,以程序段为单位组织代码.段是相对独立的指令或数据序列,具有特定的名称.段可以分为代码段和数据段,代码段的内容为执行代码,数据段存放代码运行时需要用到的数据 ...

  7. c语言延时100us程序,编写100MS软件延时程序 汇编语言编写延时程序

    怎么编写单片机晶振为6MHz,编写100ms延时程序? 设主频12MHz的51单片机,编一个100ms二重循环的延时程序如下,供参考. 其它汇编可以类似编程. SSSS:MOV R0,#99:本指令是 ...

  8. 汇编语言——《汇编语言程序的上机过程》实验报告

    实验目的 1.掌握汇编语言程序的上机步骤 (1 )用编辑程序(如EDIT.记事本等)编辑汇编语言源程序(建立.ASM文件) (2 )用MASM程序产生OBJ文件 (3 )用LINK程序产生EXE文件 ...

  9. keil4在C51中嵌入汇编语言,KEIL C51程序中如何嵌入汇编

    P1=0x00; #pragma asm MOV     R3,#08H DJNZ    R3,$ #pragma endasm P1=0xff; } void delay(void) { #prag ...

  10. 图解在emu8086中学习汇编语言数字比较程序

    打开emu8086,运行自带实例,数字比较程序:运行情况如下: 程序如下: 此示例,前面是些cmp语句的用法示例:正式程序从 game: 标号开始:程序结构如下: msg1 定义字符串,提示用户输入一 ...

最新文章

  1. SPOJ375(树链剖分)
  2. python之路---装饰器函数
  3. 项目范围管理:项目范围控制
  4. 实验1 Windows汇编语言开发环境
  5. 【C语言】练习5-8
  6. popwindow+动画
  7. xx学OD -- 内存断点(上)
  8. 英特尔:我们解决VR体验所需的强大计算量
  9. nyoj 题目20 吝啬的国度
  10. 修改 Ubuntu SSH 登录后的欢迎信息
  11. web developer tips (71): 关于FastCGI 1.5beta几个新配置设置
  12. 《信号与系统学习笔记》—周期信号的博里叶级数表示(二)
  13. 最好用的资源管理器软件——Directory Opus
  14. R语言进行数据分组聚合统计变换(Aggregating transforms)、计算dataframe数据的分组四分位距(IQR)
  15. 倒计时7天丨2022全球边缘计算大会深圳站参会指南来啦!
  16. 动态电压恢复器(DVR)模型 Matlab/simulink
  17. rip/eip/rbp/ebp
  18. 新型冠状病毒实时动态
  19. Java 使用Reactive Redis
  20. python 小说分析_Python自然语言用金庸的武侠小说做分析和处理

热门文章

  1. Java中violate关键字详解(2)?真正了解violate
  2. 浅谈IT企业人力资源流失现状与对策
  3. 苹果耳机airpods2需要激活?_苹果耳机三兄弟,谁才是安卓手机的绝配?
  4. uvc摄像头代码解析5
  5. python怎么画长方形_python怎么画矩形
  6. Python Web简介
  7. 推荐一款国产ECG心电芯片
  8. Windows下配置PHP环境
  9. 史上最全Nginx配置优化
  10. Java按钮监听器ActionListener 事件监听教程.