枫尘冉 发表于 2024-3-11 00:57:12

P11 寄存器(CPU工作原理)06 Debug问题

本帖最后由 枫尘冉 于 2024-3-11 01:00 编辑

Win10进入不到Debug里面怎么办{:5_96:}

FishC 发表于 2024-3-11 00:57:24

哈哈,Win10进不到Debug模式可不能急,我们来一步步解决这个问题。

首先,确保你的电脑上已经安装了Visual Studio(VS)软件。如果没有安装的话,去官网(https://visualstudio.microsoft.com/)下载并安装一个合适的版本。

接下来,打开VS软件,点击菜单栏的“文件”->“新建”->“项目”。在弹出的对话框中选择“空项目”,然后点击“确定”。

项目创建完成后,你会看到一个空白的代码编辑器。在代码编辑器中输入以下代码:

#include <iostream>

int main() {
    int a = 10;
    std::cout << "The value of a is: " << a << std::endl;
    return 0;
}

这是一个简单的C++程序,它定义了一个整型变量a并给它赋值为10,然后输出a的值到控制台。

接下来,点击菜单栏的“调试”->“开始调试”->“开始执行”。你还可以使用快捷键F5来启动调试。

此时,VS会自动编译你的代码,并启动一个调试会话。你会看到控制台窗口弹出,并显示出程序输出的内容:“The value of a is: 10”。

这样,你就成功进入了Debug模式。你可以在调试过程中观察程序的变量值、执行流程等,帮助你分析程序的行为。

希望这个解决方案对你有帮助,如果还有其他问题,尽管提问哦!{:5_137:}

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

枫尘冉 发表于 2024-3-11 01:15:46

FishC 发表于 2024-3-11 00:57
哈哈,Win10进不到Debug模式可不能急,我们来一步步解决这个问题。

首先,确保你的电脑上已经安装了Visu ...

不会下载怎么办,没有更简单的方法吗?

FishC 发表于 2024-3-11 01:15:57

枫尘冉 发表于 2024-03-11 01:15
不会下载怎么办,没有更简单的方法吗?

当然有更简单的方法啦!如果你只是想进行简单的调试,可以使用在线代码编辑器和调试器。下面我介绍一个比较常用的在线平台——Replit。

首先,打开浏览器并前往Replit网站(https://replit.com/)。在右上角点击“Sign Up”按钮,如果你没有账号的话就注册一个新账号。

注册完成后,点击页面上方的“+ New repl”按钮,选择“C++”作为编程语言。接着,给你的项目取一个名字,然后点击“Create repl”按钮。此时,一个新的C++项目就创建好了。

在左侧的文件列表中,你会看到一个名为“main.cpp”的文件。点击它,将打开一个在线的代码编辑器。在这里,你可以编写你的C++代码。

接下来,输入以下代码:
#include <iostream>

int main() {
    int a = 10;
    std::cout << "a的值为:" << a << std::endl;
    return 0;
}

代码编写完成后,点击页面上方的绿色运行按钮。Replit会自动编译并运行你的代码,在右侧的控制台输出窗口中,你将看到程序输出的结果。

这样,你就可以在Replit平台上进行简单的调试了,而无需下载和安装额外的软件。当然,如果你要进行更复杂的调试或者学习更深入的CPU工作原理,还是推荐使用本地开发环境,如Visual Studio。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

枫尘冉 发表于 2024-3-11 01:25:41

FishC 发表于 2024-3-11 01:15
当然有更简单的方法啦!如果你只是想进行简单的调试,可以使用在线代码编辑器和调试器。下面我介绍一个 ...

创建不了账号呀,还有没有别的办法?{:5_96:}

FishC 发表于 2024-3-11 01:25:53

枫尘冉 发表于 2024-03-11 01:25
创建不了账号呀,还有没有别的办法?{:5_96:}

嗯,如果你在Replit上创建不了账号,也可以尝试使用其他在线代码编辑器和调试器。有一个叫做CodePen(https://codepen.io/)的平台非常适合这个需求。打开CodePen网站后,点击右上角的“Sign Up”按钮注册一个账号。注册完成后,点击页面左上角的“New Pen”按钮创建一个新的项目。此时会有一个空白的代码编辑器出现在页面上。在这里,你可以输入以下代码:#include <iostream>int main() {    int a = 10;    std::cout << "a的值是:" << a << std::endl;    return 0;}然后点击右上角的“Run”按钮,代码就会被编译和执行。你会在页面下方的输出窗口中看到程序输出的结果。

总之,这些在线编辑器和调试器不需要你下载任何软件,直接在浏览器中就可以使用,非常方便。希望这些方法对你有帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

人造人 发表于 2024-3-11 23:47:07

装一个虚拟机,在虚拟机里面安装xp,用xp学习8086汇编语言

枫尘冉 发表于 2024-3-12 01:35:04

人造人 发表于 2024-3-11 23:47
装一个虚拟机,在虚拟机里面安装xp,用xp学习8086汇编语言

这也太麻烦了吧

人造人 发表于 2024-3-12 01:51:35

枫尘冉 发表于 2024-3-12 01:35
这也太麻烦了吧

学编程你还怕麻烦?
最简单的办法就是不学编程
对不对?
这肯定就不麻烦了

枫尘冉 发表于 2024-3-12 01:56:36

人造人 发表于 2024-3-12 01:51
学编程你还怕麻烦?
最简单的办法就是不学编程
对不对?


麻烦是一回事,问题是我不会搞呀{:10_266:}

枫尘冉 发表于 2024-3-12 01:58:41

本帖最后由 枫尘冉 于 2024-3-12 02:05 编辑

人造人 发表于 2024-3-12 01:51
学编程你还怕麻烦?
最简单的办法就是不学编程
对不对?


刚好问一下你
检测点3.1

(1)在DEBUG中,用 "D 0:0 lf" 查看内存,结果如下:

0000:0000 70 80 F0 30 EF 60 30 E2-00 80 80 12 66 20 22 60

0000:0010 62 26 E6 D6 CC 2E 3C 3B-AB BA 00 00 26 06 66 88

下面的程序执行前,AX=0,BX=0,写出每条汇编指令执行完后相关寄存器中的值

mov ax,1

mov ds,ax

mov ax,ax= 2662H(答案)

上面的ax为什么等于2662H
不应该等于8070的吗?

人造人 发表于 2024-3-12 02:14:55

枫尘冉 发表于 2024-3-12 01:58
刚好问一下你
检测点3.1



mov ax,    从ds:0的位置读取一个字到ax
ds的值是1
段寄存器的值左移4位(乘以16),然后再加偏移,就是要读取的那个字数据所在的地址
1 << 4 == 0x10
0x10 + 0 == 0x10

所以从0x10的地方读取

0000:0010
段从0开始,偏移是0x10
(0 << 4) + 0x10 == 0x10
所以就从0000:0010开始读取

人造人 发表于 2024-3-12 11:32:38

8086通过 段地址:偏移地址 的形式访问内存
0000:0010 就是 (0 << 4) + 0x10 == 0x10,物理内存地址就是 0x10
0001:0000 就是 (1 << 4) + 0 == 0x10,也是物理内存地址 0x10

0000:0010和0001:0000指的都是同一个物理内存地址

枫尘冉 发表于 2024-3-12 23:53:36

人造人 发表于 2024-3-12 11:32
8086通过 段地址:偏移地址 的形式访问内存
0000:0010 就是 (0

谢谢,如果我没想错应该就是想对了

枫尘冉 发表于 2024-3-13 01:09:13

人造人 发表于 2024-3-12 11:32
8086通过 段地址:偏移地址 的形式访问内存
0000:0010 就是 (0

这个mov ax,1
这个数字1是十进制的吧,没加大写H

人造人 发表于 2024-3-13 12:40:45

枫尘冉 发表于 2024-3-13 01:09
这个mov ax,1
这个数字1是十进制的吧,没加大写H

debug中默认是16进制

枫尘冉 发表于 2024-3-14 00:22:08

人造人 发表于 2024-3-13 12:40
debug中默认是16进制

所以mov ax,1与mov ax,1H是一样的吧

枫尘冉 发表于 2024-3-14 00:24:56

人造人 发表于 2024-3-11 23:47
装一个虚拟机,在虚拟机里面安装xp,用xp学习8086汇编语言

我装了windows10自带的虚拟机,这个xp是什么

人造人 发表于 2024-3-14 09:59:56

枫尘冉 发表于 2024-3-14 00:22
所以mov ax,1与mov ax,1H是一样的吧

首先,数字1还分多少进制吗?多少进制中的1不是1 ?
另外,debug中默认就是16进制,没有后缀h,有了反而不行
你可以在debug中试试么

人造人 发表于 2024-3-14 10:01:40

枫尘冉 发表于 2024-3-14 00:24
我装了windows10自带的虚拟机,这个xp是什么

百度,windows xp
页: [1] 2
查看完整版本: P11 寄存器(CPU工作原理)06 Debug问题