用汇编语言将带符号十进制数据的ASCII码串转换为二进制补码表示怎么做?

主要是不懂带符号十进制数据的ASCII码串在内存中是如何存储的。
这是原题:“编写程序,将两个带符号十进制数据的ASCII码串转换为二进制补码表示的数据,计算两数之和,并将结果在屏幕上显示出来。数据范围如果产生溢出,则在屏幕上显示字符串“overflow”。”

"主要是不懂带符号十进制数据的ASCII码串在内存中是如何存储的。"
现在懂了吗?我碰到了差不多的问题~~想了挺久,求解啊
原题是:请用汇编语言设计程序,将存储器单元中以ASCII码表示的带符号十进制数转换成16位二进制数,带符号十进制数的首地址在SI中,位数在CX中,转换后的二进制存入DX寄存器中。
关键在于不懂带符号十进制数据的ASCII码的在存储单元里是什么。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-26
; 本程序在MASMPlus 1.2集成环境下通过编译,经过调试,运行正确。
Code Segment
Assume CS:Code,DS:Code
; -------------------------------------
; 功能:显示指定地址(Str_Addr)的字符串
; 入口:
; Str_Addr=字符串地址(要求在数据段)
; 用法: Output Str_Addr
; 用法举例:Output PromptStr
Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; -------------------------------------
Number dw 3578
Press_Key db 7,13,10,13,10,'The complated. Press any key to exit...$'
Start: push cs
pop ds
push cs
pop es ;使数据段、附加段与代码段同段
mov ax,Number
mov cx,16
Disp_Binarry: mov dl,'1'
shl ax,1
push ax
mov ah,2
jc $+4
mov dl,'0'
int 21h
pop ax
loop Disp_Binarry
; -------------------------------------
Exit_Proc: Output Press_Key ;提示操作完成,按任意键结束程序
mov ah,1
int 21h
mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束
本回答被提问者采纳
第2个回答  2022-08-18

将带符号十进制数据的ASCII码串转换为二进制补码表示

主要是不懂带符号十进制数据的ASCII码串在内存中是如何存储的。

--------------

带符号十进制数据的ASCII码串,

通常,ASCII码串的结尾,以 0 做标志。

随便写出两串,如下:

 DB  '+12345', 0

 DB  '-24680', 0

 

把它们,转换为二进制补码表示,即为:

 0011 0000 0011 1001;

 1001 1111 1001 1000。

完整程序如下:

程序中“带符号十进制数据的ASCII码串”是:“-13579”

程序执行后,显示出来的补码是:1100 1010 1111 0101。

相似回答