c++ 反汇编是是dos汇编还是windos汇编??
时间:2011-11-28
来源:互联网
但是不知道是保护模式dos汇编 还是windows的32汇编??,
汇编是不是和c++一样的对象
在控制台下是dos程序,可视化的叫windos程序啊???
想弄清楚这些概念,树上不会说的, 一来就是8086 , 不会说这是什么汇编
作者: chouxiaoya1114 发布时间: 2011-11-28
Code Segment
Assume CS:Code,DS:Code
VAR1 db 35h
RES1 db ?
RES2 db ?
Start: push cs
pop ds ;使数据段与代码段同段
; 设定字节型变量VAR1的内容为35H,编写程序将VAR1的高4位与低4位分离,分别作为低4位保存在RES1和RES2中,这两个变量高4位置0。
mov al,VAR1 ;读入字节型变量VAR1的内容
xor ah,ah
mov cl,4 ;移位次数
shl ax,cl
shr al,cl ;左移4位,拆分高4位与低4位
mov RES1,ah ;保存原来的高4位
mov RES2,al ;保存原来的低4位
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束
这段代码没有问题啊,为什么无法link成 exe呢???
作者: chouxiaoya1114 发布时间: 2011-11-28
16位程序都是保护模式的汇编。
作者: akirya 发布时间: 2011-11-28
用masm却不可以啊??/ 什么原因啊
有什么区别,我的 环境是xp ,
下载之后,就有三个exe : ml,masm ,link
程序见2楼
本程序通过编译,运行正确。
Code Segment
Assume CS:Code,DS:Code
VAR1 db 35h
RES1 db ?
RES2 db ?
Start: push cs
pop ds ;使数据段与代码段同段
; 设定字节型变量VAR1的内容为35H,编写程序将VAR1的高4位与低4位分离,分别作为低4位保存在RES1和RES2中,这两个变量高4位置0……
作者: chouxiaoya1114 发布时间: 2011-11-28
16位 书是8086 ,但是我们的电脑绝对是32位活以上,对吧?? 从cpu来看, 绝对是386及以上
16位只是实模式。。。。
这样的话, 不安装dos操作系统,那么我们的代码运行环境是32位 保护模式!!!
至于为什么出现一些int 21h(调用dos)
我也搞不清楚
难道说 模式是 虚拟模式!!!!!! 或者 保护模式
8086当然是保护模式下的汇编了
16位程序都是保护模式的汇编。
作者: chouxiaoya1114 发布时间: 2011-11-28
平常所说的DOS只是微软在Windows平台下模拟的一个命令行而已
作者: duke56 发布时间: 2011-11-28
懂了, 不用纯dos的 都是保护模式汇编
可视化的也叫windos汇编 比如:罗云并的
非可视化的叫 dos汇编,
纯dos的很少出现了
现在想找个DOS系统都难哦
平常所说的DOS只是微软在Windows平台下模拟的一个命令行而已
作者: chouxiaoya1114 发布时间: 2011-11-28
16位 书是8086 ,但是我们的电脑绝对是32位活以上,对吧?? 从cpu来看, 绝对是386及以上
16位只是实模式。。。。
这样的话, 不安装dos操作系统,那么我们的代码运行环境是32位 保护模式!!!
至于为什么出现一些int 21h(调用dos)
我也搞不清楚
难道说 模式是 虚拟模式!!!!!! 或者 保护模式
引用 2 楼 ……
xp 自带dos虚拟机。
win7就没了。
作者: akirya 发布时间: 2011-11-28
作者: pathuang68 发布时间: 2011-11-28
我只是想搞清楚概念而已
现在的运行环境都是windows的,
书上是不会说的
我不想成为: 看到visual c++ 就说,这是c++的人, 我是很理解为什么有的人一看到visual c++就说,这是c++ , 这是教材导致的, 老师又不说
学习汇编 8086教材, 根本不会说,虽然你学习的是8086 16 位,有时候看反汇编,其实是32位
32位汇编是 保护模式,不存在 16位的 16位去访问20根地址线
是CPU的汇编。
作者: chouxiaoya1114 发布时间: 2011-11-29
Code Segment
Assume CS:Code,DS:Code
VAR1 db 35h
RES1 db ?
RES2 db ?
Start: push cs
pop ds ;使数据段与代码段同段
; 设定字节型变量VAR1的内容为35H,编写程序将VAR1的高4位与低4位分离,分别作为低4位保存在RES1和RES2中,这两个变量高4位置0。
mov al,VAR1 ;读入字节型变量VAR1的内容
xor ah,ah
mov cl,4 ;移位次数
shl ax,cl
shr al,cl ;左移4位,拆分高4位与低4位
mov RES1,ah ;保存原来的高4位
mov RES2,al ;保存原来的低4位
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束
这说这代码吧??是16位的
我的环境是xp的, 我从来没有装过虚拟机,dos!!!!
里面有int 21h, 是调用dos的 , 是不是说明 它运行于 虚模式啊???
作者: chouxiaoya1114 发布时间: 2011-11-29
Code Segment
Assume CS:Code,DS:Code
VAR1 db 35h
RES1 db ?
RES2 db ?
Start: push cs
pop ds ;使数据段与代码段同段
; 设定字节型变量VAR1的内容为35H,编写程序将VAR1的高4位与低4位分离,分别作为低4位保存在RES1和RES2中,这两个变量高4位置0。
mov al,VAR……
都说了XP 自带dos虚拟机,为了兼容16位程序。
中断啥的都会转化到win32的相关函数来实现
作者: akirya 发布时间: 2011-11-29
懂了,在xp下要么是虚模式,要么是 保护模式
引用 10 楼 chouxiaoya1114 的回复:
Code Segment
Assume CS:Code,DS:Code
VAR1 db 35h
RES1 db ?
RES2 db ?
Start: push cs
pop ds ;使数据段与代码段同段
; 设定字节型变量VAR1的内容为35H,编写程序将VAR1的高4位与低4位分离,分别作为低4位保存在RES1和RES2中,……
作者: chouxiaoya1114 发布时间: 2011-11-29
汇编接近机器硬件指令(机器指令)。
认为汇编和c++一样的对象也无不可。
个人见解,非专业砖家,不过就这个意思,8910没错
作者: awtool 发布时间: 2011-11-29
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28