1.汇编语言如何去操作?
事实上,在实模式中,内存比保护模式中的结构更令人困惑。
内存被分割成段,并且,操作内存时,需要指定段和偏移量。不过,理解这些概念是非常容易的事情。
请看下面的图: 段-寄存器这种格局是早期硬件电路限制留下的一个伤疤。地址总线在当时有20-bit。
然而20-bit的地址不能放到16-bit的寄存器里,这意味着有4-bit必须放到别的地方。因此,为了访问所有的内存,必须使用两个16-bit寄存器。
这一设计上的折衷方案导致了今天的段-偏移量格局。最初的设计中,其中一个寄存器只有4-bit有效,然而为了简化程序,两个寄存器都是16-bit有效,并在执行时求出加权和来标识20-bit地址。
偏移量是16-bit的,因此,一个段是64KB。下面的图可以帮助你理解20-bit地址是如何形成的: 段-偏移量标识的地址通常记做 段:偏移量 的形式。
由于这样的结构,一个内存有多个对应的地址。例如,0000:0010和0001:0000指的是同一内存地址。
又如, 0000:1234 = 0123:0004 = 0120:0034 = 0100:0234 0001:1234 = 0124:0004 = 0120:0044 = 0100:0244 作为负面影响之一,在段上加1相当于在偏移量上加16,而不是一个“全新”的段。 反之,在偏移量上加16也和在段上加1等价。
某些时候,据此认为段的“粒度”是16字节。 练习题 尝试一下将下面的地址转化为20bit的地址: 2EA8:D678 26CF:8D5F 453A:CFAD 2933:31A6 5924:DCCF。
2.如何用c语言实现汇编语言中的指令系统,本人急着寻找答案,谢谢,
你胡说八道,不懂概念就不要乱问,指令系统指的是系统的硬件语言机器语言,汇编语言是机器语言的一一对应的代号表示语言,是最低级的语言,高级语言是经过编译可转化为及其语言的语言(经过转换为汇编,再转换为机器语言(一串串的数码))c语言是一种高级又是低级的语言,它能够直接对汇编代码进行汇编,能够支持对位的操作,又能够用高级语言进行编程,又能够用汇编语言进行编程。
我明白了,你的意思是不是用c语言写一个针对某硬件平台的汇编程序,或编译程序,并以指令系统为目标语言,目标代码,反正你是疯子,你的问题都不是很明白,你如何做呢,不要发故作高深的问题,这样支能够更加的显得你的无知。建议你还是多看看书,多学点知识。
现代人就是很浮华。
3.汇编语言编写程序
MAIN:
MOV DL,0AH ;把10放入AL
MOV AH,a
MUL AH ;设AH=a,a*10所得结果放入AL
MOV BL,AL
MOV AL,b
OR AL,BL ;b+a*10
MUL DL ;(a*10+b)*10
MOV BL,c
OR AL,BL
MUL DL ;(a*10+b)*10+c)*10
MOV BL,d
OR AL,BL
;;;;;;;;;;;;;;;;;;
总的结果就存在AL中
转载请注明出处windows之家 » win10系统怎么编写汇编语言