汇编扫盲帖

本文是一篇关于汇编语言的基础教程,旨在帮助初学者入门。文章首先通过实例介绍了汇编语言的基本语句,如`mov`、`sub`和`add`,并讲解了段定义、变量声明和中断调用。接着,作者讨论了`mov`指令的细节和分支程序的概念,包括`cmp`指令和各种条件跳转指令。最后,通过两个实际的程序例子,阐述了如何处理键盘输入、数据存储以及计算绝对值,进一步巩固了汇编语言的基本操作。
摘要由CSDN通过智能技术生成
写这个帖子目的只是让没有入门的同学入个门,其实我的汇编技术很差的,很多我也不清楚,我把我知道得写写吧,来这么久了几乎没怎么发过原创的帖子,惭愧! 
开始正题
一,汇编常用的基本的语句

我们不从语句讲起,先看个例子。
code segment
assume cs:code
in db ? 定义变量in
begin:
mov ah 01
int 21h 调用dos中断,此中断的作用:从键盘读入一个数ascii,存入al中
sub al,30 将ascii码-30,存入bl
mov bl,al
mov ah,01 读入第2个字符
int 21h
sub al,30
add al, bl al的内容+bl的内容
mov in, al 把al的内容放到变量in 中
mov ah,4ch
int 21h 这两条语句是调用dos中断,作用: 停机,一般用于程序末尾
code ends
end begin


讲解:

mov : 数据搬移指令,
格式: mov 目标操作数 原操作数。
把原操作数的内容放到立即操作数中。
这个mov很有学问的,下一篇专门讲解这个mov指令,高手见了不要见笑。

sub : 减法指令
格式: sub d,s
d-s并把结果放在d里面,也就是d=d-s

add: 加法指令
格式: add d,s
跟sub差不多,d=d+s


关于汇编语言的格式,(dos下)

code segment 
assume ......
定义变量.......
begin:
.......
code ends
end begin

segment和ends必须成对出现,segment 和ends间为段体,格式:
段名 segment [定位类型][组合类型][‘类别’]
。。。。。。。。。。
段名 ends

assume 伪指令的作用是告诉汇编程序,有关段寄存器将被设定为内存中哪一个段的地址寄存器,而其中段地址值的真正装入还必须通过给段寄存器赋值的执行性指令来完成。

说说定义变量
举几个例子:
num dw 12 定义一个名为num的dw型的变量,值为12
abc db 10 定义一个名为abc的db型的变量,值为10
worker dd 1123 定义一个名为worker的dd型的变量,值为1123

db:字节变量
dw:字变量,(一个字等于2字节)
dd:双字变量
dq:4字
dt:10字


好累了,明天还要上机械设计课和软件基础,能不能去就看天意了,(练健身全身痛)
最后说说中断调用
通常汇编中的输入输出有两条指令联合描绘:
mov ah,01
int 21h
其中第二条叫做系统调用,ah=1说明调用的是1号功能,此中断作用是从键盘读入一个数ascii,存入al中,(注意我没写错,是存入al中)

让我们开始把。上次用一个例子给大家一个模糊的概念,可能你并不是完全明白那个例子的来龙去脉,这没有关系,有个认识就可以了,
我觉得学习汇编最大的障碍是 书上的教法不适合初学者,即使是有基础的人学起来也有点迷糊,既然是编成当然要从实际入手,这次开始我们来一个例子热身,和上次那个差不多
=========================================================================
;目的:将键盘输入的多字符(注意是多字符)保存到由若干个存储单元组成的变量inbuf中,以回车结束。
code segment
assume cs:code 由于没有声明变量,不需要设置数据段
start: mov bx,00h
again: mov ah,01h 调用中断,作用不用说了吧,键入一个字符将ascii到al(注意是一个字符)
int 21h
cmp al,0dh 如果al中的值是
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值