标签: x86-16

将 DB 变量中的字节值加载到 16 位寄存器中(符号或零扩展字节)

我正在使用 MASM 编译器和 DOSBOX。我想将变量的值保存到寄存器中。我想将num1值保存到cx寄存器中。我怎样才能做到这一点?

      .MODEL SMALL
.STACK  50H
.DATA
num1 db '5'
    NL  DB  0DH, 0AH, '$'        
    msg     db ?,0AH,0DH,"Enter an odd number between 0 to 10:$"
     nxtline db 0Ah,0DH,"$"
.CODE
MAIN PROC
    MOV AX, @DATA
    MOV DS, AX
    
    
            
              LEA DX,msg     
              mov ah,9
              int 21H
              LEA DX,nxtline    
              mov ah,9
              int 21H
              
              MOV AH,1                    
              INT 21H 
              LEA DX,nxtline    
              mov ah,9
              int 21H
              
              
              
       mov bl,al   ;save the value from input
              mov num1,bl
               LEA DX,num1     
              mov ah,9
              int 21H …
Run Code Online (Sandbox Code Playgroud)

assembly dos masm dosbox x86-16

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

8086汇编寄存器间接MOV指令

我只是想问:为什么我写的时候:

MOV DL, [BX] 
Run Code Online (Sandbox Code Playgroud)

它有效,但是当我写:

MOV DL, [AX]
Run Code Online (Sandbox Code Playgroud)

不是吗?

assembly low-level x86-16 emu8086

-1
推荐指数
1
解决办法
321
查看次数

谁负责定义/设计计算机的中断?

我练习汇编已经有一段时间了,我在 YouTube 上看到了一个教你如何制作引导加载程序的视频。在观看视频时,我的脑海中出现了“int”是什么的问题。开始搜索,发现是interrupt的缩写。我想到了“什么是中断?”。我再次搜索并开始了解。但是,我很好奇中断是如何产生的,它们是如何产生的?...制造商会自己产生中断吗?或者是什么?

assembly interrupt bios firmware x86-16

-1
推荐指数
1
解决办法
58
查看次数

为什么在 8086 中不能同时使用 SI 和 DI 或 BX 和 BP 寄存器进行间接寻址?

我知道它们是唯一可以用于间接寻址的寄存器,但我找不到解释为什么我不能同时使用这些寄存器对。

为什么机器不支持这样的寻址方式[si+di]

assembly cpu-architecture addressing-mode x86-16

-1
推荐指数
1
解决办法
487
查看次数

程序集“Hello world”执行文件小于 20 字节

下面的代码占用 20 个字节。然而,有一种方法可以通过中断使其变得更小。如何?

\n
A\nMOV AH,9\nMOV DX,108\nINT 21\nRET\nDB 'HELLO WORLD$'\n\nR CX\n14\nN MYHELLO.COM\nW \n
Run Code Online (Sandbox Code Playgroud)\n

assembly dos code-size x86-16

-1
推荐指数
1
解决办法
484
查看次数

装配程序中的无限循环

我用这个8086汇编程序进行字符串比较,但它包含一个无限循环.我检查并重新检查.谁能找到我错的地方?

org 100
jmp start
str1: db "hello$"
str2: db "ello$"


start: 
lea bx,str1
mov si,bx
lea ax,str2
mov di,ax  
mov ax,1234
jmp compare

compare:
mov bl,[si]
cmp [di],bl
jne notequal
cmp bx,'$'
je equal
inc si
inc di
jmp compare

notequal:
mov ax,0000h 
hlt

equal:
mov bx,0001h
hlt
  ret         
Run Code Online (Sandbox Code Playgroud)

assembly x86-16

-2
推荐指数
1
解决办法
1429
查看次数

如何使用DOS中断将寄存器值传输到并行端口?

我必须了解我的工作的一个小概念.我必须使用8086使用汇编语言中的DOS中断将存储在寄存器中的值传送到并行端口.以下是需要澄清的微小代码.

[org 0x0100]
mov AL, 01001011      ;any value in AL register that is to be transmitted
(...here...how to transmit it to parallel ports using DOS Interrupt?)
Run Code Online (Sandbox Code Playgroud)

x86 assembly dos interrupt x86-16

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

汇编代码跳过一条线?

为什么我的汇编代码跳过一行?它一直在跳线mov AX,A

org 100h
count equ 2
A DW 5
B DW 6
Y0 DW ?
Y1 DW ?    
mov AX,A     
add AX,B
sub AX,count
mov Y0,AX
mov BX,B
neg BX
add BX,count
mov Y1,BX 
ret
Run Code Online (Sandbox Code Playgroud)

x86 assembly x86-16

-2
推荐指数
1
解决办法
808
查看次数

-2
推荐指数
1
解决办法
447
查看次数

是否可以在8086汇编中操作指令指针?

我想知道我是否可以在8086汇编中操作(读取和更改值)指令指针(IP).

例如,

说IP当前正在存储0200h.我想读取这个值并将其更改为其他内容4020h.我怎么能这样做?

assembly x86-16

-2
推荐指数
1
解决办法
1301
查看次数