【汇编语言】3.汇编语言程序
文章目录
- 用汇编语言编写源程序
- 由源程序到程序运行
- 运行与跟踪
- Loop指令
- 段前缀
- 在代码段中使用数据
- 在代码段中使用栈
- 将数据、代码、栈放入不同段
用汇编语言编写源程序
- 一些简介
- 源文件怎么写
1.与debug直写区别
2.区分三段的写法
3.注释的写法
由源程序到程序运行
- 运行文件
- 新建p4-1.asm文件于masm文件夹中
- 用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.汇编语言程序相关推荐
- 计算机能不能直接识别汇编语言程序,计算机能直接识别执行用汇编语言编写的程序吗...
不能.用汇编语言编写的程序,计算机是不能直接识别和执行的:必须先把汇编语言源程序翻译成机器语言程序(即目标程序),然后才能被执行.当目标程序被安置在内存的预定位置上后,就能被计算机的CPU处理和执行. ...
- 用计算机语言编写累加程序,用汇编语言实现如下程序:进行自然数相加(1+2+3... 汇编语言 编写程序实现自然数1到100的累加。要求用......
导航:网站首页 > 用汇编语言实现如下程序:进行自然数相加(1+2+3... 汇编语言 编写程序实现自然数1到100的累加.要求用... 用汇编语言实现如下程序:进行自然数相加(1+2+3... ...
- 用汇编语言写一个程序,它先接收一个字符串,然后显示其中数字符的个数、英文字母的个数和字符串的长度
## 用汇编语言写一个程序,它先接收一个字符串,然后显示其中数字符的个数.英文字母的个数和字符串的长度 DATAS SEGMENT str1 db 0dh,0ah,'please enter a st ...
- linux 汇编 cmp,使用汇编语言编写C程序的函数
我必须实现应该是原子操作的set_bit函数.我在linux源代码中发现了这个汇编代码. (我正在使用sparc),并希望将其更改为可在C程序中使用的函数.使用汇编语言编写C程序的函数 static ...
- c汇编语言例题,汇编语言例题分析.doc
汇编语言例题分析 汇编语言例题分析 <汇编语言程序设计>练习题 作者名:不详 来源:网友提供 06年6月8日 一.基本概念 1.8088/8086CPU内部寄存器有______个 ,其中的 ...
- ARM汇编语言中的程序结构
在 ARM ( Thumb )汇编语言程序中,以程序段为单位组织代码.段是相对独立的指令或数据序列,具有特定的名称.段可以分为代码段和数据段,代码段的内容为执行代码,数据段存放代码运行时需要用到的数据 ...
- c语言延时100us程序,编写100MS软件延时程序 汇编语言编写延时程序
怎么编写单片机晶振为6MHz,编写100ms延时程序? 设主频12MHz的51单片机,编一个100ms二重循环的延时程序如下,供参考. 其它汇编可以类似编程. SSSS:MOV R0,#99:本指令是 ...
- 汇编语言——《汇编语言程序的上机过程》实验报告
实验目的 1.掌握汇编语言程序的上机步骤 (1 )用编辑程序(如EDIT.记事本等)编辑汇编语言源程序(建立.ASM文件) (2 )用MASM程序产生OBJ文件 (3 )用LINK程序产生EXE文件 ...
- keil4在C51中嵌入汇编语言,KEIL C51程序中如何嵌入汇编
P1=0x00; #pragma asm MOV R3,#08H DJNZ R3,$ #pragma endasm P1=0xff; } void delay(void) { #prag ...
- 图解在emu8086中学习汇编语言数字比较程序
打开emu8086,运行自带实例,数字比较程序:运行情况如下: 程序如下: 此示例,前面是些cmp语句的用法示例:正式程序从 game: 标号开始:程序结构如下: msg1 定义字符串,提示用户输入一 ...
最新文章
- SPOJ375(树链剖分)
- python之路---装饰器函数
- 项目范围管理:项目范围控制
- 实验1 Windows汇编语言开发环境
- 【C语言】练习5-8
- popwindow+动画
- xx学OD -- 内存断点(上)
- 英特尔:我们解决VR体验所需的强大计算量
- nyoj 题目20 吝啬的国度
- 修改 Ubuntu SSH 登录后的欢迎信息
- web developer tips (71): 关于FastCGI 1.5beta几个新配置设置
- 《信号与系统学习笔记》—周期信号的博里叶级数表示(二)
- 最好用的资源管理器软件——Directory Opus
- R语言进行数据分组聚合统计变换(Aggregating transforms)、计算dataframe数据的分组四分位距(IQR)
- 倒计时7天丨2022全球边缘计算大会深圳站参会指南来啦!
- 动态电压恢复器(DVR)模型 Matlab/simulink
- rip/eip/rbp/ebp
- 新型冠状病毒实时动态
- Java 使用Reactive Redis
- python 小说分析_Python自然语言用金庸的武侠小说做分析和处理