改正这段代码无法正常显示kongge变量的问题:DATAS SEGMENT ;此处输入数据段代码 zimu db 0 kongge db 4 shuzi db 0 qita db 0 tip db "please input any keys:$" changeline db 0dh,0ah,"$" output1 db "the number of kongge is:$" DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX ;此处输入代码段代码 mov dx,offset tip mov ah,09 int 21h ;输入 ;putin: ; mov ah,01 ; int 21h ; cmp al,0dh ; jz printout ; call judge ; jmp putin printout: mov dx,offset output1 mov ah,09 int 21h mov ah,0 mov al,kongge call outresult ;换行 mov dx,offset changeline mov ah,09 int 21h exit: MOV AH,4CH INT 21H ;判断函数 judge proc space:;判断空格 cmp al,' ' jnz exi inc kongge exi:;判断函数结束 ret judge endp ;输出函数 outresult proc mov bl,100;百位 div bl mov cl,ah;存余数 cmp al,0 jz shiwei add al,30h mov dl,al mov ah,02 int 21 shiwei: mov ah,0 mov al,cl;余数转移al中 mov bl,10 div bl cmp al,0 jz gewei add al,30h mov dl,al mov ah,02 int 21 gewei:;输出个位 add ah,30h mov dl,ah mov ah,02 int 21 ret outresult endp CODES ENDS END START
时间: 2024-01-16 17:02:38 浏览: 80
这段代码中,`kongge` 用的是 `db` 定义,应该使用 `movzx` 指令将其转换为 16 位寄存器再输出。
修改后的代码如下:
```assembly
DATAS SEGMENT
zimu db 0
kongge db 4
shuzi db 0
qita db 0
tip db "please input any keys:$"
changeline db 0dh,0ah,"$"
output1 db "the number of kongge is:$"
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
mov dx,offset tip
mov ah,09
int 21h ;输入
printout:
mov dx,offset output1
mov ah,09
int 21h
; 输出空格数
movzx ax, byte ptr kongge ; 将 8 位 kongge 转为 16 位 ax
call outresult
; 换行
mov dx,offset changeline
mov ah,09
int 21h
exit:
MOV AH,4CH
INT 21H
;判断函数
judge proc space: ;判断空格
cmp al,' '
jnz exi
inc byte ptr kongge
exi: ;判断函数结束
ret
judge endp
;输出函数
outresult proc
mov bl,100;百位
div bl
mov cl,ah;存余数
cmp al,0
jz shiwei
add al,30h
mov dl,al
mov ah,02
int 21
shiwei:
mov ah,0
mov al,cl;余数转移al中
mov bl,10
div bl
cmp al,0
jz gewei
add al,30h
mov dl,al
mov ah,02
int 21
gewei: ;输出个位
add ah,30h
mov dl,ah
mov ah,02
int 21
ret
outresult endp
CODES ENDS
END START
```
注意,这里只是修改了输出部分的代码,其他部分没有修改,如果还有其他问题需要根据具体情况进行调整。
阅读全文