[原创]汇编扫盲帖1

本文是汇编语言的入门教程,介绍了基本的汇编语句、变量定义、中断调用以及简单的程序示例,旨在帮助初学者理解汇编语言的基础概念。作者通过实例解析了数据搬移指令如mov、减法指令sub和加法指令add,并讲解了如何使用段定义、假设伪指令以及定义变量。此外,文章还讨论了系统调用、变量类型的定义以及简单的分支程序。
摘要由CSDN通过智能技术生成

[原创]汇编扫盲帖1 by sssa2000
    写这个帖子目的只是让没有入门的同学入个门,其实我的汇编技术很差的,很多我也不清楚,我把我知道得写写吧,来这么久了几乎没怎么发过原创的帖子,惭愧!

开始正题
一,汇编常用的基本的语句

我们不从语句讲起,先看个例子。
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中)


好了,如果大家还有什么需要,告诉我。

汇编教程2 by sssa2000

  让我们开始把。上次用一个例子给大家一个模糊的概念,可能你并不是完全明白那个例子的来龙去脉,这没有关系,有个认识就可以了,

我觉得学习汇编最大的障碍是 书上的教法不适合初学者,即使是有基础的人学起来也有点迷糊,既然是编成当然要从实际入手,这次开始我们来一个例子热身,和上次那个差不多

=========================================================================

;目的:将键盘输入的多字符(注意是多字符)保存到由若干个存储单元组成的变量inbuf中,以回车结束。

code segment

     assume cs:code         ;由于没有声明变量,不需要设置数据段

start: mov bx,00h

again: mov ah,01h           ;调用中断,作用不用说了吧,键入一个字符将ascii到al(注意是一个字符)

      

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值