Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
在微控制器中将数据从内存移至内存
为什么我们不能直接将数据从一个内存位置移动到另一个内存位置 如果我问了一个愚蠢的问题 请原谅我 但我认为这是真实的情况 至少对于我遇到的情况而言 8085 8086 n 80386 我并不是真正在寻找移动数据的解决方案 例如 使用 movs
microcontroller
x8616
microprocessors
NASM:如何正确访问SSD驱动器?
我需要使用 NASM 16 位代码访问 SSD 驱动器 访问普通硬盘时 需要设置寄存器AX DX CX来选择柱面 磁道 扇区 扇区数 AH 选择读扇区功能 DL 选择驱动器号 CH 选择气缸 DH 选择磁盘上的一侧 CL 选择步入正轨的部门
Assembly
nasm
x8616
harddrive
solidstatedrive
INT 13h 无法读取超出特定扇区的数据
我正在为我的操作系统编写内核 在将磁盘扇区加载到内存时遇到问题 以下是从磁盘加载扇区的函数代码部分 mov ax 0x3000 mov es ax mov ax 0x0201 mov bx word ptr bp 6 bx 0x000 0x
Assembly
x8616
osdev
BIOS
16 位模式下的操作数大小前缀
我试图理解 GAS 的行为 code16 从手册上看 在16位部分 对于32位操作数或指令 会产生66H操作数覆盖前缀用于指令编码 这是否意味着 code16 movw eax ebx 这种模式合法吗 那么代码不能在16位处理器上运行吗 这
overriding
x8616
operands
标志寄存器中保留/未定义位的用途是什么?
在 Z80 8080 8085 和 8086 处理器的标志寄存器中 被记录为 保留 或 未定义 的位 1 3 5 的用途是什么 这些位未使用 也就是说 没有指令明确地将它们设置为任何值 设计人员认为 5 6 个标志就足够了 他们只是将标志寄
cpuarchitecture
x8616
z80
8085
intel8080
汇编器8086将32位数字除以16位数字
我尝试将 32 位数字除以 16 位数字 例如 10000000h 除以 2000h 根据我尝试做的设计除以 右 4 位数字除以除数 然后左 4 位数字除以除数 这是我的代码 DATA num dd 10000000h divisor dw
Assembly
x86
Division
x8616
使用 Turbo C 编译并链接到 .com 文件
我正在尝试使用 Turbo C 编译器和链接器编译一个简单的程序并将其链接到 DOS com 文件 我尝试了我能想到的最简单的 C 程序 void main Turbo C 链接器中是否有链接到 com 文件的命令行参数 我从链接器收到的错
Linker
DOS
x8616
memorymodel
turboc
如何在程序中将自己缝合到自己的尾部,无限循环地封装 64KB 代码段?
如果指令的顺序执行经过偏移量 65535 则8086将从同一代码段中的偏移量 0 处获取下一个指令字节 接下来的 COM 程序利用这一事实 不断将其整个代码 总共 32 个字节 缝合到自己的尾部 环绕在 64KB 代码段中 你可以称之为二元
Assembly
x86
x8616
infinite
memorysegmentation
寄存器寻址模式与直接寻址模式
我在试卷中遇到过这个问题 它指出 哪种给定的寻址模式更快 为什么 寄存器寻址方式 直接寻址方式 现在根据我的说法 寄存器寻址模式应该更快 因为寄存器是计算机中最快的存储位置 这是正确答案吗 请帮忙 谢谢 两种寻址模式之间的区别是 地址的来源
Assembly
x8616
addressingmode
汇编8086监听键盘中断
我有与此完全相同的问题 边画边听键盘 https stackoverflow com questions 13970325 8086 listen to keyboard while drawing 但第一个答案 接受的答案 只听键盘一次
Assembly
x8616
keyboardinterrupt
汇编基础知识:输出寄存器值
我刚刚开始学习汇编语言 我已经陷入了 在屏幕上显示存储在寄存器中的十进制值 的部分 我使用 emu8086 任何帮助将不胜感激 model small Specifies the memory model used for program
Assembly
DOS
x8616
emu8086
在 x86 程序集中将整数打印到控制台
当我在 16 位汇编中添加两个值时 将结果打印到控制台的最佳方法是什么 目前我有这个代码 CODE START mov ax 1 put 1 into ax add ax 2 add 2 to ax current value mov ah
Assembly
x8616
DOS
16bit
即使我确实为变量设置了初始值,数据段也没有被初始化
我已经编写了一个代码 该代码应该生成某种数字列表 但是即使我为它们分配了初始值 我的数据段变量也没有被初始化 This is how DS 0000 looks when I run it 这是我的代码 但数据段只保留垃圾值 MODEL s
Assembly
initialization
DOS
x8616
memorysegmentation
在 REP MOVSW 之前 PUSH CS / POP DS 的目的是什么?
为什么在下面的代码中我们压入代码段 PUSH CS 然后将其弹出到数据段 POP DS 我将这些行明确指定为 line1 和 line2 请告诉我 MOVSW 在这里是如何工作的 IF HIGHMEMORY PUSH DS MOV BX D
Assembly
x8616
realmode
我试图在 AAM 指令之后使用 AX 中存储的值将其除以 2,为什么它不适用于 2 位数字输出?
英语不是我的母语 请原谅输入错误 我将在此处显示的代码是一项作业 我真的需要了解发生了什么事 我在 DosBox 0 74 和 TASM 汇编器中使用 Intel 8086 语法 当我必须除以 2 时 代码的问题在于三角形的面积 注意 程序
Assembly
x8616
tasm
DOSBOx
x86 Assembly:很难找到无限循环挑战的想法
我打算和我的朋友们进行一场类似于 corewars 的比赛 我们使用与原始游戏相同的内存网格 在游戏中 我们每个人都应该写一个 保险箱 它是一个不超过 25 行的无限循环 每个 安全 都有一个技巧或代码可以停止循环 从而破坏 安全 例如 S
Assembly
x8616
corewars
自定义键盘中断处理程序
我正在尝试编写一个简单的程序 将标准键盘中断替换为自定义的键盘中断 以减少变量 但是 如果不调用旧处理程序 它就无法工作 这是我的中断处理程序 handler proc push ax push di dec EF pushf when t
Assembly
DOS
MASM
x8616
interrupthandling
在汇编程序中将十进制转换为二进制
我的第一个汇编程序需要帮助 我必须将用户输入的值从十进制转换为二进制 我不知道如何将值显示为小数 以及下一步应该做什么 谁能一步一步指导我下一步做什么 model small stack 100h data txt1 db Enter bi
Assembly
Binary
Decimal
DOS
x8616
查找输入字符串中的子字符串
我有这个汇编程序 我需要在我输入的主字符串中找到子字符串 我的问题是 即使我输入了两个完全不同的单词 它总是输出 找到的单词 我不知道我的循环或条件的哪一部分是错误的 请帮我弄清楚 另外 请建议一些可用于检查子字符串的字符串指令 以便我可以
string
Assembly
x8616
strStr
为什么使用 mov/cmp 而不是带有两个内存操作数的 cmp? [复制]
这个问题在这里已经有答案了 我在执行二分搜索程序代码时发现了以下语句 l1 mov si low cmp si high 为什么我们需要将 low 存储在 si 中然后与 high 进行比较 不可以直接写cmp low high 你不能写c
Assembly
x8616
instructions
MOV
1
2
3
4
5
6
7
»