CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他开发语言 >  汇编语言

高手救命!!!!(帮朋友求的汇编代码,分不够再加!!!急用!!快!!!)

楼主xzhangyu(Beyond乐魂不死)2004-12-01 19:24:58 在 其他开发语言 / 汇编语言 提问

1.向键盘输入一个简单的十进制表达式(不超过3个数,每个数不超过3位)。如“586+54-154=”计算表达式,并将表达式和结果显示出来。  
   
  2.向屏幕开一个窗口,左上角坐标5,15,右下角坐标22,65,从键盘输入字符就会从窗口最下行开始显示。当一行字显示满后,自动上卷一行,输入的字符仍显示最低一行,窗口最高一行上卷后自动消失,输入命令串  
  end程序结束。 问题点数:100、回复次数:7Top

1 楼mydo(侯佩|hopy|ks)回复于 2004-12-02 08:02:23 得分 40

1   这是两个数相加的代码,稍加改动即可符合楼主要求,请楼主自己完成吧。  
   
  data segment  
  op1 dw ?  
  op2 dw ?  
  str1 db 'Please   Input   The   1st   Number',13,10,'$'  
  str2 db 'Please   Input   The   2st   Number',13,10,'$'  
  str3 db 'The   Answer   Is:','$'  
  data ends  
   
  code segment  
  assume cs:code,ds:data  
  start:  
  main proc far  
  push ds  
  sub ax,ax  
  push ax  
   
  mov ax,data  
  mov ds,ax  
   
  lea dx,str1  
  mov ah,9  
  int 21h  
  call dec2bin  
  mov op1,bx  
  lea dx,str2  
  mov ah,9  
  int 21h  
  call dec2bin  
  mov op2,bx  
  add bx,op1  
  lea dx,str3  
  mov ah,9  
  int 21h  
  call bin2dec  
   
  retf  
  main endp  
   
  dec2bin proc near  
  mov bx,0  
  newchar:  
  mov ah,1  
  int 21h  
  sub al,30h  
  jl exit  
  cmp al,9d  
  jg exit  
  cbw  
  xchg ax,bx  
  mov cx,10d  
  mul cx  
  xchg ax,bx  
  add bx,ax  
  jmp newchar  
  exit:  
  ret  
  dec2bin endp  
   
  bin2dec proc near  
  mov cx,10000d  
  call decdiv  
  mov cx,1000d  
  call decdiv  
  mov cx,100d  
  call decdiv  
  mov cx,10d  
  call decdiv  
  mov cx,1d  
  call decdiv  
  ret  
  bin2dec endp  
   
  decdiv proc near  
  mov ax,bx  
  mov dx,0  
  div cx  
  mov bx,dx  
  mov dl,al  
  add dl,30h  
  mov ah,2  
  int 21h  
  ret  
  decdiv endp  
  code ends  
  end startTop

2 楼xzhangyu(Beyond乐魂不死)回复于 2004-12-02 11:53:21 得分 0

谢谢楼上的,能不能把第2个题搞出来哦!小弟感激不尽哦!Top

3 楼jk88811(你的就是我的,我的还是我的~!)回复于 2004-12-03 23:16:27 得分 50

.MODEL SMALL  
  .STACK 100H  
  .DATA  
  .CODE  
  MAIN PROC FAR  
  START:  
  MOV AX,@DATA  
  MOV DS,AX  
  ;CLEAR SCREEN  
  MOV AH,6  
  MOV AL,0  
  MOV BH,7  
  MOV CH,0  
  MOV CL,0  
  MOV DH,24  
  MOV DL,79  
  INT 10H  
  ;LOCATE CURSOR  
  LOCATE:  
  MOV AH,2  
  MOV DH,21  
  MOV DL,14  
  MOV BH,0  
  INT 10H  
  ;GET   CHARACTERS   FROM   KEYBOARD  
  MOV CX,51  
  GET_CHAR:  
  MOV AH,1  
  INT 21H  
  CMP AL,1BH  
  JZ EXIT  
  LOOP GET_CHAR  
   
  ;SCROLL   UP  
  MOV AH,6  
  MOV AL,1  
  MOV CH,4  
  MOV CL,14  
  MOV DH,21  
  MOV DL,64  
  MOV BH,7  
  INT 10H  
  JMP LOCATE  
   
  EXIT: MOV AX,4C00H  
  INT 21H  
  MAIN ENDP  
  END START  
   
  不好意思啊老兄,宿舍里要关灯了,不能把那个输入END结束编写进来了,改为键入Esc退出程序,这个程序还是挺简单的,不过我的注释可能太烂了,如果真看不懂的话呢就加我QQ:286502268   咱们交流交流,加我时注明是CSDN汇编交流既可!  
   
  要不等我明天再上一次论坛看看也行!Top

4 楼jk88811(你的就是我的,我的还是我的~!)回复于 2004-12-03 23:18:10 得分 0

上面的程序是第二题的,16位实模式下的程序Top

5 楼jk88811(你的就是我的,我的还是我的~!)回复于 2004-12-03 23:18:34 得分 0

关机睡觉啦,明天见吧!Top

6 楼xzhangyu(Beyond乐魂不死)回复于 2004-12-05 13:22:19 得分 0

谢谢文哥了哦!我对汇编不是很懂,我帮朋友要麻烦你谢完,行不哦?  
  谢谢了哦!Top

7 楼Knuthocean(摘天上的星星)回复于 2004-12-05 23:36:34 得分 10

用显示缓冲区吧,你改变内存中显示缓冲区的内容和你改变屏幕的内容是一样的,显示缓冲区的地址一般地B000或B800,有的还是C000Top

相关问题

  • softice里的汇编代码
  • 求BIOS汇编源代码
  • 请问vc怎么把.exe反汇编成汇编代码?
  • VC++中怎样加入汇编代码?
  • Dispatch的汇编代码如何理解?
  • 谁有jpg算法的汇编代码
  • tc++中的汇编代码改写为vc汇编代码时遇到问题。
  • 大虾,怎样生成汇编代码?以及怎样编译汇编代码?
  • 求一本书的源代码!!!!!!!!!!!急用!!!急用!!!!!!
  • 急,用VB写w2K的关机代码!

关键词

  • 汇编
  • db
  • movah
  • dcalldecdivmovcx
  • movbh
  • movdh
  • movdl
  • 表达式
  • 缓冲区
  • 一行

得分解答快速导航

  • 帖主:xzhangyu
  • mydo
  • jk88811
  • Knuthocean

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo