主题:[讨论]这个汇编题目该怎么做!
cqviolet
[专家分:0] 发布于 2007-02-04 20:47:00
有一个题目:按5位十进制的形式显示寄存器BX仲的内容,如果BX的值小于0,则应在显示素质之前显示负号“-”。例如:(BX)=123,显示:00123;(BX)=-123,显示:-00123
怎么编写这个程序?
回复列表 (共2个回复)
沙发
ccpp [专家分:9360] 发布于 2007-02-05 13:57:00
title getbx (com文件)
.model tiny
.code
org 100h
;---------------------
main proc near
mov bx,-123
mov dx,0 ;装入
mov ax,bx ;被除数
lea si,sss ;
mov cx,1
mov bx,10 ;装入除数
test ax,08000h;判断符号位
jz @10 ;是负数不?
NEG ax ;是,取相反数
push ax
mov ah,02h
mov dl,45 ;显示符号先
int 21h
pop ax
@10:
cmp ax,10;小于10
jb @20
xor dx,dx ;异或清0 ,等价;mov dx,0
div bx ;除以10后取余数
or dl,030h ;余数变成对应的 ASC2 码
mov [si],dl ;保存ASC2 码
inc si
inc cx
jmp @10
@20:
or al,030h
mov [si],al
@30:
mov ah,02h ;反向逐个
mov dl,[si] ;显示被保存的ASC2 码
int 21h
dec si
loop @30
.exit
sss db 5 dup(?)
main endp
end main
;我是初学者,代码不好看,间谅
;masm 6.11下通过编译
板凳
cqviolet [专家分:0] 发布于 2007-02-05 17:15:00
多谢~~~~~~~~~~~~~·
我来回复