Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
Loops 要打印的汇编程序';a';至';z';使用堆栈、循环cx和dx_Loops_Assembly_Stack - Fatal编程技术网

Loops 要打印的汇编程序';a';至';z';使用堆栈、循环cx和dx

Loops 要打印的汇编程序';a';至';z';使用堆栈、循环cx和dx,loops,assembly,stack,Loops,Assembly,Stack,我的任务是制作一个汇编程序,使用堆栈、循环cx和dx逐行垂直打印“a”到“z”。 谁能帮帮我吗 这是将a打印到z的程序,但我不知道如何在程序中使用堆栈cx和dx: .data l1c db 0ah,0dh,"S" .code main proc mov ax @data mov ds,ax mov al,48 mov cx,10 d: mov dl,al mov ah,2 int 21h call linechange inc al loop d mov ah,4ch

我的任务是制作一个汇编程序,使用堆栈、循环cx和dx逐行垂直打印“a”到“z”。 谁能帮帮我吗

这是将a打印到z的程序,但我不知道如何在程序中使用堆栈cx和dx:

.data
l1c db 0ah,0dh,"S" 
.code 
main proc
mov ax @data 
mov ds,ax 
mov al,48 
mov cx,10 
d: 
mov dl,al 
mov ah,2 
int 21h 
call linechange 
inc al 
loop d
mov ah,4ch 
int 21h 
main endp 

;Procedure
linechange proc 
lea dx,l1c 
mov ah,9 
int 21h 
ret 
linechnage endp 
end main 

(这是我自己制作的程序)

我想你的老师想避免一个“聪明”的解决方案,比如:

.MODEL SMALL

.STACK 1000h

.DATA
    smart_out   db 'a',13,10,'b',13,10,'b',13,10,'c',13,10,'d',13,10,'e',13,10
                db 'f',13,10,'g',13,10,'h',13,10,'i',13,10,'j',13,10,'k',13,10
                db 'l',13,10,'m',13,10,'n',13,10,'o',13,10,'p',13,10,'q',13,10
                db 'r',13,10,'s',13,10,'t',13,10,'u',13,10,'v',13,10,'w',13,10
                db 'x',13,10,'y',13,10,'z',13,10,'$'

.CODE
main:
    mov ax, @data
    mov ds, ax

    mov ah, 9
    mov dx, OFFSET smart_out
    int 21h

    mov ax, 4C00h
    int 21h
END main
您应该使用
循环
(需要
CX
)来输出此文件。在循环中,您需要至少保留
AX
CX
,因为您永远不知道像
INT 21h
这样的过程是否会改变它。调用
INT 21h/9
满足第三个条件,因为它需要
DX
中的值:

.MODEL SMALL

.STACK 1000h                ; Reserve space for stack and initialize stack pointer

.DATA
l1c db 0dh, 0ah, '$'        ; Dollar-sign!

.CODE
main PROC
    mov ax, @data
    mov ds, ax

    mov al, 'a'
    mov cx, 26

    d:
    push ax                 ; Store AX (AL is a part of AX)
    push cx                 ; Store CX

    mov dl, al
    mov ah, 2
    int 21h

    mov ah, 9
    mov dx, OFFSET l1c
    int 21h

    pop cx                  ; Restore CX & AX in reversed push-order
    pop ax

    inc al
    loop d                  ; Loops until cx == 0

    mov ah, 4ch
    int 21h
main ENDP

END main

在这里获得帮助的最好方法是先尝试一些东西。如果你陷入困境,做一些研究,尝试自己解决问题,然后再问一个关于你的尝试的具体问题,展示你的尝试。在没有展示研究成果的情况下,要求完整解决方案的问题通常会被否决和关闭。我必须使用stack、cx和dxI投票赞成重新开放的三个东西,因为我很清楚所问的问题。我将这样做:mov al,'a'循环:mov ah,0x0E int 0x10 mov cl,al mov al,10 int 0x10 mov al,13 int 0x10 mov al,cl inc al cmp al,'z'+1 jne环路jmp$