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

VictoryChang 2003-10-16 10:24:57
实现任意输入的两个数的+,-,×,÷
...全文
25 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
欢迎来到OpenGL系列教程之《OpenGL进阶》的OSX版。由于OpenGL的发展历史比较久远,因此给萌新们带来了不小的入门门槛,没有理清头绪一头扎进OpenGL里面进行学习的萌新们,可能很难理清头绪。不过不用怕,跟着我们的OpenGL系列教程一起学习,你将由浅入深的逐步掌握OpenGL的精髓,我们为萌新准备的是一套成体系的知识系统,而不是凌乱的知识碎片。你将在我们这里把OpenGL学的清清楚楚,明明白白。无论你是小白学生、还是职场员工,都可以跟着我们的教程,一步一个脚印把整个图形学领域的知识学个痛快。在正式进入学习之前,我们需要提醒同学们注意下面这些点。比起一般的教程,我们这里会让你掌握整个图形学硬件API的全貌。在学习OpenGL进阶课程之前,我们期望你最好是已经掌握了我们的OpenGL入门课程,因为在入门课程中我们会为你构建足够多的知识框架来帮助你更好的理解OpenGL进阶这边的知识点。OpenGL是一个直接与GPU接触的API,这种方便硬件操作,而且还是面向图形学编程的语言,当之无愧的要选C++。你不必担心的是,我们并不使用花里胡哨的C++语法,我们使用最基本的C With Class的编程风格,来保证程序的可移植性和可阅读性。如果你是来自其他行业的程序员,你觉得学起来难,纯粹是因为你的编程思路还是单线程的思路,算你厉害,你是个多线程思路那又如何。我们图形学编程里的程序是几百几千个线程同时运行的。怕不怕?如果你是完全没什么头绪的程序员,你的最好策略是,先把所有的视频浏览一遍,把随堂代码都拖出来编译运行一次,看看都是些什么东西。然后再第二遍精读课程。图形学编程更多的是硬件操作和数学,编程语言只是个工具和皮毛。没有高层语言那么多API让你用。如果存在,那么一定是某个个人提供的,OpenGL的API是由显卡驱动直接提供,也就是说,是显卡的硬件生产者提供了OpenGL的API,如果你的显卡是GTX1060,那么他的OpenGLAPI就是由nVidia提供的。如果你用的是Intel的集成显卡HD4600,那么他的OpenGLAPI就是由Intel提供的。如果是移动端比如Mali的GPU,那么它的OpenGLES的API就是由arm实现的。而硬件厂商提供的都是标准的C语言API,所以高层语言是不存在OpenGL的API的。

21,458

社区成员

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

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