.data
.code
main proc
mov cx,5
user_input:
mov ah,1h
int 21h
push dx
loop user_input
mov cx,5
system_output:
mov ah,2h
int 21h
pop dx
loop system_output
endp
我想编写一个代码,从用户那里获取 5 个数字,并以相反的顺序打印所有五个数字 我的代码
程序获得 5 个数字,但什么也不做并终止。
我仍然无法在 Stack 中找到我的号码, 我把屏幕截图放在下面。
AH=1
函数为您提供AL
寄存器中的字符。您应该在第一个循环中使用 push AX
! (而不是push dx
)
在第二个循环中,您应该使用
pop DX
before 执行函数 AH=2
。
最好以以下方式结束你的计划:
mov ax, 4C00h
int 21h
.data 部分 name db '你的名字', 0 id db '您的 ID', 0
节.text 全局_开始
_开始: ;将前景色设置为青色 (3),将背景色设置为蓝色 (4) 移动eax,0x4F9A;改变颜色的系统调用 mov ebx, 3 ;前景色(青色) mov ecx, 4 ;背景颜色(蓝色) 整数 0x80 ;调用内核
; Display name
mov eax, 4 ; sys_write system call
mov ebx, 1 ; file descriptor (stdout)
mov ecx, name ; message address
mov edx, 9 ; message length
int 0x80 ; call the kernel
; Display newline
mov eax, 4 ; sys_write system call
mov ebx, 1 ; file descriptor (stdout)
mov ecx, newline ; newline address
mov edx, 1 ; newline length
int 0x80 ; call the kernel
; Display ID
mov eax, 4 ; sys_write system call
mov ebx, 1 ; file descriptor (stdout)
mov ecx, id ; message address
mov edx, 7 ; message length
int 0x80 ; call the kernel
; Exit the program
mov eax, 1 ; sys_exit system call
xor ebx, ebx ; exit status
int 0x80 ; call the kernel
.data 部分 换行 db 10 ;换行符