学习16位DOS汇编笔记

原创 2016年08月29日 21:01:14
ax       //是16位的寄存器,最大可以存65535
ah,al  //是8位的寄存器,最大可以存255

cs:ip  //指向程序下一条执行的指令
ds     //数据段寄存器
ss     //栈段寄存器
sp     //栈顶指针

物理地址=段地址*16(十进制)+偏移地址
物理地址=段地址*10(十六进制)+偏移地址
物理地址20030 段地址2000 偏移地址30

Debug的常用命令
r //查看和修改寄存器
d //查看内存
e //修改内存
u //反汇编
t //单步执行
a //写汇编指令
g //相当直接运行
p //执行完返回

jmp 2000:0030  //相当于mov cs,2000;mov ip,0030,但不能直接给段寄存器传数据

//计算2的n次方
2000:0000 mov ax,1
2000:0003 add ax,ax
2000:0005 jmp 2000:0003


//查看rom的刷写时间,但是无法修改
-d fff0:0000 ff


//ds段寄存器不能直接传递数据,可以通过寄存器来传递
mov bx,1000
mov ds,bx
mov al,[0]
mov [10],al

//压栈和出栈,一个栈的最大是0-ffffh,64KB
mov ax,1000H
mov ss,ax
mov sp,ffea
push ax  //sp减2
push bx  //sp减2
pop ax   //sp加2
pop bx   //sp加2

//
mov bx,0100h
mov ax,[bx] //将0100地址的数据传递给ax
mov [bx],ax //将ax的数据传递给bx指向的地址

mov ax,ds:[0]  //MASM32 汇编里的表示


//and指令

mov al,01100011b

and al, 00111011b  ;将操作对象的相应位设为0, 其他位不变

结果 00100011b


//or指令

mov al, 01100011b

or  al,   00111011b   ;将操作对象的相应位设为1,其他位不变

结果     01111011b


// bx=61h, 一个字母, 不管它原来是大写还是小写, 将它的二进制第5位置0,  肯定就是大写字母了, and al, 11011111h

mov al,[bx]

and al,dfh  ;转换成大小'A'   41H

mov [bx],al


mov al, [5+bx]    ; 指明一个内存单元

si和di寄存器和ax,bx类似, 只是不能拆分为两个8位寄存器

//各种寻址方式
[idata]
[bx]
[bx+idata]
[bx+si]
[bx+si+idata]
只有bx, si, di, bp这四个寄存器可以进行寻址


db 重复的次数 dup (重复的字节型数据)

dw 重复的次数 dup (重复的字型数据)

dd 重复的次数 dup (重复的双字型数据)


db 3 dup (0)

db 3 dup (0,1,2)

db 3 dup('abc', 'ABC')


dos和其他合法的程序一般不会使用0:200-0:2ff(00200-002ff)这256个字节的空间


待续......

版权声明:本文为博主原创文章,未经博主允许不得转载。

16位汇编语言寄存器及指令整理

16位微机汇编语言寄存器及指令
  • a_1054280044
  • a_1054280044
  • 2016年06月17日 13:37
  • 1874

MASM 16位汇编程序几种典型的格式

最近要做一个汇编课程设计
  • cyuyanlearner
  • cyuyanlearner
  • 2014年07月04日 20:37
  • 1486

汇编16位部分学习总结!

    今天把汇编16位部分学完了,随着学习的深入,似乎找到了我学习汇编想知道的答案,但还并不完整.    基础的指令,DOS调用,BIOS中断就不多说了,我的BLOG中有一篇响应的中断一览表,大家有...
  • likexin
  • likexin
  • 2007年05月03日 20:10
  • 2261

Dos汇编的简单输入输出.

Dos汇编中的输入输入通常是用中断来实现的。通常汇编教程都是把中断放到后面讲解的。这样编排虽然很科学,但是刚开始学汇编的时候会感觉艰难苦恨,程序的运行结果只能用debug查看,还不能人机交互。 这里列...
  • a1193561652
  • a1193561652
  • 2015年01月01日 23:37
  • 2021

64位机运行16位汇编的方法

  • 2013年05月16日 22:24
  • 748KB
  • 下载

文章标题 汇编 :输出12345(16位的)

.MODEL SMALL.Data .code MAIN PROC FAR MOV AX ,@Data MOV DS ,AX mov ax , 12345;将12...
  • Wang_SF2015
  • Wang_SF2015
  • 2017年07月01日 23:15
  • 109

RADASM中使用DOSBOX来运行DOS/BIOS程序(16位)

已有工程: 直接工程菜单中的工程选项中,将运行部分的设置更改为如下,注意其中的DOSBOX相关的路径为自己电脑中DOSBOX的安装路径。 还未创建工程: 在RADASM的安装目录中,将如下与运行相...
  • hkh1996
  • hkh1996
  • 2016年03月28日 12:49
  • 820

学习汇编语言时DOS环境的搭建

最近在学习“汇编语言(第2版)”,wangshuang
  • HONGJUCHEGN
  • HONGJUCHEGN
  • 2014年04月27日 12:11
  • 2096

16位汇编教材(王爽)超清-Part1

  • 2013年08月27日 14:55
  • 59.92MB
  • 下载

16位汇编智能编译环境的搭建

     16位汇编的上机有以下几步:编辑源代码,编译,链接,调试。    (1)Uedit32或者记事本等编辑源代码,保存为.asm(此处为Hello.asm)。一般选用Uedit32,因为可以语法...
  • lantianby
  • lantianby
  • 2009年04月09日 14:56
  • 707
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习16位DOS汇编笔记
举报原因:
原因补充:

(最多只允许输入30个字)