标签: x86-16

什么是x86 16位汇编语言中的中断69?

我正在看一些代码片段并看到这些行(.com文件的一部分):

  DB 66; 
  CALL D59C:C2C0; 
  INT 69
  MOV SI, C8C6
Run Code Online (Sandbox Code Playgroud)

怎么INT 69办?

我没有在网上找到任何东西,我也没有在这里找到任何东西:

奇怪的是,没有任何价值移动到AHAL之前INT 69.

EMU8086.8086微处理器仿真器.集成拆卸器.

x86 assembly windows-xp x86-16

0
推荐指数
1
解决办法
620
查看次数

MOV BL,[AX]错误

可能重复:
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)

有谁知道为什么?

assembly microprocessors systems-programming x86-16

0
推荐指数
1
解决办法
3684
查看次数

程序集x86了解定义Word(DF)指令

如果我的问题很愚蠢的话,我只是开始玩装配一点点,请原谅.

我的问题是关于这个(我试图将100除以5,当然要玩内存和变量!)

https://dl.dropboxusercontent.com/u/78049918/Pics/Capture.png

为什么DW(定义Word)指令是这样执行的?我的意思是,我了解所有其他线路,但对我来说尤其是黑暗的线路.

另外,你能解释一下为什么var在地址0010Ah被实例化了吗?我认为这是因为实例化之前的4个结构占用4*16bits = 4*2bytes = 8bytes,因此var就在堆栈之后立即归档.但教学不应该在其他地方吗?一旦程序开始运行,它们是否被加载到堆栈中?

奖金问题:如何查看emu8086中的堆栈内容?

x86 assembly x86-16

0
推荐指数
1
解决办法
665
查看次数

DOSBox:debug.exe读取文件 - 错误地处理命令

我正在尝试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)

assembly dosbox x86-16

0
推荐指数
1
解决办法
1万
查看次数

16位的按位AND(或TEST)如何测试第5位?

在我的学院关于8086 Assembly的文档中有以下示例:

TEST AL, 16      ; tests the 5th bit's state
Run Code Online (Sandbox Code Playgroud)

考虑到TEST指令的作用,这一点是否正确?它根据标记设置标记AL & 16.那怎么测试第5位?

注意:之前没有提到AL的值,正好在这里显示的内容,所以我认为这必须适用于一般情况.

x86 assembly bitwise-operators x86-16

0
推荐指数
1
解决办法
238
查看次数

理解8086汇编程序调试器

我正在学习汇编程序,我需要一些帮助来理解调试器中的代码,尤其是标记的部分.

mov     ax, a
mov     bx, 4
Run Code Online (Sandbox Code Playgroud)

我知道上面的指令是如何工作的,但在调试器中我有"2EA10301"和"BB0400".

他们的意思是什么?
第一条指令将变量a从数据段移动到ax寄存器,但在调试器中我有cs:[0103].

这些括号和这些数字是什么意思?

在此输入图像描述

谢谢你的帮助.

debugging assembly x86-16

0
推荐指数
1
解决办法
634
查看次数

错误:"操作数类型不正确"

这是一个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)

assembly x86-16

0
推荐指数
1
解决办法
741
查看次数

SHR对寄存器高字节的影响

例如AH,当移位较高字节的位时,弹出的位会直接移动到CF,或者它会先进入低位字节,例如,AL

x86 assembly x86-16

0
推荐指数
1
解决办法
139
查看次数

如何将Turbo-C远端指针分配和取消引用转换为x86程序集?

我要进行汇编测试,并且对汇编指针有疑问。我正在尝试锻炼,但无法解决。

考虑一下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)

我的问题是关于如何在汇编中编码以下几点:

  1. ptx=pty
  2. *ptx=*pty

c assembly tasm turbo-c++ x86-16

0
推荐指数
1
解决办法
157
查看次数

MOV 8位至16位寄存器(AL至BX)

如何解决将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)

assembly sign-extension x86-16 emu8086 zero-extension

0
推荐指数
1
解决办法
99
查看次数