. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->端口
主题 : :  实验14  代码16条 有点另类  再减当如何?  [已解决] 回复[ 4次 ]   点击[ 359次 ]  
hky987654321
[帖 主] [ 发表时间:2014-02-05 16:40 ] 
荣誉值:26
信誉值:0
注册日期:2013-07-15 09:25
实验14 狠挖掘潜力,代码减至16条90字节。增大数据段,总觉得另类和怪怪的。

两问题:
1、再减代码条数的思路?
2、如果有可能,减到只剩数据段会如何?机器语言?

assume cs:code
data   segment
   db '2000/00/00 00:00:00','$',16,0       ;置16和0,16位乘数的低8位与高8位
   db  9,0,0,8,0,0,7,0,0,4,0,0,2,0,0,0,0,0 ;置0使相乘后(dx) = 0 成立
   db  0,9,0,0,4ch,0                       ;置(ah) = 9 、4ch 及(al) = 0
data   ends
code   segment

 start:mov ax,data               ; 1 读取数据段地址
       mov ds,ax                 ; 2 设置数据段
       sub bx,bx                 ; 3 ds:dx指向data:0;本条亦可删除,但仍保留
 St_s: mov ax,[bx].22            ; 4 从data中取出指定位置的数据信息
       cmp ah,9                  ; 5 判断是否读到ah=9及4ch
       jnb ok                    ; 6 读到则去进行输出及返回操作
       out 70h,al                ; 7 将该单元地址传到地址端口70h
       in  al,71h                ; 8 从数据端口71h取出单元的数据
       or  [bx].3,al             ; 9 分存到数据段中
       and byte ptr [bx].3,3fh   ;10 分存数据纯化为(30h + 个位)
       mul word ptr ds:[20]      ;11 左移4位,ah中得纯十位数,并置(dx)=0
       add [bx].2,ah             ;12 传到data中相加,得其ASCⅡ码
return:add bx,3                  ;13 寻址增3个字节
       jmp St_s                  ;14 继续
   ok: int 21h                   ;15 输出时钟及返回
       jmp return                ;16 转去使ax=4c00h

code   ends
end    start
hky987654321
[第4楼] [ 回复时间:2014-02-12 11:04 ] 
荣誉值:26
信誉值:0
注册日期:2013-07-15 09:25
此贴由 贴主 于 [ 2014-02-12 11:04 ] 结贴。 结贴原因:问题已解决
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved