微机编程中程序好像陷入死循环
下面是我的编程
想要的效果是输入几个字符下一行输出是字母的字符大小写都要
求各位看看哪里错了
data segment
table db 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' 进行对比的表
bufsize db 24
actchar db ?
chartext db 25 dup(?)
db '$' 输入的数据段
outcome db 25 dup(?) 输出的数据段
data ends 数据设置
stack segment stack
db 100 dup(?)
stack ends 堆栈区
code segment
assume cs:code,ds:data,es:data,ss:stack 区和寄存器联系
start:
mov dx,offset bufsize
mov ah,0aH
int 21H 写入字符串
mov si,dx
lea di,table
inc si
mov cx,[si] 写入了几个字符
inc si
mov bx,0H 几个字母进入输出段
compare: mov al,[si]
repnz scasb
jz fill
inc si
loop compare 每个输入字符进行比较如果是字母进入fill
jmp show 跳过fill
fill: mov AL,[si]
push ax
inc bx
INC SI
JMP COMPARE 先把字母写入ax 在写入堆栈同时bx计数
show: mov cx,bx
lea si,outcome 把要写入字母的个数给cx同时输出段地址给si
read: pop ax
mov [si],AL
loop read 把字母出栈给输出段
inc si
mov al,'$'
mov [si],al
mov dx,offset outcome
mov ah,09H
int 21H
Mov ah,4cH
Int 21H 显示输出段
code ends
end start
代码没法看,要贴在代码区里,可以选 C语言
代码中 DS 没初始化