标签: irvine32

汇编语言中的选择排序

这是我的代码..我必须对数组执行选择排序.这是家庭作业.Irvine32.inc建立了我的记忆模型.对我做错的任何建议都会有所帮助.我现在已经重复了整整几件事.

INCLUDE Irvine32.inc
.data
myArray DWORD 10, 12, 3, 5
.code
main PROC
    call Clrscr
    MOV EDI, OFFSET myArray
    MOV ECX, LENGTHOF myArray
    CALL PRINT_ARRAY


    MOV EDI, OFFSET myArray
    MOV ECX, LENGTHOF myArray
    CALL SORT_ARRAY

    CALL CRLF
    MOV EDI, OFFSET myArray
    MOV ECX, LENGTHOF myArray
    CALL PRINT_ARRAY

    exit
main ENDP
;-----------------------------------------------------------------------------
PRINT_ARRAY PROC
; requires edi to be pointing to an array
; requires ecx to be the length of the array
;-----------------------------------------------------------------------------
ARRAYLOOP: MOV EAX, [EDI]
           CALL WRITEINT
           CALL …
Run Code Online (Sandbox Code Playgroud)

sorting assembly masm irvine32

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

x86 处理器汇编语言中的 OFFSET 运算符

我对 OFFSET 运算符的概念感到相当困惑。根据 Kip R. Irvine 的《x86 处理器汇编语言》一书,他将偏移运算符定义为返回变量与其封闭段开头之间的距离的运算符。他还说偏移运算符返回数据标签的偏移量,它表示标签与数据段开头的距离(以字节为单位)。什么是偏移量?他所说的标签到数据段开头的距离是什么意思?还有,他有没有得出这样的结果:

他声明了三种不同类型的变量:

.data
bVal  BYTE ?
wVal  WORD ?
dVal  DWORD ?
dVal2 DWORD ?
Run Code Online (Sandbox Code Playgroud)

如果 bVal 位于偏移量 00404000(十六进制),则 OFFSET 运算符将返回以下值:

mov esi, OFFSET bVal     ;ESI = 00404000h
mov esi, OFFSET wVal     ;ESI = 00404001h
mov esi, OFFSET dVal     ;ESI = 00404003h
mov esi, OFFSET dVal2    ;ESI = 00404007h
Run Code Online (Sandbox Code Playgroud)

他从哪里得出这些价值观?请帮忙。非常感谢!

x86 assembly masm nasm irvine32

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

使用汇编在字符串中移位字符的最佳方法是什么?

我问的是使用Irvine库在x86程序集中将字符串中的字符向右或向左移动的最佳方法是什么.有一个例子:ABCD - > DABC等等

我写了这段代码,但它给了我错误的结果.

r1:
push ecx
mov ecx,lengthof arr
mov al,[esi+lengthof arr]
mov bl,[esi]
mov [esi],al
mov [esi+1],bl
inc esi
innr1:
mov al,[esi]
mov bl,[esi+1]
mov [esi],al
inc esi
loop innr1
pop ecx
loop r1
Run Code Online (Sandbox Code Playgroud)

assembly irvine32

0
推荐指数
1
解决办法
622
查看次数

无法理解汇编语言中的嵌套循环

这是Irvine基于英特尔计算机的汇编语言练习:

在这个例子中,EAX的最终价值是多少?

   mov eax,0
   mov ecx,10     ; outer loop counter
L1:
   mov eax,3
   mov ecx,5      ; inner loop counter
L2:
   add eax,5
   loop L2        ; repeat inner loop
   loop L1        ; repeat outer loop
Run Code Online (Sandbox Code Playgroud)

我的解决方案是eax = 28,因为最初的ecx设置为5,所以L2执行5次,因此eax = 3 + 5*5 = 28.然后ecx变为0并且流程移出L2,但由于ecx = 0,L1不会重复,它将移动到下一行而不重复L1.所以eax的最终值= 28.我知道这是错的,但有人能说出我的想法中的错误在哪里?

x86 assembly nested-loops irvine32

0
推荐指数
1
解决办法
476
查看次数

程序集中的代码将源数组的内容复制到目标数组

以下是我在汇编中的代码,将源数组的内容复制到目标数组.但似乎源数组的所有内容都没有复制到目标数组.请帮忙.

INCLUDE Irvine32.inc

.data
mess1 byte "YOUR ARRAY IS:",0
mess2 byte "COPIED Array is:",0
source byte "YOU Have to work hard to score a 4",0
target byte sizeof source dup(0)

.code
main PROC
call clrscr
call crlf

mov edx,offset mess1
call writestring
call crlf

mov edx,offset source
call writestring

call crlf
call crlf
mov ecx,sizeof source
L1:
mov esi,0
mov al,source[esi]
mov target[esi],al
inc esi
loop L1

mov edx,offset mess2
call writestring
call crlf
mov edx,offset target
call writestring

    exit …
Run Code Online (Sandbox Code Playgroud)

arrays assembly masm irvine32

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

ESP和EIP寄存器有什么区别

使用以下示例,ESP和EIP寄存器之间有什么区别?解释代码在做什么.

main PROC 
    0000 0020 call MySub 
    0000 0025 mov eax, ebx 
        .
        .
    main ENDP

MySub PROC 
    0000 0040 mov eax, edx 
        .
        .
    ret 
MySub ENDP 
Run Code Online (Sandbox Code Playgroud)

0000 0025是紧跟在CALL指令之后的指令的偏移量

0000 0040是MySub中第一条指令的偏移量

CALL指令将0000 0025推入堆栈,并将0000 0040加载到EIP中

|-------------|              |----------|
| 0000 0025   |<--ESP        | 0000 0040| EIP
|-------------|              |----------|
|             |
|-------------|
|             |
|-------------|
Run Code Online (Sandbox Code Playgroud)

RET指令从堆栈弹出0000 0025到EIP(RET执行前的堆栈显示)

|-------------|              |----------|
| 0000 0025   |<--ESP        | 0000 0025| EIP
|-------------|              |----------|
|             |
|-------------|
|             |
|-------------|
Run Code Online (Sandbox Code Playgroud)

x86 assembly procedure subroutine irvine32

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

标签 统计

assembly ×6

irvine32 ×6

masm ×3

x86 ×3

arrays ×1

nasm ×1

nested-loops ×1

procedure ×1

sorting ×1

subroutine ×1