运行结果乱码问题
题目:请编程实现百分比的计算。例如有如下数据:
xdw4
ydw5
result dw ?
实现计算:result = x/(x+y)= 44%,故result的值为44。(提示:result = 100*x/(x+y)的商)
下面是我的代码:
data segment
x dw 4
y dw 5
result dw ?
data ends
code segment
assume cs:code, ds:data
start:
mov ax, data
mov ds, ax
mov ax, x
mov bx, y
add bx, ax
imul ax, 100
idiv bx
mov result, ax
; 输出结果
mov ah, 2
lea dx, result
int 21h
mov ah, 2
mov dl, '%'
int 21h
mov ah, 4ch
int 21h
code ends
end start
你的代码基本上是正确的,但是在输出结果时可能会出现乱码问题。这是因为在打印结果之前,你没有将结果转换为ASCII码。下面是修改后的代码:
data segment
x dw 4
y dw 5
result dw ?
data ends
code segment
assume cs:code, ds:data
start:
mov ax, data
mov ds, ax
mov ax, x
mov bx, y
add bx, ax
imul ax, 100
idiv bx
mov result, ax
; 将结果转换为ASCII码
add al, '0' ; 加上ASCII码的偏移值
mov ah, 0 ; 清零高字节,保证AL是一个字符
mov dl, al
mov ah, 2
int 21h
; 输出百分号
mov dl, '%'
int 21h
mov ah, 4ch
int 21h
code ends
end start
在这个代码中,我添加了几行代码来将结果转换为ASCII码,并用`int 21h`中断来显示结果和百分号。这样就可以避免乱码问题。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
页:
[1]