我正在看一些代码片段并看到这些行(.com文件的一部分):
DB 66;
CALL D59C:C2C0;
INT 69
MOV SI, C8C6
Run Code Online (Sandbox Code Playgroud)
怎么INT 69办?
我没有在网上找到任何东西,我也没有在这里找到任何东西:
奇怪的是,没有任何价值移动到AH或AL之前INT 69.
可能重复:
NASM 16位Intel
我正在为微处理器课程中的简单微处理器编写汇编代码.我正在编写一个程序:对从地址300开始存储在内存中的六个元素求和,但忽略那些80或以上(>=80h)或20十六进制或以下(<=20h)的那些元素.在6次比较后,程序应该停止甚至是否添加数字.
这是我的代码:
E 300 30 40 50 60 70 75
A 100
100:MOV AX,2FF
103:ADD AX,1
106:CMP AX,306
109:JAE 11C
10B:MOV BL,[AX]
10E:CMP BL,20
111:JBE 103
113:CMP BL,80
116:JAE 103
118:ADD CL,BL
11A:JMP 103
11C:INT3
Run Code Online (Sandbox Code Playgroud)
但我在这一行收到错误:
10B:MOV BL,[AX]
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么?
如果我的问题很愚蠢的话,我只是开始玩装配一点点,请原谅.
我的问题是关于这个(我试图将100除以5,当然要玩内存和变量!)

为什么DW(定义Word)指令是这样执行的?我的意思是,我了解所有其他线路,但对我来说尤其是黑暗的线路.
另外,你能解释一下为什么var在地址0010Ah被实例化了吗?我认为这是因为实例化之前的4个结构占用4*16bits = 4*2bytes = 8bytes,因此var就在堆栈之后立即归档.但教学不应该在其他地方吗?一旦程序开始运行,它们是否被加载到堆栈中?
奖金问题:如何查看emu8086中的堆栈内容?
我正在尝试debug.exe在64位系统上使用DOSBox .如果我手动输入命令,它完全正常.当我从文件重定向输入时:
debug < [file]
Run Code Online (Sandbox Code Playgroud)
它不起作用.在除第一行之外的每一行上都显示类似于此的错误:
DOSBox最终会挂起并崩溃.有没有什么办法解决这一问题?
我试图作为命令处理的输入文件是:
a 100
jmp 145
db 'Hello, World!', 0D, 0A, 'Press any key to continue . . .$'
a 145
mov ah, 09
mov dx, 102
int 21
mov ah, 08
int 21
int 20
rcx
100
n hello.com
w
q
Run Code Online (Sandbox Code Playgroud) 在我的学院关于8086 Assembly的文档中有以下示例:
TEST AL, 16 ; tests the 5th bit's state
Run Code Online (Sandbox Code Playgroud)
考虑到TEST指令的作用,这一点是否正确?它根据标记设置标记AL & 16.那怎么测试第5位?
注意:之前没有提到AL的值,正好在这里显示的内容,所以我认为这必须适用于一般情况.
我正在学习汇编程序,我需要一些帮助来理解调试器中的代码,尤其是标记的部分.
mov ax, a
mov bx, 4
Run Code Online (Sandbox Code Playgroud)
我知道上面的指令是如何工作的,但在调试器中我有"2EA10301"和"BB0400".
他们的意思是什么?
第一条指令将变量a从数据段移动到ax寄存器,但在调试器中我有cs:[0103].
这些括号和这些数字是什么意思?
谢谢你的帮助.
这是一个8086汇编程序,用于将8位十进制数转换为十六进制数.
在第14行,为什么我会收到下一个错误?
不正确的操作数类型
.model small
.data
d1 DB 81d
d1 DB 16d
res DB ?
.code
mov ax,@data
mov ds,ax
xor ax,ax
xor bx,bx
mov al,d1
mov bl,d2
div bl
ror ah,4 ;Error occurs here
add ah,al
mov ax,res
int 3h
align 16
End
Run Code Online (Sandbox Code Playgroud) 例如AH,当移位较高字节的位时,弹出的位会直接移动到CF,或者它会先进入低位字节,例如,AL?
我要进行汇编测试,并且对汇编指针有疑问。我正在尝试锻炼,但无法解决。
考虑一下C中的语句:
int x=100, y=200;
int far *ptx;
int far *pty;
Run Code Online (Sandbox Code Playgroud)
假设指令已经执行:
ptx=&x;
pty=(int *)malloc(sizeof(int));
Run Code Online (Sandbox Code Playgroud)
我的问题是关于如何在汇编中编码以下几点:
ptx=pty*ptx=*pty如何解决将8位值移至BX寄存器(16位)的问题?
mov al, 10h
mov bx, al
Run Code Online (Sandbox Code Playgroud)
为此,我得到:
operands do not match: 16 bit and 8 bit register
Run Code Online (Sandbox Code Playgroud)