|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目:
请编程实现百分比的计算。例如有如下数据:
x dw 4
y dw 5
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官方接口),如未能正确解答您的问题,请继续追问。
|
-
运行结果
|