精华内容
下载资源
问答
  • 8086汇编

    2017-05-19 18:33:47
    8086汇编整理学习汇编过程中资料片段的整理,并没有很完整的注解,很零碎 8086处理器内部的8个16位的通用寄存器: AX、BX、CX、DX、SI、DI、BP、SP 其中AX,BX,CX,DX,可以拆分为两个8位的寄存器来使用分别为AH,AL,...

    8086汇编整理

    学习汇编过程中资料片段的整理,并没有很完整的注解,很零碎

    • 8086处理器内部的8个16位的通用寄存器:
      AX、BX、CX、DX、SI、DI、BP、SP
      其中AX,BX,CX,DX,可以拆分为两个8位的寄存器来使用分别为AH,AL,BH,BL,CH,CL,DH和DL
    • 为了在硬件一级提供对“段地址:偏移地址”内存访问模式的支持,处理器至少要提供两个段寄存器,分别是代码段寄存器CS和数据段寄存器DS,一旦处理器遇到一条访问内存的指令,将把DS中的数据段起始地址和指令中提供的段内偏移相加,来得到访问内存所需要的物理地址
    • 8086内部有4个段寄存器,CS是代码段寄存器,DS是数据段寄存器,ES是附加段寄存器 SS是栈段寄存器
    • IP是指令指针寄存器,只和CS一起使用,当一段代码开始执行时,CS指向代码段的起始地址,IP指向段内偏移。
    • 汇编语言对指令的大小写没有特别的要求
      -在Inter 8086为处理机的系统中,ROM占据着整个内存空间顶端的64kb,物理地址范围是0xF0000~0xFFFFF,里面固化了开机时要执行的指令。DRAM占据着较低端的640KB,地址范围为0x00000~0x9FFFF,中间的部分,分给了外围设备
    • 8086加电复位时,CS=0xFFFF,IP=0x0000,所以其取的第一条指令位于物理地址0xFFFF0,正好位于ROM中。
    • 处理器取指令执行的自然顺序是从内存的低地址往高低地址推进。
    • ROM中位于物理地址0xFFFF0的地方,通常是一个跳转指令,通过改变CS和IP的内容,使处理器从ROM中的较低地址处开始取指令执行。
    • 硬盘的第一个扇区是0面0道1扇区,或者说是0头0柱1扇区,这个扇区称为主引导扇区,如果计算机的设置是从硬盘启动,那么ROM-BIOS将读取硬盘主引导扇区的内容,将它加载到内存地址0x0000:0x7c00处,即物理地址 0x07C00,这个地址是固定的,规定!!
    • 要访问硬盘,运行中的程序必须至少向硬盘控制器提供4个参数,分别是磁头号、磁道号、扇区号、以及访问意图(读或写)
    • 硬盘的读写是以扇区为最小单位的,无论什么时候,要从硬盘读数据,或者向硬盘写数据,至少是一个扇区。
    • 8086可以访问1MB内存,其中,0x0000~9FFFF属于常规内存,由内存条提供,0xF0000~0xFFFFF由主板上的一个芯片提供,即ROM-BIOS
    • 历史原因:所有在个人计算机上使用的显卡,在加电自检之后都会把自己初始化到80*25的文本模式,在这种模式上,屏幕上可以显示25行,每行80个字符,每屏总共2000个字符。一直一来,0xB8000~0xBFFFF这段内存空间是留给显卡的。
    • 访问显存,也需要使用逻辑地址,采用”段地址:偏移地址“的形式,文本模式下显存的起始物理地址为0xB8000,这个内存单元对应于屏幕左上角的第一个字符的位置。
    • 访问内存可以使用段寄存器DS,也可以使用ES。
    • intel处理器不允许将一个立即数传送到段寄存器,只运行mov 段寄存器 ,通用寄存器 mov 段寄存器,内存单元
    • 屏幕上的每个字符对应着显存中的两个连续字节,前一个是字符的ASCII码,后面是字符的显示属性,包括字符颜色(前景色)和底色(背景色),低4位为前景色,高4位定义的是背景色
    • 关键字byte用来修饰目的操作数,指出本次传送的是以字节的方式进行的。
    • mov指令的目的操作数不允许为立即数,目的操作数和源操作数不允许同时为内存单元。
    • 要放在程序中的数据用DB指令来声明,DB的意思是声明字节,跟在它后面的操作数都占一个字节的长度。
    • DW用于声明字数据,DD用于声明双字数据,DQ用来声明四字数据。都是伪指令
    • 除法指令div:
      1. 第一种类型是用16位的二进制数除以8位的二进制数,被除数必须在寄存器AX中,必须实现传送AX寄存器里,除数可以由8位的通用寄存器或者内存单元提供。指令执行后,商在寄存器AL中,余数在寄存器AH中。
      2. 第二种类型是用32位的二进制数除以16位的二进制数,在这种情况下,因为16位的无法直接提供32位的被除数,故要求被除数的高16位在DX中,低16位在AX中。除数可以由16位的通用寄存器或者内存单元提供,指令执行后,商在AX中,余数在DX中。
    • movsb或者movsw指令:通常用于把数据从内存中的一个地方批量的传送到另一个地方,处理器将他们看成字符串。movsb的传送是以字节为传送单位的,movsw的传送是以字为单位的。
      movsb和movsw指令执行时,原始数据串的段地址由DS指定,偏移地址由SI指定,简写为DS:SI,要传送的目的地址由ES:DI指定,传送的字节数或者字数由CX指定,还分正向传送和反向传送,每次传送CX的内容自动减一
    • 8086处理器有一个特殊的寄存器,叫做标志寄存器FLAGS,第6位是ZF标志,即零标志。第10位是方向标志DF,将这一位清零或者置1,能控制movsb和movsw的传送方向。
    • 8086处理器上,如果要用寄存器来提供偏移地址,只能用BX,SI,DI,BP,不能使用其他寄存器。
    • AX是累加器,CX是计数器,DX是数据寄存器,SI是源索引寄存器,DI是目标索引寄存器
    • 可以在任何带有内存操作数的指令中使用BX,SI或者DI提供偏移地址。
    展开全文
  • 8086汇编软件 很好的模拟器,对于初学汇编的同胞们很有帮助,提供实例
  • 8086汇编dos工具

    2021-08-30 14:56:07
    8086汇编dos工具
  • 8086汇编

    2017-07-03 20:32:18
    8086汇编 masm汇编器 带图形界面
  • 8086汇编基本指令

    万次阅读 多人点赞 2018-06-14 20:01:45
    8086汇编的基本指令格式及功能,有助于刚开始学习汇编语言的同学快速上手。

    一、数据传送

    1、MOV

    • 描述:赋值指令
    • 格式:MOV    DST,SRC
    • 功能: DST <= SRC
    • 注意:①不能DST,SRC都是存储器,这也是所有双操作数指令的通用要求。

                     ② 但其中一个是段寄存器时,另一个操作数必须是数据寄存器。

                     ③不允许往CS传递数据

                     ④将立即数送存储时,要指定操作数类型。BYTE PTR ,WORD PTR, DWORD PTR

                     ⑤不影响PSW

    2、PUSH

    • 描述:入栈指令
    • 格式:PUSH SRC
    • 功能:将SRC入栈
    • 注意:①只能是对“字”操作。

    3、POP

    • 描述:出栈指令
    • 格式:POP DST
    • 功能:将栈顶元素出栈赋值给DST

    4、XCHG

    • 描述:数据交换指令
    • 格式:SCHG DST,SRC
    • 功能:将DST.SRC的值进行交换
    • 注意:①不能DST,SRC都是存储器,这也是所有双操作数指令的通用要求。

    5、IN

    • 格式:IN DST,SRC
    • 功能:从SRC端口读取一个字节/字到DST中。

    6、OUT

    • 格式:OUT  DST,SRC
    • 功能:将SRC中的数据送到DST短空中

    7、XLAT

    • 描述:取表指令
    • 格式:XLAT
    • 功能:以DS:[BX+AL]为地址提取一个字节的数据送到AL中

    8、LEA

    • 格式:LEA    REG,MEM
    • 功能:取MEM的偏移地址送到REG中。

    9、LDS 

    • 格式:LDS reg,mem
    • 功能:是把mem指向的地址,高位存放在DS中,低位存放在reg中。

    10、LES

    • 格式:LES reg,mem
    • 功能:是把mem指向的地址,高位存放在ES中,低位存放在reg中。

    11、PUSHF    

    • 格式:PUSHF
    • 功能:将PSW进栈

    12、POPF       

    • 格式:POPF
    • 功能:将栈顶元素送到PSW

    13、LAHF         

    • 格式:LAHF
    • 功能:将PSW的低八位送到AH中

    14、SAHF        

    • 格式:SAHF
    • 功能:将AH写入PSW的低八位

    二、算术

    1、ADD

    • 描述:加法指令
    • 格式:ADD    DST,SRC
    • 功能: DST <= DST+REC

    2、ADC

    • 格式:ADC    DST,SRC
    • 功能:DST <= DST + REC + CF

    3、INC

    • 格式: INC DST
    • 功能:DST <= DST + 1

    4、SUB

    • 格式:SUB    DSTSRC
    • 功能: DST <= DST - SRC

    5、SBB

    • 格式:SBB    DST,SRC
    • 功能:DST <= DST - SRC - CF

    6、DEC

    • 格式: DEC DST
    • 功能:DST <= DST - 1

    7、NEG    

    • 格式:NEG REG
    • 功能:求补,即REG中的各位取反,然后 + 1。

    8、CMP

    • 格式:CMP    DST,SRC
    • 功能:DST - REG 结果不保存,但是状态保存在PSW中。

    9、MUL

    • 描述:无符号数乘法
    • 格式:MUL  SRC
    • 功能:①字节操作:(AX) <=(AL) * (SRC)

                     ②字操作:   (DX,AX) <= (AX) *(SRC)

                     ③双字操作:(EDX,EAX) <= (EAX) *(SRC)

    10、IMUL

    • 描述:有符号数乘法
    • 格式:IMUL   SRC
    • 功能:DST <= DST * SRC

    11、DIV

    • 描述:无符号数除法
    • 格式:DIV    SRC
    • 功能:①字节操作:(AH) <= (AX)/(SRC)的余数;(AL) <= (AX)/(SRC)的商

                     ②字操作:(DX) <= (DX,AX)/(SRC)的余数;(AX) <= (DX,AX)/(SRC)的商

                     ③双字操作:(EDX) <= (EDX,EAX)/(SRC)的余数;(EAX) <= (EDX,EAX)/(SRC)的商

    12、IDIV

    • 描述:有符号数除法
    • 格式:IDIV    SRC
    • 功能:①字节操作:(AH) <= (AX)/(SRC)的余数;(AL) <= (AX)/(SRC)的商

                     ②字操作:(DX) <= (DX,AX)/(SRC)的余数;(AX) <= (DX,AX)/(SRC)的商

                     ③双字操作:(EDX) <= (EDX,EAX)/(SRC)的余数;(EAX) <= (EDX,EAX)/(SRC)的商

    13、CBW

    • 格式:CBW
    • 功能:将AL保持原值(有符号数)扩展到AX。
    • 注意:此时是将AL的值看为有符号数,根据AL的最高位(符号位)来决定AH是00H还是FFH

    14、CWD

    • 格式:CWD
    • 功能:将AX保持原值(有符号数)扩展到DX,AX。
    • 注意:此时是将AX的值看为有符号数,根据AX的最高位(符号位)来决定DX是0000H还是FFFFH

     

    三、逻辑

     

    1、AND

    • 描述:“与”逻辑运算
    • 格式:    AND    DST,SRC
    • 功能:   DST <= DST AND SRC  将DST和REG对应各位进行“与”运算后结果保留于DST

    2、OR

    • 描述:“或”逻辑运算
    • 格式:    OR   DST,SRC
    • 功能:   DST <= DST OR SRC   将DST和REG对应各位进行“或”运算后结果保留于DST

    3、NOT

    • 描述:“非”逻辑运算
    • 格式:  NOT    DST
    • 功能:   DST <= NOT DST    将DST各位"取反"结果保留于DST

    4、XOR

    • 描述:“异或”逻辑运算
    • 格式:    XOR    DST,SRC
    • 功能:   DST <= DST XOR SRC    将DST和SRC对应各位进行“异或”运算后结果保留于DST

    5、TEST

    • 描述:“与”逻辑运算,当只影响PSW,不保留运算结果。
    • 格式:    TEST    DST,SRC
    • 功能:   DST AND SRC   将DST和SRC对应各位进行“与”运算,结果状态影响PSW,但不该表DST,SRC的值。

    6、SHL

    • 描述:逻辑左移
    • 格式:SHL   DST,1/CL
    • 功能:将DST顺序左移1位或CL寄存器中指定的位数。左移一位时,DST的最高位移入进位标志位CF,最低位补零。

    7、SAL

    • 描述:算术左移
    • 格式:SAL   SRC,1/CL
    • 功能:将SRC顺序左移1位或CL寄存器中指定的位数。左移一位时,SRC的最高位移入进位标志位CF,最低位补零。

    8、SHR

    • 描述:逻辑右移
    • 格式:SHR  SRC,1/CL
    • 功能:将SRC顺序右移1位或CL寄存器指定的位数。逻辑右移1位时,SRC的最低位移到进位标志位CF,最高位补零。

    9、SAR

    • 描述:算术右移
    • 格式:SAR   SRC,1/CL
    • 功能:将SRC顺序右移1位或CL寄存器指定的位数。逻辑右移1位时,SRC的最低位移到进位标志位CF,最高位用原先最高位的值填充。

    10、ROL

    • 描述:循环左移
    • 格式:ROL    SRC,1/CL
    • 功能:将SRC顺序左移1位或CL寄存器指定的位数。循环左移1位时,SRC的最高位移到最低位,并且最高位同时移入标志位CF。

    11、ROR

    • 描述:循环右移
    • 格式:ROR    SRC,1/CL
    • 功能:将SRC顺序右移1位或CL寄存器指定的位数。循环左移1位时,SRC的最低位移到最高位,并且最低位同时移入标志位CF。

    12、RCL

    • 描述:带进位循环左移
    • 格式:RCL    SRC,1/CL
    • 功能:将SRC顺序左移1位或CL寄存器指定的位数。带进位循环左移1位时,原先状态位CF的值移入SRC的最低位,SRC的最高位移入状态位CF。

    13、RCR

    • 描述:带进位循环右移
    • 格式:RCR    SRC,1/CL
    • 功能:将SRC顺序右移1位或CL寄存器指定的位数。带进位循环右移1位时,原先状态位CF的值移入SRC的最高位,SRC的最低位移入状态位CF。

    四、串指令

    当方向标志位DF = 0时,DI,SI+;当DF = 1时,DI,SI-。

    ES:DI    DS:SI

    1、MOVS          

    • 格式:①MOVS    DST,SRC     ②MOVSB(字节)     ③MOVSW(字)     ④MOVSD(双字)
    • 功能:   ①字节操作: [ES:DI]<=[DS:SI]  ,SI<=SI +/- 1

                        ②字操作:     [ES:DI]<=[DS:SI]]  ,SI <= SI +/- 2

                        ③双字操作:  [ES:DI]<=[DS:SI] ,SI <= SI +/- 4

     

    2、CMPS

    • 格式:①CMPSB(字节)    ②CMPSW(字)     ③CMPSD(双字)
    • 功能:  ①字节操作:  [DS:SI] - [ES:DI]  ,SI<=SI +/- 1

                        ②字操作:     [DS:SI] - [ES:DI]  ,SI <= SI +/- 2

                        ③双字操作:  [DS:SI] - [ES:DI] ,SI <= SI +/- 4

     

    3、LODS

    • 格式:①LODSW(字)     ③LODSD(双字)
    • 功能: ①字节操作:AL <= [DS:SI]  ,SI<=SI +/- 1

                      ②字操作:    AX  <= [DS:SI]  ,SI <= SI +/- 2

                      ③双字操作:   EAX  <= [DS:SI]  ,SI <= SI +/- 4

    4、STOS

    • 格式:①STOSB(字节)     ②STOSW(字)     ③STOSD(双字)
    • 功能: ①字节操作:[DS:SI] <= AL   ,SI<=SI +/- 1

                      ②字操作:    [DS:SI] <= AX  ,SI <= SI +/- 2

                      ③双字操作:  [DS:SI] <= EAX   ,SI <= SI +/- 4

    5、SCAS

    • 格式:①SCASB(字节)     ②SCASW(字)     ③SCASD(双字)
    • 功能: ①字节操作: AL - [DS:SI]    ,SI<=SI +/- 1

                      ②字操作:     AX - [DS:SI]    ,SI <= SI +/- 2

                      ③双字操作:   EAX - [DS:SI]     ,SI <= SI +/- 4

    6、REP

    • 格式:REP   string primitive(MOVS,LODS,STOS,INS和OUTS)
    • 功能①如果CX = 0退出,否则继续运行以下操作

                     ②CX <= CX - 1

                     ③执行以后串操作

                     ④重复 ①~③

    7、REPE/REPZ

    • 格式:REPE/REPZ   string primitive(CMPS或SCAS)
    • 功能:①如果CX = 0 或 ZF = 0 退出,否则继续运行以下操作

                     ②CX <= CX - 1

                     ③执行以后串操作

                     ④重复 ①~③

     

    8、REPNE/REPNZ

    • 格式:REPNE/REPNZ   string primitive(CMPS或SCAS)
    • 功能:①如果CX = 0 或 ZF = 1 退出,否则继续运行以下操作

                     ②CX <= CX - 1

                     ③执行以后串操作

                     ④重复 ①~③

     

    五、无条件转移

     

    1、JMP

    • 格式:JMP ADDRESS
    • 功能 无条件跳转到 ADDRESS

    六、条件转移

    1、根据PSW

    1、JZ

    • 格式:JZ    EX
    • 功能:当ZF = 1时,跳转到EX

    2、JNZ

    • 格式:JNZ    EX
    • 功能:当ZF = 0时,跳转到EX

    3、JC

    • 格式:JC    EX
    • 功能:当CF = 1时,跳转到EX

    4、JNC

    • 格式:JNC    EX
    • 功能:当CF = 0时,跳转到EX

    5、JO

    • 格式:JO    EX
    • 功能:当OF = 1时,跳转到EX

    6、JNO

    • 格式:JNO    EX
    • 功能:当OF = 0时,跳转到EX

    7、JS

    • 格式:JS    EX
    • 功能:当SF = 1时,跳转到EX

    8、JNS

    • 格式:JNS    EX
    • 功能:当SF = 0时,跳转到EX

    2、比较两个无符号数后

    #    N :不等于    A:大于    B : 小于    E :等于

    3、比较两个有符号数后

    #    N :不等于    G:大于    L : 小于    E :等于

    4、JCXZ  

     

    • 格式: JCXZ EX
    • 功能:若 CX = 0,则跳转到EX

    七、循环

    • LOOP
    • LOOPE/LOOPZ
    • LOOPNE/LOOPNZ

    八、子程序

    1、CALL

     

    • 格式:①CALL EX/NEAR    PTR    EX

                     ②CALL   FAR    PTR    EX 

     

    • 功能:①将IP进栈;将子程序的入口地址的位移量 =>IP

                     ②将CS入栈;将IP入栈;将子程序入口地址偏移量 =>IP;将子程序的段地址 =>CS

    2、RET

     

    • 格式:RET (num)
    • 功能:①将栈顶元素出栈 => IP

                     ②将SP向高地址移动num位。

    3、RETF

     

    • 格式:RETF (num)
    • 功能:①将栈顶元素出栈 => IP

                     ②将栈顶元素出栈 =>CS

                     ③将SP向高地址移动num位。

    九、中断

    • INT XX
    • IRET

    十、空操作

    • NOP

    十一、标志

    1、CLC

     

    • 格式:CLC
    • 功能:令CF=0

    2、STC    

     

    • 格式:STC 
    • 功能:令CF=1

    3、CMC 

     

    • 格式:CMC 
    • 功能:令CF取反。

    4、CLD  

     

    • 格式:CLD 
    • 功能:令DF = 0

    5、STD  

     

    • 格式:STD 
    • 功能:令DF = 1

    6、CLI    

     

    • 格式:CLI
    • 功能:禁止发生中断

    7、STI 

     

    • 格式:STI 
    • 功能: 允许发生中断

     

     

     

     

     

     

     

     

     

    展开全文
  • 8086汇编工作环境.rar

    2020-02-28 21:31:45
    8086汇编工作环境.rar 8086汇编工作环境.rar 8086汇编工作环境.rar 086汇编工作环境.rar 8086汇编工作环境.rar 8086汇编工作环境.rar
  • 8086汇编基础

    2015-06-11 12:56:15
    8086汇编基础
  • 8086汇编语言讲座

    千人学习 2018-03-20 10:20:26
    关于8086汇编语言,是与计算机原理相结合的,通过汇编语言可以加深对计算机原理的掌握和理解。 另外汇编语言还是可以干成事的,比如破解,外挂等都会用到它。
  • 8086 汇编 练习 软件

    2018-05-10 20:13:39
    8086 汇编 练习 软件 可仿真,练习汇编编程,也可以下载烧录
  • 8086汇编帮助手册.rar

    2021-08-30 14:35:22
    8086汇编帮助手册.rar
  • 8086汇编语言

    2015-05-01 20:50:17
    8086汇编语言程序设计pdf文档,清华大学出版社,
  • 8086汇编手册

    2014-06-09 22:50:09
    8086汇编手册,想学汇编的人就看一下吧
  • 8086汇编NMI.rar

    2019-11-24 14:51:43
    8086汇编语言中断系统 可应对各种8086系统的大作业课设 使用汇编语言编写 微机原理与接口技术大作业
  • 8086汇编语言程序设计实验指导书8086汇编语言程序设计实验指导书8086汇编语言程序设计实验指导书8086汇编语言程序设计实验指导书
  • 8086汇编工作环境

    2017-02-03 09:03:50
    提供学习8086汇编语言程序设计的极简解决方案。DOSBox0.74-win32-installer.exe是DOS模拟器,masm.exe汇编、link.exe连接、Debug.exe调试,edit.com和edlin.com是两个编辑程序。
  • 8086 汇编期末复习

    2010-12-14 21:34:17
    8086 汇编期末复习8086 汇编期末复习8086 汇编期末复习
  • 8086汇编帮助文档.zip

    2019-08-08 09:16:13
    汇编必备帮助文档(IA-32指令集)(8086汇编帮助手册),常用汇编帮助文档
  • 8086汇编贪吃蛇程序

    2016-01-26 17:54:14
    16位8086汇编实现DOS下汇编贪吃蛇程序
  • 8086汇编学习教程

    2015-07-11 14:53:16
    8086汇编学习教程 推荐大家学习,我感觉很不错
  • 8086汇编复习2 - 使用emu8086.pdf
  • 8086 汇编指令速查手册.doc
  • 8086汇编教程

    2012-04-22 20:27:02
    8086汇编教程,资料很多,都是学姐学长收集的,看一下对学习汇编很有帮助
  • 8086汇编软件

    2013-11-10 14:58:52
    8086汇编软件,微机原理学习必备,容易下载,容易安装,容易操作
  • 8086汇编实例

    2012-11-15 20:18:29
    8086汇编语言实例,理工大学实例作业。
  • ​ 这学期要学习8086汇编,选择汇编的环境折腾了好几天,尝试过使用吾爱破解的OD反汇编工具【1】查看寄存器的状态,并进行的简单的汇编指令编写,但其界面复杂,对新手极其不友好,使用了几天就放弃了。...

    1 前言

    ​ 这学期要学习8086汇编,选择汇编的环境折腾了好几天,尝试过使用吾爱破解的OD反汇编工具【1】查看寄存器的状态,并进行的简单的汇编指令编写,但其界面复杂,对新手极其不友好,使用了几天就放弃了。于是我又尝试了比较正规(主要是汇编书籍里边他就是要你这么搭建编程环境)的8086汇编环境——DOSBox虚拟环境【2】,但但但是!!在这里我不得不说,这样的环境虽然比较正规(后面会介绍代替方案),如果你折腾过这个编程环境你会知道,代码没高亮是其次的问题,麻烦的是你编写了一个自己不知道对不对的汇编代码之后,你自己要去命令行里边手动的去进行MASM和link操作(前提是你的汇编代码正确,不然又得回去改代码,之后又得进行同样的操作),最后才可以进行DEBUG,来来回回之间绝对可以劝退汇编的学习。之后我自己又尝试使用VS2019来进行汇编学习【3】,但其对8086的16位汇编支持不是很好,应该要引入第三方库实现16位汇编【4】,但我没弄过,具体我也不不清楚,编写汇编代码更加复杂,往往要添加更多的伪代码来提示编译器进行编译工作,学习成本会比较大。之后使用VScode+MASM/TASM插件实现8086汇编,完美实现课本样例代码。

    ​ 以下是前言所提到的环境配置所需的软件和一些不错的参考文档,因为那些环境的搭建不是本文的重点,在此就不进行赘述了,各位如果有兴趣折腾这些环境配置,麻烦自行查找相应的解决方案。

    参考网址

    【1】吾爱OD下载https://down.52pojie.cn/Tools/Debuggers/%E5%90%BE%E7%88%B1%E7%A0%B4%E8%A7%A3%E4%B8%93%E7%94%A8%E7%89%88Ollydbg.rar

    【2】DOSBox虚拟环境下载链接:https://pan.baidu.com/s/1e8HGQ9iFI7O25ESYOpDOjQ
    提取码:wt95

    【3】vs2019配置汇编环境参考win10+vs2019编译运行简单汇编程序

    【4】汇编第三方库Assembly Language for x86 Processors 参考及下载地址,官网有详细的说明及相应的汇编样列,折腾之前建议好好看说明文档

    2 正文

    目前最好的8086汇编环境 VScode + MASM/TASM插件

    下面开始进行8086汇编学习环境的配置:

    步骤 1 VScode 的安装 如果已经安装好了,可以跳过此步骤

    参考VSCode详细安装教程 - 是大壳子啊 - 博客园
    在此感谢是大壳子啊的博客

    步骤 2 插件MASM/TASM的安装:

    插件MASM/TASM的安装

    步骤 3 测试汇编环境

    3.1 安装完成后 使用快捷键 Ctrl + Shif + N 并选择打开文件夹,如下图所示

    在这里插入图片描述

    3.2 在这里我已经提前在D盘新建了一个名为masm_test的文件夹

    在这里插入图片描述

    3.3 继续创建项目

    在这里插入图片描述

    **3.4 建立汇编文件 **

    在这里插入图片描述

    在这里我命名为test.asm 注意一定要加后缀名asm

    在这里插入图片描述

    3.5 添加测试代码(自己随便编写的,没有任何特殊意义,仅仅用来演示汇编环境的使用)

    assume cs:code
    
     code segment
         mov ax,32
         inc ax
         dec ax
         db 'hello'
         mov al,ss:5
         mov ss:[10],al
         mov ax,4c00h
         mov bx,[4]
         int 21h
     code ends
    
    end
    
    

    接下来讲解配置文件的书写,重要!!! vscode只是一个代码编辑器,不会像IDLE一样写完代码就可以点击运行的,这里需要自己进行相应的配置!!!

    步骤 4 vscode配置文件的书写

    4.1 创建setting.json文件(每一个项目都需要一个配置文件)

    在vscode界面,同时按下 Ctrl + Shift + P 调出命令面板,输入setting

    在这里插入图片描述

    4.2 开始书写setting.json 配置文件, 在这里我给出我写好的配置信息,要是觉得麻烦的话可以直接使用我的就行

    {
        "masmtasm.ASM.emulator": "msdos player",  
        "masmtasm.dosbox.run": "exit",
        "masmtasm.ASM.MASMorTASM": "MASM"
    }
    

    编写好之后,Ctrl + S 保存设置, 这里建议开启自动保存功能(点击vscode左上角文件选项,之后选择自动保存)

    4.3 运行汇编代码

    回到代码界面,单击鼠标右键就可以看见并选择运行或者调试代码了

    在这里插入图片描述

    3 高级setting.json的书写(选学)

    大家在书写setting.json文件时,可以先输入双引号,然后在双引号里边输入masm,vscode会自动提示显示出相应的配置信息(如下图所示),自己可以尝试编写,多多折腾,选择适合自己的配置信息

    在这里插入图片描述

    在这里就不一一解释每一个选项的意思了,大家可以点击这里查看官方配置的书写详解VSCode下DOS汇编插件

    4 结语

    ​ 一个好的代码环境可以为自己的学习提供动力,提高自己的编码质量和速度。希望各位汇编学习愉快!!

    本教程面向小白,局限于我粗浅的学识和拙劣的文本书写能力,难免会有所欠缺,如果您发现此博客有什么不足或者不好的地方,欢迎指正。

    展开全文
  • 8086汇编语言教程

    2012-04-08 14:24:13
    8086汇编和80386汇编很好的入门书

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,429
精华内容 6,571
关键字:

8086汇编