intel CPU的汇编语言与IBM8086汇编有那么大区别,那还学那本《IBM汇编程序设计》有啥用?

时间:2022-04-22 00:51:53
intel CPU的汇编语言与IBM8086汇编有那么大区别,那还学那本《IBM汇编程序设计》有啥用?

9 个解决方案

#1


你的问题相当于问“婴儿有什么用?”

#2


掌握汇编的基本概念是很重要的,否则可以直接看 hla 汇编编程艺术

#3


IBM 的pc 机用的是intel 的cpu, 所以,IBM汇编程序设计一书讲的是 intel cpu 的指令。所以,从这个方面讲,这两本书的一回事,你不要危言耸听。
  如果非要说有"那么大的差别的话",楼主之意大概是: 1。后者只讲8086指令集,前者比后者更全,包含80386,甚至80586指令集。2. IBM汇编讲的除指令集外,还讲一些dos/bios编程。
  但是你要知道,后者是前者的基础,而者完全兼容前者,即使是最新的PIV 3.xx G 的cpu, 安装的是windosx xp甚至是更高的os,也可以运以8086 程序的。2  另一方面,8086虽然陈旧落后,但80386等32位cpu除了寄存器是32柆,寻址方式更灵活,使用平坦的32地址以外,在本质上8086没有本质的区别,如果你学会了8086汇编,再学习80386汇编代价的是很低的。很多人走的都是这条路,你学不会8086汇编,不要怨汇编难学。
  8086 的 80386 有点像 c 语言和 c++,共同点有:
     1.后者兼容前者。
     2.比前者功能更强,更灵活。
     3.学习后者时,往往先学习前者。
  
   另一个 之所以不直接学习80386 的原因:我认为,构建80386编程环境比8086更难。学习汇编语言的目的绝不是只懂指令,我们必须在一个真实的OS环境运行。80386 主要运行在windows 环境,而8086主要运行在dos环境。 WIN32 API 比dos 调用更多,更复杂,让学生一下子接触到博大精深的win api,可能有些手忙脚乱,调试工具也不会比dos下的debug更容易。这些有点儿vc相对于tc.

   当然还有一些其它原因,高校的教育跟不上技术的进步,教材和教师的知识总是相对陈旧的。
   
  当然,先学习8086汇编并不是绝对的。如果是一个典型的实用主义者,学习目的仅为了win32 或基它32OS编程,那么你可以直接学习32 cpu 的指令集。 

#4


MASM与ASM有什么区别?

#5


asm 泛指汇编语言,包括各种cpu的汇编语言,如a29k,alpha,arm,cray,i960,ia64,m68k,m88k
mips32,mips64,ns32k,pa32,pa64,power,powerpc32,powerpc64,pyr,s390,sh,sparc32,sparc64,thumb,
vax,x86,z8000,z8000x.
  这些cpu中,同种cpu的汇编器可能(编译器)有多个产品,他们由不同的厂家开发,虽然指令集相同,但功能有少许不同,语法也可能不同。就像 vc++ 和borland c++ 和 BCB 虽然属于c++标准,但这些开发工具(编译器)支持的语法和界面,库函数均有所不同。
  masm 中的第一个m 是macro的缩写,可以称为宏汇编,它是由microsoft 公司开发的,用于编写dos/winddows 程序的,x86 指令的汇编器。当然x86的汇编器不至masm一种,其它的有tasm,nasm等。

#6


谢谢楼上大哥。我只知道masm,tasm还有nasm(linux下的吧),这么多,那种是主流呢?

#7


NASM支持很多平台

现在一般用MASM,TASM也不错。

目前开发Win程序最好是MASM32    www.masm32.com

#8


楼主连基本概念都没搞清楚,楼主应该这样问,现在都是保护模式编程,还学实模式干什么。

#9


我想楼主应该是学生吧。现在学校里面上一门课至多90学时,要是真的要讲到80x86,恐怕150也打不住吧。学习只能从基础打起,就像你学高数一样,为什么不直接学应用数学得了,呵呵,那可能么?

#1


你的问题相当于问“婴儿有什么用?”

#2


掌握汇编的基本概念是很重要的,否则可以直接看 hla 汇编编程艺术

#3


IBM 的pc 机用的是intel 的cpu, 所以,IBM汇编程序设计一书讲的是 intel cpu 的指令。所以,从这个方面讲,这两本书的一回事,你不要危言耸听。
  如果非要说有"那么大的差别的话",楼主之意大概是: 1。后者只讲8086指令集,前者比后者更全,包含80386,甚至80586指令集。2. IBM汇编讲的除指令集外,还讲一些dos/bios编程。
  但是你要知道,后者是前者的基础,而者完全兼容前者,即使是最新的PIV 3.xx G 的cpu, 安装的是windosx xp甚至是更高的os,也可以运以8086 程序的。2  另一方面,8086虽然陈旧落后,但80386等32位cpu除了寄存器是32柆,寻址方式更灵活,使用平坦的32地址以外,在本质上8086没有本质的区别,如果你学会了8086汇编,再学习80386汇编代价的是很低的。很多人走的都是这条路,你学不会8086汇编,不要怨汇编难学。
  8086 的 80386 有点像 c 语言和 c++,共同点有:
     1.后者兼容前者。
     2.比前者功能更强,更灵活。
     3.学习后者时,往往先学习前者。
  
   另一个 之所以不直接学习80386 的原因:我认为,构建80386编程环境比8086更难。学习汇编语言的目的绝不是只懂指令,我们必须在一个真实的OS环境运行。80386 主要运行在windows 环境,而8086主要运行在dos环境。 WIN32 API 比dos 调用更多,更复杂,让学生一下子接触到博大精深的win api,可能有些手忙脚乱,调试工具也不会比dos下的debug更容易。这些有点儿vc相对于tc.

   当然还有一些其它原因,高校的教育跟不上技术的进步,教材和教师的知识总是相对陈旧的。
   
  当然,先学习8086汇编并不是绝对的。如果是一个典型的实用主义者,学习目的仅为了win32 或基它32OS编程,那么你可以直接学习32 cpu 的指令集。 

#4


MASM与ASM有什么区别?

#5


asm 泛指汇编语言,包括各种cpu的汇编语言,如a29k,alpha,arm,cray,i960,ia64,m68k,m88k
mips32,mips64,ns32k,pa32,pa64,power,powerpc32,powerpc64,pyr,s390,sh,sparc32,sparc64,thumb,
vax,x86,z8000,z8000x.
  这些cpu中,同种cpu的汇编器可能(编译器)有多个产品,他们由不同的厂家开发,虽然指令集相同,但功能有少许不同,语法也可能不同。就像 vc++ 和borland c++ 和 BCB 虽然属于c++标准,但这些开发工具(编译器)支持的语法和界面,库函数均有所不同。
  masm 中的第一个m 是macro的缩写,可以称为宏汇编,它是由microsoft 公司开发的,用于编写dos/winddows 程序的,x86 指令的汇编器。当然x86的汇编器不至masm一种,其它的有tasm,nasm等。

#6


谢谢楼上大哥。我只知道masm,tasm还有nasm(linux下的吧),这么多,那种是主流呢?

#7


NASM支持很多平台

现在一般用MASM,TASM也不错。

目前开发Win程序最好是MASM32    www.masm32.com

#8


楼主连基本概念都没搞清楚,楼主应该这样问,现在都是保护模式编程,还学实模式干什么。

#9


我想楼主应该是学生吧。现在学校里面上一门课至多90学时,要是真的要讲到80x86,恐怕150也打不住吧。学习只能从基础打起,就像你学高数一样,为什么不直接学应用数学得了,呵呵,那可能么?