实验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 |