Assembly 如何将值从输入AL移动到寻址寄存器,如16位的BX

Assembly 如何将值从输入AL移动到寻址寄存器,如16位的BX,assembly,Assembly,我陷入了这段代码中…我想从用户那里获取一个输入,并将其移动到寄存器中…但寄存器是16位的,输入存储在8位的Al中。。。有没有办法将值从AL移到BX这样的寄存器…我这样做是因为我想在数组中使用BX,比如数组[BX]。。。。请帮我解决这个问题 .MODEL SMALL .STACK 100H .DATA MSG DB 10,13,"TIC TAC TOE $" MSG1 DB " $" ARR1 DB '1','2','3','4','5','6','7','8','9' MSG2 DB 10,

我陷入了这段代码中…我想从用户那里获取一个输入,并将其移动到寄存器中…但寄存器是16位的,输入存储在8位的Al中。。。有没有办法将值从AL移到BX这样的寄存器…我这样做是因为我想在数组中使用BX,比如数组[BX]。。。。请帮我解决这个问题

.MODEL SMALL
.STACK 100H
.DATA
MSG DB 10,13,"TIC TAC TOE $"
MSG1 DB "   $"
ARR1 DB '1','2','3','4','5','6','7','8','9'
MSG2 DB 10,13,"PLAYER 1 WIN $"
MSG3 DB 10,13,"PLAYER 2 WIN $"
MSG4 DB 10,13,"GAME DRAW $"
VAR DW ?
PLAYER1 EQU 'X'
PLAYER2 EQU 'O'
.CODE
MAIN PROC
    MOV AX , @DATA
    MOV DS , AX


NEXT_LINE1: 
    MOV BX , 0             ;counter
NEXT_LINE:                     ;this loop will shape the array in matrix form 
    MOV AH , 2
    MOV DL , 0AH           ; move on next line
    INT 21H
    MOV DL , 0DH
    INT 21H
    MOV CX , 3
L1:
    MOV AH , 2            ;display content of array
    MOV DL , ARR1[BX]
    INT 21H
    MOV AH , 9
    LEA DX , MSG1      ;msg to show space between characters.. like 1  2  3 ,,,, 4  5  6
    INT 21H
    INC BX
    CMP BX , 10
    JE ELSE_IF
    LOOP L1
    JMP NEXT_LINE

ELSE_IF:
    MOV BX , 0

                       ;take input from user
    MOV AH , 1
    INT 21H
    SUB AL , 1
    ADD BX , AL        ;try to save it into register like bx , si , di ...
    MOV DX , 'X'
    MOV  ARR1[BX] , DL
    JMP NEXT_LINE1  

    MOV AH , 4CH
    INT 21H
MAIN ENDP
    END MAIN
有几个选择:

movzx bx, al     ; move with zero-extend

movsx bx, al     ; move with sign extend

xor bx, bx       ; clear bx 
mov bl, al
有几个选择:

movzx bx, al     ; move with zero-extend

movsx bx, al     ; move with sign extend

xor bx, bx       ; clear bx 
mov bl, al

正如@michael所说,有一些方法。(8086总成):

更正确的方法:

cbw    ; sign extend al into ax (if it is negative)
mov bx, ax

正如@michael所说,有一些方法。(8086总成):

更正确的方法:

cbw    ; sign extend al into ax (if it is negative)
mov bx, ax

可能重复,请在此处检查答案:可能重复,请在此处检查答案: