Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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
String 在部件中来回移动字符串_String_Assembly_Matrix_X86 16 - Fatal编程技术网

String 在部件中来回移动字符串

String 在部件中来回移动字符串,string,assembly,matrix,x86-16,String,Assembly,Matrix,X86 16,给定一个有25行80列但属性为160列的矩阵 我必须在汇编中编写一个程序来移动一个四个字母的字符串“傻瓜”(比如)在矩阵中来回移动 我到目前为止所做的: mov bx,0B800H mov ds, bx mov si, 1760 mov cx,80 FOOL: add si,-6 mov [si], " " add si, 2 mov [si], "F" add si, 2 mov [si], "O" add si, 2 mov [si], "O" add si,2 mov [si],"L"

给定一个有25行80列但属性为160列的矩阵 我必须在汇编中编写一个程序来移动一个四个字母的字符串“傻瓜”(比如)在矩阵中来回移动

我到目前为止所做的:

mov bx,0B800H
mov ds, bx
mov si, 1760

mov cx,80
FOOL: add si,-6
mov [si], " "
add si, 2
mov [si], "F"
add si, 2
mov [si], "O"
add si, 2
mov [si], "O"
add si,2
mov [si],"L"
loop FOOL

mov cx, 80
FOOOL: add si,-6

mov [si], "F"
add si, -2
mov [si], "O"
add si, 2
mov [si], "O"
add si,2
mov [si],"L"
add si,2 
mov [si], " "
loop FOOOL

mov ah,9
int 21H
但是对于这个代码,当它颠倒过来时,最后一个字母在第一个字母之前。我是一个装配新手,我以前试过8085,但这是我第一次尝试8086

如果有人能帮我解决这个问题,我将不胜感激。

这可以:

; compile with nasm:
; nasm.exe fool.asm -f bin -o fool.com
bits 16
org 100h

mov bx,0B800H
mov ds, bx
mov si, 80*11*2 ; 1760

mov cx, 80+1-5
FOOL:
mov [si], byte " "
add si, 2
mov [si], byte "F"
add si, 2
mov [si], byte "O"
add si, 2
mov [si], byte "O"
add si, 2
mov [si], byte "L"
sub si, 3*2
call delay
loop FOOL

sub si, 1*2

mov cx, 80+1-5
FOOOL:
mov [si], byte "F"
add si, 2
mov [si], byte "O"
add si, 2
mov [si], byte "O"
add si, 2
mov [si], byte "L"
add si, 2 
mov [si], byte " "
sub si, 5*2
call delay
loop FOOOL

mov ax, 4c00h
int 21h

delay:
pusha
push ds

mov ax, 0
mov ds, ax
mov bx, [46ch]

d0:
mov ax, [46ch]
cmp ax, bx
je d0 ; wait for another timer tick (once in ~55 ms)

pop ds
popa
ret

你的意思是在“加si,-2”中有一个负号吗?@500内部服务器错误:我知道这是错误的,但我不能让任何东西工作。