⑴ 如何察看汇编程序的2进制代码
假设你是用debug命令
debug program.exe
-u 100
“100”是你要开始反汇编的地址,也可以不写地址,那么意思就是从当前地址开始反汇编。
显示结果格式如下:
0B78:0001 1F POP DS
0B78:0002 BA0E00 MOV DX,000E
0B78:0005 B409 MOV AH,09
0B78:0007 CD21 INT 21
0B78:0009 B8014C MOV AX,4C01
第二列就是二进制代码。第三、四列是指令
⑵ 求一个好用的汇编语言调试工具,可以方便的单步执行、查看寄存器和查看数据
Ollydbg
SoftICE
可以在下面地址下载:http://www.pediy.com/tools/Debuggers.htm
⑶ 汇编语言emu8086怎么看自定义的变量的值
用emu8086编辑完程序,并且编译通过之后,点击运行按钮,弹出emulator窗口和original source code窗口。
在emulator窗口下方,有一个vars窗口,点击之后,会弹出variables窗口,显示本程序所用的所有变量及其值,并且运行期间也可以对值进行编辑。程序运行过程中,变量值的变化也会体现在本窗口之中。
⑷ 在汇编中如何使用字模点阵数据在屏幕上打出汉字。最好可以在emu8086上运行、说详细点~
显示汉字的程序如下,可以在 PC 机上正常显示。
emu8086,能否显示,就不知道了。
;======================================================
CODE SEGMENT
ASSUME CS:CODE, DS:CODE
ORG 100H
START:
PUSH CS
POP DS
MOV AH, 0FH ;读取当前显示方式.
INT 10H
PUSH AX
MOV AX, 12H ;设置点阵显示
INT 10H
MOV AX, 0A000H ;显示缓存段地址
MOV ES, AX
CLD
LEA SI, DOT
MOV DI, (30 * 80 + 10) * 2
MOV CX, CNT / 2 ;=16
Q1:
; MOVSB ;SI加一, DI加一.
; MOVSB ;SI加一, DI加一.
MOVSW
ADD DI, 78 ;相当是加上80
LOOP Q1
MOV AH, 0 ;等待按键.
INT 16H
POP AX
MOV AH, 00H ;恢复原来的显示方式.
INT 10H
MOV AH, 4CH
INT 21H
;****字模点阵**** 32字节, 是一个16*16的汉字
;
DOT DB 00H, 3CH, 47H,0C0H, 32H, 48H, 11H, 50H, 8FH,0FEH, 61H, 50H, 22H, 48H, 0CH, 44H
DB 17H,0FEH, 24H, 44H,0E4H, 44H, 27H,0FCH, 24H, 44H, 24H, 44H, 27H,0FCH, 24H, 04H
;
DB 01H, 00H, 7FH,0FCH, 01H, 00H, 3FH,0F8H, 00H, 00H, 1FH,0F0H, 10H, 10H, 1FH,0F0H
DB 04H, 40H,0FFH,0FEH, 10H, 00H, 7EH,0F8H, 12H, 88H, 12H, 88H, 22H,0F8H, 4CH, 88H
;
DB 10H, 10H, 10H, 18H, 1CH, 14H, 23H,0FEH, 22H, 10H, 7EH, 10H, 92H, 10H, 13H,0D4H
DB 0FEH, 54H, 12H, 54H, 12H, 54H, 17H, 48H, 1AH, 98H, 12H, 2AH, 04H, 46H, 08H, 02H
CNT EQU $ - DOT ;=32
CODE ENDS
END START
;======================================================
⑸ 有没有mac os使用的80x86汇编的虚拟机环境类似win里面的emu8086
那你就不如装个parralle,加载个win,然后运行emu8086,曲线救国啊
⑹ emu8086中的undeclared label问题
以前是#include<asm/errno.h>改为#include<errno.h>即可。
EMU8086是学习汇编的工具,Emu8086-MicroprocessorEmulator结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。
在模拟器中一步一步的编译程序码并执行,视觉化的工作环境更容易使用,可以在程序执行当中检视暂存器、旗标以及记忆体。模拟器会在虚拟 PC 中执行程序,这可以隔绝程序,避免去存取实际硬体,像硬盘、记忆体,而在虚拟机器上执行组合程序,这可以让除错变得更加容易。
(6)emu8086如何查看物理地址扩展阅读:
注意事项:
注意MOV AX,[BX] [SI] 与MOV AX,[BX+SI] 同等,MOV BP,2 [BX+DI] 与MOVBP,[BX+DI+2] 同等。
连续执行以下指令,填写指令执行结果,并上机验证结果。
M代表存储单元物理地址
[Reg]代表寄存器间接寻址的存储单元内容
FLAGL代表标志寄存器低字节
SRC代表源操作数
DST代表目标操作数
MOD代表寻址方式
⑺ emu8086的使用方法
1.在开始菜单选在它的图标,或者直接运行Emu8086.EXE2.在FILE菜单中选择SAMPLE
3.点击Compile and Emulate按纽(或者按快捷键F5)
4.点击Single Step按纽(或者按快捷键F8),可以查看代码如何运行. 目前使用最多的是十进制.十进制系统有10个数字0,1,2,3,4,5,6,7,8,9 利用这些数字能表示任何数值,例如754这些数字是由每一位数字乘以“基数”的幂累加而成的(上一个例子中基数是10 因为十进制中有十个数字)。
位置对于每一个数字是很重要的。例如,你将上一个例子中的“7”放到结尾:547
数值就成为:
特别提醒:任何数字的0次幂都是1,0的0次幂也是1 计算机没有人类聪明(至少现在是这样),制造一个只有开关或者称为 0,1 两种状态的电子机器很容易。计算机使用二进制系统,只有两个数字 0, 1基地为2每一位二进制数称作一位(BIT),4 BIT 组成一个半字节(NIBBLE),8BIT组成一个字节(BYTE),两个字节组成一个字(WORD),两个字组成一个双字(DOUBLE WORD)(很少使用):
习惯上在一串二进制后面加上“b”,这样,我们可以知道101b是二进制表示十进制的5。
二进制10100101b表示十进制的165,计算方法如下: 十六进制系统使用16个数字0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F基底是 16. 十六进制非常紧凑,便于阅读。将二进制转换为十六进制很容易,半字节(4bits) 对应一位十六进制如下表
Decimal (base 10) Binary (base 2) Hexadecimal (base 16)0 0000 0 1 0001 12 0010 2 3 0011 3 4 0100 4 5 0101 5 6 0110 6 7 0111 7 8 1000 8 9 1001 9 10 1010 A 11 1011 B 12 1100 C 13 1101 D 14 1110 E 15 1111 F
习惯上我们在一个十六进制数的后面加上 H,以便和其他进制区别, 这样我们就知道 5Fh是一个十六进制数表示十进制的 95。习惯上,我们也在以字母开头(从A到F)的十六进制数前面 加上0例如: 0E120h. 十六进制 1234h 等于4660: 在换算中,将十进制数不断除以目标进制的基底,每一次都要记录下商和余数,直到商0。 余数用来表示结果。
下面是一个十进制39(基底是10)到十六进制(基底是16)的换算:
结果为27H
上例中所有的余数都小于10,不必使用字母。再举一个更复杂的例子:十进制 43868 换算为十六进制:
结果是 0AB5Ch, 使用 上面提到的表 将大于9的数字替换成字母。 运用同样的原理,我们可以换算为二进制(用2作除数),或者是先换算成十六进制,再用上面的表换算成二进制:
于是,得到二进制: 1010101101011100b 对于十六进制数0FFh无法确定它是正数还是负数,因为它可以表示十进制的255 或者 - 1。
8位可以表示256个状态,于是,我们可以假定前128个表示正数(从0到127),接下来的128个数(从128到256)表示负数 。如果想表示- 5,我们从256中减去5,即 256 - 5 = 251。用这种复杂的方法表示一个负数有着数学依据的,数学上- 5 加上 5等于0。当我们将两个8位的数字5 和251相加时,结果超过255,溢出处理为0!
128到256高位始终是1,这个可以作为数字符号的标记 对于字(16位),16位有65536个状态,头32768个状态(从0到32767)用来表示正数,下面的32768个状态(从32767到65535) 表示负数
Emu8086带有数制转换工具,也可以计算各种数值表达式。选择菜单 Math 项:
Number Convertor (数制转换)可以实现任意数制之间的转换。在文本框中填写源
数值,将自动转换到任意的数制。 可以作 8 位 或者 16 位转换。Expression Evaluator(表达式计算)可以用来计算不同数制的计算以及从一个进制到另一个进制的转换。输入表达式,按下回车,结果就会以你选定的进制表示。最长可以进行32位的计算。当在Signed打钩选中时(除了八进制和双字),最前面的一位将被认作是符号位。这样以来,0FFFFFFFFh将被认为是十进制的-1。例如,你计算0FFFFh * 10h + 0FFFFh ( 8086 CPU所能访问的最大内存地址)。如果你选中Signed 和 Word选项,结果是-17(因为表达式被认为是(-1) * 16 + (-1) )。如果想按照无符号数计算,请不要选择Signed表达式为65535 * 16 + 65535计算结果将是1114095 同样你可以使用Number Convertor将非十进制换算为有符号的十进制,然后根据十进制计算。支持如下运算:
~ not (inverts all bits).
* multiply.
/ divide.
% molus.
+ sum.
- subtract (and unary -).
<< shift left.
>> shift right.
& bitwise AND.
^ bitwise XOR.
| bitwise OR.
二进制必须有“b”作结尾,例如00011011b 十六进制必须有h作结尾,另外,当第一位是字母时,最前面必须加上0,例如:0ABCDh八进制必须有o作结尾,例如:77o
⑻ 微机原理
微机原理又名:微型计算机原理。是一门计算机专业的必修课程。一般到毕业的时候都会有清考,到时候一般学校还会组织补习班,只要清考通过,就可以拿到毕业证。
《微机原理》是一门专业基础课程,它的主要内容包括微型计算机体系结构、8086微处理器和指令系统、汇编语言设计以及微型计算机各个组成部分介绍等内容。
要求考生对微机原理中的基本概念有较深入的了解,能够系统地掌握微型计算机的结构、8086微处理器和指令系统、汇编语言程序设计方法、微机系统的接口电路设计及编程方法等,并具有综合运用所学知识分析问题和解决问题的能力。
微机原理实验工具:
1、微机原理与接口技术实验箱。
2、Masm5.0汇编调试程序。
3、emu8086仿真软件。
4、北斗一号微机原理虚拟实验系统。
存储结构:
1、半导体存储器的种类。
2、读写存储器(RAM)。
3、只读存储器(ROM)。
4、PC/XT的存储结构。
操作时序:
1、总线操作的概念。
2、8086的总线。
3、8086的典型时序。
4、计数器和定时器电路Intel 8253。