Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 如何在emu8086中打印寄存器的内容?_Assembly - Fatal编程技术网

Assembly 如何在emu8086中打印寄存器的内容?

Assembly 如何在emu8086中打印寄存器的内容?,assembly,Assembly,您可以按原样显示AX,但会在屏幕上看到奇怪的字符。需要一个将二进制(AX)转换为字符串的过程。接下来的代码将一个数字放入AX,将AX转换为字符串,并显示该字符串。您可以在以后的程序中使用过程number2string。在EMU8086中复制粘贴下一个代码并运行: include 'emu8086.inc' #make_com# org 100h s1 dw 50,60,70,80,90,100,120,130,140,160,170,190,190,220,250,270,300

您可以按原样显示AX,但会在屏幕上看到奇怪的字符。需要一个将二进制(AX)转换为字符串的过程。接下来的代码将一个数字放入AX,将AX转换为字符串,并显示该字符串。您可以在以后的程序中使用过程number2string。在EMU8086中复制粘贴下一个代码并运行:

include 'emu8086.inc'
#make_com#

org 100h

s1 dw 50,60,70,80,90,100,120,130,140,160,170,190,190,220,250,270,300

    MOV SI,0
    MOV CX,16

s2:
    MOV AX,s1[SI]

s3:
    INC SI
    CMP AX,100
    JBE s4
    JA s5

s4:
    PRINTf AX
    JMP s3

s5:
    CMP AX,200
    JB s6
    JA s7

s6:
    PRINTf AX
    JMP s3

s7:
    PRINTf AX
    JMP s3

    END
    ;printf AX doesn't work and i want to print the contents of AX

再解释一下:对于将来的程序,过程number2string需要在数据段中使用一个名为“str”的变量。正如您在代码中看到的,“str”的长度为6,因为AX可以容纳5位或更少的数字,如果您想显示它,字符串需要“$”符号,这就是长度为6的原因。number2string的参数必须放在AX上。当然,您可以更改变量名(str)和使用的寄存器(AX)。

您可以按原样显示AX,但您会在屏幕上看到奇怪的字符。需要一个将二进制(AX)转换为字符串的过程。接下来的代码将一个数字放入AX,将AX转换为字符串,并显示该字符串。您可以在以后的程序中使用过程number2string。在EMU8086中复制粘贴下一个代码并运行:

include 'emu8086.inc'
#make_com#

org 100h

s1 dw 50,60,70,80,90,100,120,130,140,160,170,190,190,220,250,270,300

    MOV SI,0
    MOV CX,16

s2:
    MOV AX,s1[SI]

s3:
    INC SI
    CMP AX,100
    JBE s4
    JA s5

s4:
    PRINTf AX
    JMP s3

s5:
    CMP AX,200
    JB s6
    JA s7

s6:
    PRINTf AX
    JMP s3

s7:
    PRINTf AX
    JMP s3

    END
    ;printf AX doesn't work and i want to print the contents of AX

再解释一下:对于将来的程序,过程number2string需要在数据段中使用一个名为“str”的变量。正如您在代码中看到的,“str”的长度为6,因为AX可以容纳5位或更少的数字,如果您想显示它,字符串需要“$”符号,这就是长度为6的原因。number2string的参数必须放在AX上。当然,您可以更改变量名(str)和使用的寄存器(AX)。

您可以按原样显示AX,但您会在屏幕上看到奇怪的字符。需要一个将二进制(AX)转换为字符串的过程。接下来的代码将一个数字放入AX,将AX转换为字符串,并显示该字符串。您可以在以后的程序中使用过程number2string。在EMU8086中复制粘贴下一个代码并运行:

include 'emu8086.inc'
#make_com#

org 100h

s1 dw 50,60,70,80,90,100,120,130,140,160,170,190,190,220,250,270,300

    MOV SI,0
    MOV CX,16

s2:
    MOV AX,s1[SI]

s3:
    INC SI
    CMP AX,100
    JBE s4
    JA s5

s4:
    PRINTf AX
    JMP s3

s5:
    CMP AX,200
    JB s6
    JA s7

s6:
    PRINTf AX
    JMP s3

s7:
    PRINTf AX
    JMP s3

    END
    ;printf AX doesn't work and i want to print the contents of AX

再解释一下:对于将来的程序,过程number2string需要在数据段中使用一个名为“str”的变量。正如您在代码中看到的,“str”的长度为6,因为AX可以容纳5位或更少的数字,如果您想显示它,字符串需要“$”符号,这就是长度为6的原因。number2string的参数必须放在AX上。当然,您可以更改变量名(str)和使用的寄存器(AX)。

您可以按原样显示AX,但您会在屏幕上看到奇怪的字符。需要一个将二进制(AX)转换为字符串的过程。接下来的代码将一个数字放入AX,将AX转换为字符串,并显示该字符串。您可以在以后的程序中使用过程number2string。在EMU8086中复制粘贴下一个代码并运行:

include 'emu8086.inc'
#make_com#

org 100h

s1 dw 50,60,70,80,90,100,120,130,140,160,170,190,190,220,250,270,300

    MOV SI,0
    MOV CX,16

s2:
    MOV AX,s1[SI]

s3:
    INC SI
    CMP AX,100
    JBE s4
    JA s5

s4:
    PRINTf AX
    JMP s3

s5:
    CMP AX,200
    JB s6
    JA s7

s6:
    PRINTf AX
    JMP s3

s7:
    PRINTf AX
    JMP s3

    END
    ;printf AX doesn't work and i want to print the contents of AX
再解释一下:对于将来的程序,过程number2string需要在数据段中使用一个名为“str”的变量。正如您在代码中看到的,“str”的长度为6,因为AX可以容纳5位或更少的数字,如果您想显示它,字符串需要“$”符号,这就是长度为6的原因。number2string的参数必须放在AX上。当然,您可以更改变量名(str)和使用的寄存器(AX)

);printf AX不工作,我想打印AX的内容

你还没有告诉我们PRINTf应该做什么。因此,所有的
printfax
宏调用都可以

但是,您的程序确实有两个错误,使其无法正确执行

  • COM程序从顶部开始执行,但这是您放置数据的位置。这不能执行!所以要么把数据放在代码下面,要么跳过数据
  • 您使用的数据是字大小的,因此在对数据进行迭代时需要向SI寄存器添加2
  • );printf AX不工作,我想打印AX的内容

    你还没有告诉我们PRINTf应该做什么。因此,所有的
    printfax
    宏调用都可以

    但是,您的程序确实有两个错误,使其无法正确执行

  • COM程序从顶部开始执行,但这是您放置数据的位置。这不能执行!所以要么把数据放在代码下面,要么跳过数据
  • 您使用的数据是字大小的,因此在对数据进行迭代时需要向SI寄存器添加2
  • );printf AX不工作,我想打印AX的内容

    你还没有告诉我们PRINTf应该做什么。因此,所有的
    printfax
    宏调用都可以

    但是,您的程序确实有两个错误,使其无法正确执行

  • COM程序从顶部开始执行,但这是您放置数据的位置。这不能执行!所以要么把数据放在代码下面,要么跳过数据
  • 您使用的数据是字大小的,因此在对数据进行迭代时需要向SI寄存器添加2
  • );printf AX不工作,我想打印AX的内容

    你还没有告诉我们PRINTf应该做什么。因此,所有的
    printfax
    宏调用都可以

    但是,您的程序确实有两个错误,使其无法正确执行

  • COM程序从顶部开始执行,但这是您放置数据的位置。这不能执行!所以要么把数据放在代码下面,要么跳过数据
  • 您使用的数据是字大小的,因此在对数据进行迭代时需要向SI寄存器添加2

  • 必须将其转换为字符串,然后显示。必须将其转换为字符串,然后显示。必须将其转换为字符串,然后显示。必须将其转换为字符串,然后显示。