Skip to content

tamlovincy/asm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 

Repository files navigation

汇编DOS-BOX操作指令
  • 在dosbox中输入debug进入debug模式
  • r:查看寄存器值
  • r cs:修改代码段寄存器值
  • r ip:修改偏移地址值
  • t:执行当前cs:ip指向的指令
  • d 1000:0-查看段地址1000,偏移地址0000指向的内存的内容
  • a:向当前内存中写入汇编指令mov ax,1234
  • e 1000:0-修改段地址1000,偏移地址0000指向的内存的内容
  • u:将内存中的内容解释为汇编语言
  • CS寄存器:代码段寄存器(Code Segment),用来存放内存代码段入口基地址
  • IP寄存器:指令指针寄存器(Instruction Pointer)
  • DS寄存器:存放要访问数据的段地址-操作:通过mov bx,1000H mov ds bx来实现将数据放入ds寄存器中,从而修改为想要的段地址值
  • SS寄存器:存放栈的段地址
  • SP寄存器:存放栈的偏移地址
  • BP寄存器:基数指针寄存器BP(base pointer)是一个寄存器,它的用途有点特殊,是和堆栈指针SP联合使用的,作为SP校准使用的,只有在寻找堆栈里的数据和使用个别的寻址方式时候才能用到。比如说,堆栈中压入了很多数据或者地址,你肯定想通过SP来访问这些数据或者地址,但SP是要指向栈顶的,是不能随便乱改的,这时候你就需要使用BP,把SP的值传递给BP,通过BP来寻找堆栈里数据或者地址.一般除了保存数据外,可以作为指针寄存器用于存储器寻址,此时它默认搭配的段寄存器是SS-堆栈段寄存器.BP是16位的,再扩充16位就是EBP,用于32位编程环境的.一般高级语言的参数传递等等,转换为汇编后经常由BP/EBP来负责寻址\处理.
  • g:g 0012 执行指令到偏移地址0012h处
  • p:Debug自动重复执行loop中的指令直至(cx)=0

汇编指令

  • inc 自加
  • dec 自减
  • jcxz cx=0发生无条件跳转
  • loop cx≠0跳转到循环标号处

image-20200327234027452

image-20200328001508002

image-20200328230026899

image-20200328002336172

image-20200328225828130

image-20200328231223460

image-20200328231355282

Debug的T命令在执行修改寄存器SS的指令时,下一条指令也紧接着被执行,这是由于中断机制

image-20200329224556834

image-20200329224640651

[bx]和loop指令

  • [bx]指令

image-20200330105932021

  • loop指令

和循环有关

  • ()符号

image-20200330110323765

image-20200330110355377

image-20200330110711723

image-20200330110748322

  • 约定符号idata表示常量

image-20200330110917300

Loop指令

  • 计算2^11

image-20200330175724137

image-20200330175856799

image-20200330180012743

image-20200330180138624

image-20200330182749083

image-20200330184950615

image-20200330221727376

  • 对比汇编源程序与debug对mov ax,[1]等指令的区别

debug中mov ax,[1]指的是将ds:[1]内存的内容送进ax中,不用显式给出ds段地址

image-20200330222458986

image-20200330222734858

image-20200330222818731

  • loop和[bx]的联合应用

image-20200330223057724

image-20200330225811870

image-20200330230329878

第6章包含多个段的程序

image-20200330235932035

image-20200331000222303

image-20200331000300011

image-20200331000327232

end除了通知编译器程序结束以外,还通知编译器程序的入口子哪,用end指明程序的入口在start标号处,end start被转化为一个入口地址

image-20200331001714792

  • 多个段

image-20200331001938176

image-20200331002028462

image-20200331002052549

image-20200331002527542

第7章更灵活的定位内存地址的方法

  • and和or指令:按位与和按位或

image-20200331230850572

  • ASCII:'a'表达为61H(01100001B),'A'表达为41H(01000001B);大写字母的ASCII二进制表达的第5位上为0,小写字母第5位为1,这是大小写字母在位级表达的唯一不同的地方。可以通过and或or指令将特定的为置0或者置1来进行大小写字母的转换。
  • 以字符形式给出数据:在汇编程序中以'......'明确表达是以字符形式给出,编译器将字符形式转化为ASCII

image-20200331231526797

image-20200331231610207

  • [bx+idata]或者idata[bx]表示同一个意思

image-20200331231924749

  • 用[bx+idata]的方式可以进行数组的处理
  • SI和DI寄存器:si和di是和bx功能相近的寄存器,但是si和di不能分成两个8位寄存器来使用

下面三组指令实现了同样的功能:

image-20200331233249850

image-20200331233319341

image-20200331233352945

  • [bx+si]和[bx+di]或者[bx][si],[bx][di]

image-20200331233712605

image-20200331233748072

image-20200331233927998

  • [bx+si+idata]和[bx+di+idata]或者idata[bx][si],idata[bx][di]

image-20200331234040351

image-20200331234207567

image-20200401232648279

image-20200401232846276

第8章 数据处理的两个基本问题

image-20200401234313633

image-20200401234442869

image-20200401234520179

image-20200401234648563

image-20200401234728872

image-20200402001920451

image-20200402002018856

image-20200402002040720

image-20200402002058051

image-20200402002213750

image-20200402002149406

image-20200402002444447

image-20200416154031426

image-20200416155611402

image-20200416171716363

image-20200416171811373

image-20200416174811991

image-20200416174951747

image-20200416175236213

image-20200416175906592

image-20200416180012558

image-20200416180133673

image-20200416183023291

image-20200416203435712

image-20200416203545408

image-20200416203735810

image-20200416204244012

image-20200416205717844

image-20200416215404767

返回子程序

image-20200416221543345

image-20200416221602713

image-20200417192647215

image-20200418232249760

image-20200418232359751

image-20200418232323031

image-20200418233917351

image-20200418234706323

image-20200418235142511

image-20200419001827190

image-20200419003249047

image-20200419003215992

image-20200419003423244

image-20200419003451575

image-20200419003803613

image-20200419004003302

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published