你好,我一直在练习编写汇编语言,我一直在研究这个看似简单的代码。我希望提示用户输入,然后将输入放入一个数组中。然后我想打印出数组。我知道我可以将它们打印出来,而不是将它们放入数组中,但这只是为了我的练习。有些地方就是不对劲,尽管它不会把它们打印出来。
.data
array: .space 400
prompt: .asciiz "Enter an integer (0 to quit) :"
text: .asciiz "After sorting, the list of integers is:"
.text
.globl mai
我是一个用MIPS汇编编程的初学者,我想知道在我读完一个数字后如何打印它的第一个数字。
.data
number_1: .word
.text
#read in first number
li $v0, 5
syscall
sw $v0, number_1
#print first digit
li $v0, 1
lw $a0, number_1
syscall
#end program
li $v0, 10
syscall
例如,如果我输入590,我只想打印'5‘。另外,我如何分别打印下两个数字?
使用上面的代码,它只打印我输入的整数: 590我尝试了lb,而不是lw,但它打
我们正在使用ARM200学习汇编语言。我有32个整数填充的内存的一部分。我需要能够将这32个整数打印到屏幕上。我可以很容易地打印出数字0- 9,只需将数字0的ASCII值与寄存器中的值相加,但我非常困惑如何打印大于9的数字。
Print LDR r5, [r2] ;load whats in that part of memory to r5.
CMP r5, #9 ;compare if number is greater or less then 9
ADDLE r0, r5, #"0"
.global main # makes label "main" globally known
.text # Instructions follow
.align 2 # Align instructions to 4-byte words
main: movi r16,0x47 # Load the hexadecimal value 41
# t
因此,为了学习目的,我阅读了一些汇编代码,并遇到了以下两个说明:
add register, value
add register, 'value' ; Where the value is now in single quotes
这两者有什么区别?
在我被火烧之前如果这是个复制品。我在这里问过,因为我不知道谷歌到底该怎么回答这个问题。
我目前正在进行一个项目,要求我提示用户输入三个输入(长度、宽度和高度),然后计算音量(l_w_h)。在计算完成后,我在打印结果时有问题。有办法打印十进制值吗?
.MODEL SMALL
.STACK 100h
.DATA
l DB ?
w DB ?
h DB ?
v DB ?
M1 DB 10,13, "Please enter the length: $"
M2 DB 10,13, "Please enter the width : $"
M3 DB 10,13, "Please enter the height: $"
M4
我需要输出二进制转换(我理解如何实现)。我的问题是,LMC似乎无法打印三个零或'000‘。知道如何让程序执行这种行为吗?如果这是一个可怕的问题,请帮助我重新措辞或指向我的资源,非常感谢。
编辑:我使用的代码:
LDA first
OUT
HLT
first DAT 001
或
LDA first
OUT
HLT
first DAT 000
在我换了汇编程序之前都没有为我工作过。
我在8086组装方面没有多少经验,如果您不编写起始标签(start:)和标签的末尾,我想知道程序中会发生什么
(end start) (围绕正在执行的代码的标签)?
因此,我的问题是,这些标签是否是执行所必需的,当这些标签被排除时,代码是否访问一些不应该访问的地址,以及这些标签是否与java类中的==‘{’和main()的结束(==‘}’)相同?
*附加信息和结果
我正在编写一个打印数字1-5的程序,它包含在一个数组中。我尝试了添加标签和不添加标签,结果如下:
;assembly for printing an array of the integers 1-5
;data segment
这段代码应该返回'ricerca‘在数组’vett‘中位置的索引;如果它不存在,它应该返回-1;
dim equ 8
.model small
.stack
.data
vett db 1,2,3,4,5,6,7,8
ricerca db 4
.code
.startup
mov cx, dim
mov di, 0
mov bh, ricerca
lab: cmp vett[di], bh
jz lab2
sub cx, 2
cmp cx, 0
我用Go写了这个程序:
package main
func add(a, b int) int {
return a + b
}
func main () {
add(1,2)
}
出于好奇心,我想看看这个程序在汇编时是什么样子的。
我发现了几种从Go程序输出汇编指令的方法,主要是:
go tool compile -S file.go > file.S
或
go tool objdump executable > disassembly
但这两种方法产生的输出似乎完全不同。
如何打印出构成Go程序的人类可读的汇编指令?