小弟初学,怎样在屏幕上显示这个-51 ?

163lzm 2003-10-18 11:10:02
请问一个变量 abc = -51
怎样在屏幕上显示这个-51
...全文
65 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
163lzm 2003-10-20
  • 打赏
  • 举报
回复
怎样才可给超过原定的分啊,csdsjkk兄?
163lzm 2003-10-20
  • 打赏
  • 举报
回复
一个字,谢!!!
csdsjkk 2003-10-20
  • 打赏
  • 举报
回复
DATA SEGMENT
; BUF DB 12,87,51,68,0,15 ;-51 ?? how to display
BUF DB 12,87,-51,68,0,15 ;-51 ?? how to display
N EQU $-BUF
S_END DB 0AH,0DH,'$'
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX

CALL SHOWQ


MOV DX,N-1

LOP1: MOV SI,OFFSET BUF
MOV CX,N-1
LOP2: MOV AL,[SI]
CMP AL,[SI+1] ;al<=[si+1]
JLE LOP3
XCHG AL,[SI+1]
MOV [SI],AL
LOP3: INC SI
DEC CX
JNZ LOP2
DEC DX
JNZ LOP1

;CALL SHOWQ

MOV AH,4CH
INT 21H


SHOWQ PROC
MOV SI,OFFSET BUF
MOV BX,N
LOP0:
MOV AL,[SI]
CMP AL,0
JL SHOWNEG
; JMP SHOWNEG
SHOWNUM:
MOV AH,0
MOV CL,10
DIV CL
;IDIV CL
ADD AL,30H
MOV DH,AH
MOV DL,AL
MOV AH,02H
INT 21H
ADD DH,30H
MOV DL,DH
MOV AH,02H
INT 21H

MOV DL,' '
MOV AH,02H
INT 21H

INC SI
DEC BX
JNZ LOP0
;MOV DL,0AH
;MOV AH,02H
;INT 21H
;MOV DL,0DH
;MOV AH,02H
;INT 21H
MOV AX,OFFSET S_END
MOV DX,AX
MOV AH,09
INT 21H

RET

SHOWNEG:MOV DL,'-'
MOV AH,02
push ax
INT 21H
pop ax
MOV DL,AL
;MOV AL,0
;SUB AL,DL

;MOV AL,DL
NEG AL
JMP SHOWNUM

SHOWQ ENDP
CODE ENDS
END START
163lzm 2003-10-20
  • 打赏
  • 举报
回复
谢谢各位,代码贴出来,
谁答得好给100分,谢谢,真想搞明白它啊!!!

正数是没问题的
DATA SEGMENT
; BUF DB 12,87,51,68,0,15 ;-51 ?? how to display
BUF DB 12,87,-51,68,0,15 ;-51 ?? how to display
N EQU $-BUF
S_END DB 0AH,0DH,'$'
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX

CALL SHOWQ


MOV DX,N-1

LOP1: MOV SI,OFFSET BUF
MOV CX,N-1
LOP2: MOV AL,[SI]
CMP AL,[SI+1] ;al<=[si+1]
JLE LOP3
XCHG AL,[SI+1]
MOV [SI],AL
LOP3: INC SI
DEC CX
JNZ LOP2
DEC DX
JNZ LOP1

;CALL SHOWQ

MOV AH,4CH
INT 21H


SHOWQ PROC
MOV SI,OFFSET BUF
MOV BX,N
;LOP0:
; MOV AL,[SI]
; CMP AL,0
; JL SHOWNEG
; JMP SHOWNEG
SHOWNUM:
MOV AH,0
MOV CL,10
DIV CL
;IDIV CL
ADD AL,30H
MOV DH,AH
MOV DL,AL
MOV AH,02H
INT 21H
ADD DH,30H
MOV DL,DH
MOV AH,02H
INT 21H

MOV DL,' '
MOV AH,02H
INT 21H

INC SI
DEC BX
JNZ LOP0
;MOV DL,0AH
;MOV AH,02H
;INT 21H
;MOV DL,0DH
;MOV AH,02H
;INT 21H
MOV AX,OFFSET S_END
MOV DX,AX
MOV AH,09
INT 21H

RET

SHOWNEG:MOV DL,'-'
MOV AH,02
INT 21H
MOV DL,AL
;MOV AL,0
;SUB AL,DL

;MOV AL,DL
NEG AL
JMP SHOWNUM

SHOWQ ENDP
CODE ENDS
END START
dunkel 2003-10-18
  • 打赏
  • 举报
回复
要先将数值转换为显示的字符串, 再显示字符串才可以. 可以看看这个帖子:

http://expert.csdn.net/Expert/topic/2348/2348789.xml?temp=.1283686

(给出的代码是倒序存放的, 并且没有考虑符号数, 不过还是有参考价值)
163lzm 2003-10-18
  • 打赏
  • 举报
回复
up
ahjoe 2003-10-18
  • 打赏
  • 举报
回复
;正数输出,负数请自己修改
.286
public outnum
code segment
assume cs:code, ds:code

count1 db 0
count2 db 0
endchar db 0
maxdigit db 0
db 0
dw 0
value dw 0
dw 0
outnum proc far
; IN:
; LONG IN DX:AX, WORD IN AX
; BL(b1_b0)=1 WORD
; 2 LONG
; BL(b3_b2)=0 BIN
; 1 DEC
; 2 HEX
; BL(b4)=1 HAS SIGN
; 0 HAS NOT SIGN
; BL(b5)=1 HAS BDHID
; 0 HAS NOT BDHID
; BH=DIGIT AMOUNT LIMIT

push ax
push bx
push cx
push dx
push ds
mov cx, cs
mov ds, cx
db 66h
xor cx, cx
db 66h
mov value, cx
db 66h
mov word ptr maxdigit, cx
mov value, ax
mov count1, bh
mov count2, bh

test bl, 10h
jz nosign

test bl, 1
jnz wordsign
longsign:
test dh, 80h
jz plusid
lminusid: not ax
not dx
inc ax
adc dx, 0
jmp totmin
wordsign:
test ah, 80h
jz plusid
wminusid:
neg ax
totmin:
mov cl, '-'
jmp totsid
plusid:
mov cl, '+'
totsid:
call outchar

nosign:
mov value+2, dx
test bl, 2
jnz outlong
mov value+2, 0
outlong:
db 66h
mov ax, value
db 66h
xor dx, dx
test bl, 0ch
jz bini
test bl, 04h
jnz deci
hexi:
mov maxdigit, 16
mov endchar, 'H'
jmp totdig
deci:
mov maxdigit, 10
mov endchar, 'D'
jmp totdig
bini:
mov maxdigit, 2
mov endchar, 'B'
totdig:
xor dx, dx
db 66h
div word ptr maxdigit
push dx
dec count1
jnz totdig
divend:
pop cx
or cl, 30h
cmp cl, '9'
jbe digit10
add cl, 7
digit10:
call outchar
dec count2
jnz divend

test bl, 20h
jz nobdh
mov cl, endchar
call outchar
nobdh:
pop ds
pop dx
pop cx
pop bx
pop ax
retf
outnum endp

outchar proc near
xchg ax, cx
mov ah, 0eh
int 10h
xchg ax, cx
retn
outchar endp

code ends
end outnum
csdsjkk 2003-10-18
  • 打赏
  • 举报
回复
代码贴上来
dunkel 2003-10-18
  • 打赏
  • 举报
回复
输入正数正常吗? 如果正常的话, 可以在 neg ?? 指令上设个断点检查一下.
163lzm 2003-10-18
  • 打赏
  • 举报
回复
谢谢楼上的热心回答,我就是这么试的,(先判断是否为负数, 是的话, 先置负数符号('-'), 再将原数值取反(neg ??), 接下来就和正数及无符号数一样)处理,但我试过无论输入什么负数,它都只输出-E1啊?
继续求助。
dunkel 2003-10-18
  • 打赏
  • 举报
回复
有符号数实际上也很简单啊. 先判断是否为负数, 是的话, 先置负数符号('-'), 再将原数值取反(neg ??), 接下来就和正数及无符号数一样了.
163lzm 2003-10-18
  • 打赏
  • 举报
回复
正的我会,就差负的
敬告1:本课程基于最新版FFmpeg4.3.1, 是从一个商用产品中抽离而出,全程手把手教学。敬告2:本课程基于Java+Tomcat,C++方向的学员,不用购买此课程。 我将带领大家亲手开发一套WEB在线的基于Java语言的音视频转码系统 您将收获:用Java语言开发WEB在线音视频转码学习商用音视频产品的标准流程学习Java应用ffmpeg音视频的功能学习音视频的基础理论 学习SSH框架的灵活应用-------------------------------------------------------------------主要模块包括:1、标准文档:    需求说明书、系统分析、概要设计、数据结构、编码、测试、总结、面试技巧等。2、Java编码:   SSH框架,标准流程,可以自由扩展。3、音视频转码:最新版FFmpeg4.3.1,灵活的转码模板,可以自由扩展。4、音视频理论:讲解基础的音视频理论,帮助小白快速入门。5、面试技巧:    音视频方向的工作,薪资偏高,但要求苛刻。-------------------------------------------------------------------具体的课程目录参考如下: B/S音视频转码器简介与概览5 需求规格说明书5 系统分析与设计15 数据结构设计27数据库设计30Java+Tomcat+Eclipse开发环境配置35Java+SSH框架搭建与整合43界面设计49编码51左侧导航树58B/S音视频转码器总结与分析66 简历包装与面试技巧67-------------------------------------------------------------------音视频是一门很复杂的技术,涉及的概念、原理、理论非常多,很多初学者不学基础理论,而是直接做项目,往往会看到c/c++的代码时一头雾水,不知道代码到底是什么意思,这是为什么呢? 因为没有学习音视频的基础理论,就比如学习英语,不学习基本单词,而是天天听英语新闻,总也听不懂。所以呢,一定要认真学习基础理论,然后再学习播放器、转码器、非编、流媒体直播、视频监控、等等。  梅老师从事音视频与流媒体行业18年;曾在永新视博、中科大洋、百度、美国Harris广播事业部等公司就职,经验丰富;曾亲手主导广电直播全套项目,精通h.264/h.265/aac,曾亲自参与百度app上的网页播放器等实战产品。  

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧