初次提问,N长时间也没有头绪的问题

VictoryChang 2003-10-16 10:24:57
实现任意输入的两个数的+,-,×,÷
...全文
22 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghostmirror 2003-10-17
  • 打赏
  • 举报
回复
转,别人的程序
.MODEL SMALL  ;
     .486      ; 等待輸入兩個數值 0~99 之間
     .STACK 100H   ; 印出相加之和,與相減之差
     .DATA      ;

num1   db   'input number a:','$'
num2   db   0dh,0ah,'input number b:','$'
num3   db   0dh,0ah,'a+b sum=','$'
num4   db   0dh,0ah,'a-b sum=','$'
num5   db   3 dup(30h),'$',00,30h,30h,'$'
num6   db   ?
num7   db   ?
result  db   ?
string  db   3,0,5 dup('$')     ;輸入緩衝區

     .code
start:  mov  ax,@data
     mov  ds,ax
     mov  es,ax

     mov  dx,offset num1     ;顯示字串1
     call  pridx0
     mov  dx,offset string    ;等待輸入字串1
     mov  ah,0ah
     int  21h
     mov  ax,word ptr[string+2] ;取出字元資料於ax
     call  asc2hex
     mov  num6,al

     mov  dx,offset num2     ;顯示字串2
     call  pridx0
     mov  dx,offset string    ;等待輸入字串2
     mov  ah,0ah
     int  21h
     mov  ax,word ptr[string+2]
     call  asc2hex
     mov  num7,al

     mov  al,num6        ;取出被加數
     add  al,num7        ;執行加法運算
     cmp  al,100
     jb   noadc         ;沒有100,即沒有進位則跳躍
     sub  al,100
     inc  num5
noadc:  cmp  num5,30h        ;百位數如果不為'0'則躍
     jnz  nos0
     sub  num5,30h
nos0:  call  hex2asc
     mov  word ptr[num5+1],ax
     mov  dx,offset num3     ;顯示輸出加法結果字串
     call  pridx0
     mov  dx,offset num5
     call  pridx0

     mov  ah,num6   ;取出被減數
     mov  al,num7
     cmp  ah,al
     jnb  nocc0    ;不用借位則跳躍
     xchg  ah,al
     mov  [num5+4],'-'
nocc0:  sub  ah,al
     mov  al,ah
     call  hex2asc
     mov  word ptr[num5+5],ax
     mov  dx,offset num3     ;顯示輸出加法結果字串
     call  pridx0
     mov  dx,offset[num5+4]
     call  pridx0
     jmp  exit

pridx0: mov  ah,09h
     int  21h
     ret
asc2hex: sub  ax,3030h
     mov  bl,ah    ; 個位數 => bl
     mov  bh,10
     mul  bh      ; 十位數 * 10 => ax
     add  al,bl
     ret
hex2asc: xor  ah,ah
noks0:  cmp  al,10
     jb   okss0
     sub  al,10
     inc  ah
     jmp  noks0
okss0:  add  ax,3030h
     xchg  ah,al
     ret

exit:  mov  ah,4ch
     int  21h
     end  start

21,453

社区成员

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

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