当前位置:编程学习 > 汇编语言 >>

我想好好地学习80x86汇编语言,各位大神们可以给我写建议吗?

我很喜欢汇编,很想把这门语言学好,我是软件工程专业的学生
追问:debug 不支持32位的吧?
答案:初学的话看《汇编语言》王爽的,很好入门
只能是算入门,如果真想学好,那么就要多付出实践,当你想写个什么东西的时候会有很多不懂,这个时候你才是真正的开始了汇编之旅。那么就需要在网络上查资料了,
===
共勉
其他:记熟指令,多编程实践 简单高效的学习方法:在掌握基本硬件结构、进制(如各种寄存器,内存结构及地址表达方式, 16及2进制等)的基础上,用Debug逐一熟悉各指令 直观、实用、易理解、容易记住 另外 学汇编要静心 学习汇编语言的易做图是其他任何语言无与伦比的!

比如学习除法指令DIV(许多初学者觉得除法不好掌握):以16/4为例

首先用A命令输入以下指令:
-A100
0AFB:0100 MOV AX,10      <===这里的10是16进制数,即10进制的16(DEBUG都是16进制数)
0AFB:0103 MOV BL,4
0AFB:0105 DIV BL
0AFB:0107 NOP
0AFB:0108
-R  <===用R查看各寄存器初始值
AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0AFB  ES=0AFB  SS=0AFB  CS=0AFB  IP=0100   NV UP EI PL NZ NA PO NC
0AFB:0100 B81000        MOV     AX,0010
-P  <===单步跟踪(执行MOV     AX,0010 指令后看到AX已由初值0000变成了0010)

AX=0010  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0AFB  ES=0AFB  SS=0AFB  CS=0AFB  IP=0103   NV UP EI PL NZ NA PO NC
0AFB:0103 B304          MOV     BL,04
-P  <===单步跟踪(执行MOV     BL,04 指令后看到BX已由初值0000变成了0004)

AX=0010  BX=0004  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0AFB  ES=0AFB  SS=0AFB  CS=0AFB  IP=0105   NV UP EI PL NZ NA PO NC
0AFB:0105 F6F3          DIV     BL
-P  <===单步跟踪(执行DIV     BL 指令后看到AX已由先前的0010变成了0004)16/4=4(AL) 余0(AH)

AX=0004  BX=0004  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0AFB  ES=0AFB  SS=0AFB  CS=0AFB  IP=0107   NV UP EI PL NZ NA PO NC
0AFB:0107 90            NOP

我们换一个数再试试: 16/5=?

-A103
0AFB:0103 MOV BL,5
0AFB:0105
-RIP
IP 0107
:100
-P

AX=0010  BX=0004  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0AFB  ES=0AFB  SS=0AFB  CS=0AFB  IP=0103   NV UP EI PL NZ NA PO NC
0AFB:0103 B305          MOV     BL,05
-P

AX=0010  BX=0005  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0AFB  ES=0AFB  SS=0AFB  CS=0AFB  IP=0105   NV UP EI PL NZ NA PO NC
0AFB:0105 F6F3          DIV     BL
-P

AX=0103  BX=0005  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0AFB  ES=0AFB  SS=0AFB  CS=0AFB  IP=0107   NV UP EI PL NZ NA PO NC
0AFB:0107 90            NOP
-
最后看到:AX=0103 即16/5的结果是商为3(AL),余数为1(AH).

非常直观!!!

强烈建议:用DEBUG去学习80X86各项指令,事半功倍! 学汇编还是多看程序,看多了在自己写,这样提高很快,不要死扣指令。

上一个:求用汇编语言将一16进制数转换成ASC11码输出
下一个:哪位仁兄有单片机万年历汇编语言编程,不加别的芯片,只用单片机at89c51,并加详细说明,急用,非常感谢

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,