实验十 终于独立完成,对小甲鱼的答案有点疑惑
本帖最后由 javanetwork 于 2011-8-17 13:27 编辑assume cs:myc,ds:mydat
mydat segment
db 128 dup(0)
dw 123,12666,41,8,3,38
mydat ends
mystack segment
dw 8 dup(0)
mystack ends
myc segment
start:
mov ax,mystack
mov ss,ax
mov sp,10H
mov ax,mydat
mov ds,ax
mov si,128
mov di,si
mov cx,6
call getword
mov ax,4c00H;程序出口
int 21h
getword:
;从ds:处获取字型整数,输出到屏幕
;参数:cx为欲获取的数据的个数
push cx
push si
push di
mov al,ds:
mov ah,ds:
call wtoa
push ax
push dx
mov dl,12;设置相同的行和列,前一个字符串被覆盖
mov cl,01101101B
mov ax,mydat
mov ds,ax
mov si,di
call show_str
pop dx
pop ax
pop di
pop si
add si,2
pop cx
loop getword
ret
wtoa:
;将字型整数以十进制输出;调用divw,不断divw 10取余
;参数:ax存放整数
;结果:字符串在ds:这个内存地址前面
sub di,1
mov cl,0
mov ds:,cl;置字符串尾为\0
rea:
mov cx,ax
jcxz zero;如果ax已经为零了,返回
mov cl,10
call divw
add cl,48;数字转换成字符
dec di
mov byte ptr ds:,cl;从后往前
loop rea
zero:
ret
divw:
;进行不会溢出的除法运算 16位除8位
;参数:ax被除数,cl除数
;返回:al结果的低8位,ah结果的高8位,cl余数
;如0973H除2
;ahalclch
;09730273
;00090273
;0104 0273
; dl
;01730273
;01B90273
;01B90173
;ex:
;mov ax,9473H
;mov cl,14H
;call divw
mov ch,al ;暂时保存al的值
mov al,ah
mov ah,0
div cl;00dx /cx 0009/2
mov dl,al;保存低8位的结果
mov al,ch;恢复al的值
div cl;173/2
mov cl,ah
mov ah,dl
ret
show_str:;显示字符串
;参数:dl行0~24dh列0~79cl颜色ds:字符串的首地址
;应用示例:
;mov dl,12
;mov dh,40
;mov cl,01101101B
;mov ax,mydat
;mov ds,ax
;mov si,0
;call show_str
mov bx,0B800H
mov es,bx
mov ax,0A0H
mul dl
mov bx,ax
mov ax,02H
mul dh
add bx,ax
mov dl,cl
cir:
mov ch,0
mov cl,ds:
jcxz ou
mov es:,cl
mov es:,dl
inc si
add bx,2
jmp short cir
ou:
ret
divdw:
;进行不会溢出的除法运算,32位除16位
;参数:ax为低16位,dx为高16位,cx除数
;返回:ax结果的低16位,dx结果的高16位,cx余数
;如0973H除2
;dxaxcxbx
;09730273
;00090273
;0104 0273
;push ax
;01730273
;01B90273
;01B90173
;应用示例:
;mov ax,9473H
;mov dx,0187H
;mov cx,3142H
;call divdw
mov bx,ax ;暂时保存ax的值
mov ax,dx
mov dx,0
div cx;00dx /cx 0009/2
push ax;保存低16位的结果
mov ax,bx;恢复ax的值
div cx;173/2
mov cx,dx
pop dx
ret
myc ends;结束段
end start;结束程序,同时告诉编译器,程序入口的标号是start
小甲鱼视频里面 实验十第三个子程序有没有问题?
余数保存他用push dx
但是show_str处理的是字节型数据,且遇到零就终止了
还有里面用div指令,没有防止数据溢出
题目要求转换好几个数据,他直接取了一个,偷工减料啊
以上个人看法,欢迎指正。 大家交流交流!:lol 我来学习下啊
页:
[1]