小亦003 发表于 2023-12-3 16:06:13

运行结果乱码问题

题目:
请编程实现百分比的计算。例如有如下数据:
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



FishC_GPT 发表于 2023-12-3 16:06:32

你的代码基本上是正确的,但是在输出结果时可能会出现乱码问题。这是因为在打印结果之前,你没有将结果转换为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]
查看完整版本: 运行结果乱码问题