标签: irvine32

浮点计划提供无效结果

最近的编辑

我试图在x86 MASM上运行这个浮点二次方程式程序.这段代码可以在Kip Irvine x86教科书中找到,我想看看它是如何工作的.以下代码如下:

include irvine32.inc 
.DATA
a REAL4 3.0
b REAL4 7.0
cc REAL4 2.0
posx REAL4 0.0
negx REAL4 0.0

.CODE


main proc 
; Solve quadratic equation - no error checking
; The formula is: -b +/- squareroot(b2 - 4ac) / (2a)
fld1 ; Get constants 2 and 4
fadd st,st ; 2 at bottom
fld st ; Copy it
fmul a ; = 2a

fmul st(1),st ; = 4a
fxch ; Exchange
fmul cc ; = …
Run Code Online (Sandbox Code Playgroud)

floating-point x86 assembly masm irvine32

13
推荐指数
1
解决办法
819
查看次数

运行 Mac OS X 的汇编代码

我目前正在学习汇编课程,我必须在 Mac OS X 上运行代码,但我不知道如何在 Mac OS X 上运行代码

\n\n

这是代码:

\n\n
; Description: This program adds and subtracts 16\xe2\x80\x90bit integers.\n; Revision Date:\nINCLUDE Irvine32.inc\n.code\nmain PROC\nmov ax, 650          ; AX = 650h\nsub ax, 50h          ; AX = 600h\nsub ax, 100h         ; AX = 500h\nsub ax, 300h         ; AX = 200h\ncall DumpRegs        ; display registers\nexit\nmain ENDP\nEND main\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是我收到的错误消息

\n\n
Tayvions-MacBook-Pro:~ tayvionpayton$ cd Documents/Code/\nTayvions-MacBook-Pro:Code tayvionpayton$ nasm -f macho32 -o0 assembly_Tp.asm \nassembly_Tp.asm:4: error: parser: instruction expected\nassembly_Tp.asm:5: warning: label alone on a line without …
Run Code Online (Sandbox Code Playgroud)

macos assembly irvine32

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

汇编语言(x86):如何创建循环来计算Fibonacci序列

我正在使用Visual Studio 2013 Ultimate在MASM中编写汇编语言(x86).我试图使用数组来计算使用数组的n个元素的Fibonacci序列.换句话说,我试图去一个数组元素,获取它之前的两个元素,添加它们,并将结果存储在另一个数组中.

我无法设置索引寄存器以使其工作.

我的程序设置如下:

TITLE fibonacci.asm

INCLUDE Irvine32.inc

.data
    fibInitial  BYTE 0, 1, 2, 3, 4, 5, 6
    fibComputed BYTE 5 DUP(0)

.code
main PROC

    MOVZX si, fibInitial
    MOVZX di, fibComputed
    MOV   cl, LENGTHOF fibInitial

L1:
    MOV   ax, [si - 1]
    MOV   dx, [si - 2]
    MOV   bp, ax + dx
    MOV   dl, TYPE fibInitial
    MOVZX si, dl
    MOV   [edi], bp
    MOV   dh, TYPE fibComputed
    MOVZX di, dl
    loop L1

exit
main ENDP
END main
Run Code Online (Sandbox Code Playgroud)

我无法编译这个,因为该行的错误消息"错误A2031:必须是索引或基址寄存器" MOV ebp, …

x86 assembly masm irvine32

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

ASM如何知道算术运算是有符号还是无符号?

我正在使用MASM 14.0进行组装,我对以下代码的输出感到困惑.

TITLE Exercise 4 from chapter 4

; Author : Saad Ahmed

INCLUDE Irvine32.inc

.code
main PROC

mov eax, 0
mov al, 255
add al, 1
call DumpRegs       ; Display registers

mov al, 127
add al, 1
call DumpRegs       ; Display registers

exit
main ENDP
END main
Run Code Online (Sandbox Code Playgroud)

两个算术运算都在无符号整数255和127上完成.

但是,CPU将第一个操作255视为无符号整数并设置进位标志,当您将1添加到无符号255时会发生这种情况.

完整的状态标志是CF = 1 SF = 0 ZF = 1 OF = 0 AF = 1 PF = 1,eax为0

但是,第二个操作将127视为有符号整数,因为它设置了溢出标志,如果你将1加到+127就会发生这种情况.

完整的状态标志为CF = 0 SF = 1 ZF = 0 OF = …

x86 assembly masm irvine32

5
推荐指数
2
解决办法
415
查看次数

汇编:数组编写问题

我创建了以下程序来读取5个数字,然后dumpreg查看输入的数字...

        INCLUDE Irvine32.inc

    .data
    count = 5
    scores WORD count DUP(? )
    prompt BYTE "Please type an integer score: ", 0

    .code
    GetScores PROTO, wArray:PTR WORD, arraySize : WORD

    main proc


    INVOKE GetScores,OFFSET scores, count

    mov esi, OFFSET scores
    mov ecx, count
    mov ebx, 2
    call DumpMem
    mov eax, 50000
    call Delay

    exit
    main endp

    GetScores PROC, wArray:PTR WORD, arraySize : WORD
    push ebp
    mov ebp, esp
    pushad

    mov esi, wArray
    movzx ecx, arraySize
    cmp ecx, 0; ECX …
Run Code Online (Sandbox Code Playgroud)

x86 assembly masm irvine32

4
推荐指数
1
解决办法
106
查看次数

代码在哪里可以更有效地检查输入字符是否为元音?

该装配项目读取按键并以特定颜色输出它们。当按下一个元音时,它会改变文本的颜色,直到按下另一个元音为止,直到 ESC按下为止。颜色具有一定的模式,这就是为什么sub colorCode, 8当它到达循环结束时。我只是想让它更有效率。我尝试将所有比较语句放入一行,但没有成功。

INCLUDE        Macros.inc
INCLUDE     Irvine32.inc
INCLUDELIB  Irvine32.lib
.386
.STACK 4096
ExitProcess PROTO, dwExitCode:DWORD

.DATA
key       BYTE ?     
colorCode BYTE 5
max       BYTE 13

.CODE
main PROC

FindKey:
mov EAX, 50
call Delay

call ReadKey 
jz FindKey

MOV key, AL 
     cmp key, 75h
     JE UP
     CMP key, 6Fh
     JE UP
     CMP key, 69h
     JE UP
     CMP key, 65h
     JE UP
     CMP key, 61h
     JE UP
     CMP key, 55h
     JE UP
     CMP key, 4Fh
     JE UP …
Run Code Online (Sandbox Code Playgroud)

performance x86 assembly masm irvine32

4
推荐指数
1
解决办法
231
查看次数

如何查看已初始化数组与未初始化数组占用的内存

我目前正在按照 Kip Irvine 的“x86 处理器的汇编语言”学习汇编编程。在第 3.4.12 节中,作者指出:

.DATA?指令声明未初始化的数据。当定义大量未初始化数据时,该.DATA?指令会减少编译程序的大小。例如,以下代码被高效地声明:

.data
smallArray DWORD 10 DUP(0) ; 40 bytes
.data?
bigArray DWORD 5000 DUP(?) ; 20,000 bytes, not initialized
Run Code Online (Sandbox Code Playgroud)

另一方面,以下代码生成的编译程序大 20,000 字节:

.data
smallArray DWORD 10 DUP(0) ; 40 bytes
bigArray DWORD 5000 DUP(?) ; 20,000 bytes
Run Code Online (Sandbox Code Playgroud)

我想在程序编译后查看每个版本代码的内存占用情况,这样我就可以亲自看到效果.data?,但我不确定如何做到。

arrays x86 assembly masm irvine32

4
推荐指数
1
解决办法
239
查看次数

将C代码翻译为Assembly

我需要将此C代码转换为汇编语言代码

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int answer, i;
    int right, wrong;
    right = 0;
    wrong = 0;

    for(i =1; i < 11; i = i+1){
        printf("What is %d + %d? ", i,i);
        scanf( "%d", &answer);

        if(answer == i + 1) {
            printf("right!  ");
            right++;
        }
        else {
            printf("Sorry, you're wrong.    ");
            printf("The answer is %d.   ", i + 1);
            wrong++;
        }
    }
    printf("You got %d right and %d wrong. ", right, wrong );
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我真的只需要知道如何将变量与汇编语言中的字符串组合在一起,就像上面的C代码一样.我想我可以处理其他一切.有人可以告诉我.我是否必须使用某种参考[]. …

c x86 assembly masm irvine32

3
推荐指数
2
解决办法
1636
查看次数

在程序集中向左或向右移动字符

我正在组装一个简单的游戏,目前我只是想根据键盘上的数字 1 还是 2 向左或向右移动播放器图标(在这种情况下它是一个字符 X)。目前我只有两个 if 然后通过减少或增加 X 坐标值来向左或向右移动我的 X。我正在使用 Irvine 32 库来获取像 Gotoxy 这样的 proc 来获取坐标值。到目前为止,我的程序将 x 显示在正确的起始位置,但是由于某种原因,当我点击 1 或 2 时,x 会向上移动一个空格而不是向左或向右移动。我在我拥有的书中无法弄清楚,我在互联网上找到的东西不在我的装配知识范围内。就目前而言,我只想向左或向右移动我的字符。稍后我将制作适当的 procs 等,但现在这是一个非常奇怪的问题。任何帮助,将不胜感激。下面是我的汇编代码:

        TITLE Matrix Rain

; Description:Dodge falling numbers to reach the final level
; Authors: John , Killian
; Revision date:2/11/2015

INCLUDE Irvine32.inc
.data
player byte 'X'; Player Character
direction byte ?; Direction the player moves
startY byte 24; Starting Y position
startX byte 39; Starting X position

breakLoop byte 9 ; base case …
Run Code Online (Sandbox Code Playgroud)

x86 assembly masm irvine32

3
推荐指数
1
解决办法
2853
查看次数

在程序集x86中查找字符串中的出现次数

我一直在研究这个程序,我必须输入一个字符串,然后在该字符串中显示字符分布.

例如:
如果输入是"minecode",则输出应为

C - 1
O - 1
D - 1
E - 2
I - 1
M - 1
N - 1

这是我试图做的,但我真的不知道如何遍历循环并检查相似的字符然后增加计数.汇编程序是在32位机器上运行的MASM 615.

.686
.MODEL flat, stdcall
.STACK
INCLUDE Irvine32.inc
.DATA
  msg0 BYTE "Enter a string of characters: ",0
  msg1 BYTE "Character Distribution: ",0
  MainArray    dword 10000 dup (?)
  UniqueChar   dword 10000 dup (?)
  CharCount    dword 10000 dup (?)
.CODE
MAIN PROC
    lea edx, msg0
    call WriteString
    call dumpregs        ; 1
    call ReadString
    mov MainArray, eax
    call …
Run Code Online (Sandbox Code Playgroud)

x86 assembly masm irvine32

3
推荐指数
1
解决办法
959
查看次数

标签 统计

assembly ×10

irvine32 ×10

masm ×9

x86 ×9

arrays ×1

c ×1

floating-point ×1

macos ×1

performance ×1