鱼C论坛

 找回密码
 立即注册
查看: 3782|回复: 13

[汇编作业] Assembly language 实验10-3

[复制链接]
发表于 2013-8-4 23:35:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

实验10-3


5bafa40f4bfbfbedb825d8df78f0f736aec379310a553f2d.jpg

assume cs:code, ds:data

data segment
    db 10 dup(0)
    dw 123, 12666, 1, 8, 3, 38
data ends

code segment
start:
    mov ax, data
    mov ds, ax
    mov si, 0    ; 字符串的首地址
    mov bx, 0aH  ; 待转换数据的首地址
    mov di, 0    ; 待转换数据的相对bx偏移地址
    mov cx, 6    ; 6个待显示数据
    mov dh, 4    ; 从第4行开始逐行显示数据
    mov dl, 0    ; 从第0列开始显示每行数据
trans:
    push cx
    push dx
    mov dx, 0         ; 高16位设为0存到dx
    mov ax, [bx][di]  ; 数据存到ax,当作低16位
    call dtoc         ; 数据转化为ASCII的10进制
    mov cl, 2         ; 字体显示为绿色
    pop dx
    call show_str     ; 显示数据的ASCII
    add di, 2         ; 下一个数据
    inc dh            ; 行数+1
    pop cx
    loop trans
     
    mov ax, 4c00H
    int 21H

; 子程序dtoc
dtoc:
    push bx
    push cx
    push dx
    push si
     
    mov bx, 0         ; 记录数字位数
s0:
    mov cx, ax        ; 判断ax是否为0
    jcxz ok           ; 为0则结束转换
    mov cx, 10        ; 除数为10
    call divdw        ; 防溢出的除法
    add cx, 30H       ; 余数转换为ASCII
    push cx           ; 余数入栈
    inc bx            ; 数字位数+1
    jmp short s0
ok:
    mov cx, bx
c2m:
    pop bx
    mov [si], bl            ; 转换好的数据存到字符串中
    inc si
    loop c2m
    mov byte ptr [si], 0    ; 字符串结束标志为0
     
    pop si
    pop dx
    pop cx
    pop bx
    ret
     
; 子程序divdw
divdw:
    push bx
     
    mov bx, ax        ; 低16位L暂时存在bx
    mov ax, dx        ; 高16位H送到ax
    mov dx, 0
    div cx            ; H/N
    push ax           ; int(H/N)入栈
    mov ax, bx
    div cx            ; [rem(H/N)*65536+L]/N
    mov cx, dx        ; 余数送到cx
    pop dx            ; int(H/N)出栈
     
    pop bx
    ret

; 子程序show_str
show_str:
    push ax
    push bx
    push bp
    push cx
    push si
    push di
    push es
     
    mov bl, cl            ; 字体颜色存在bl中
    mov ax, 0b800H
    mov es, ax            ; 显示缓冲区的段地址存在es
    mov ax, 0a0H
    mul dh                ; 计算第n行的首地址
    mov bp, ax            ; 将第n行的首地址存在bp
    mov ax, 2
    mul dl                ; 计算第m列的偏移地址
    mov di, ax            ; 将第n列存在di
ctom:
    mov ch, 0             ; 判断字符串是否到了结尾
    mov cl, [si]
    jcxz exit             ; 结尾则退出
    mov es:[bp][di], cl   ; 存储字符的ASCII
    inc di
    mov es:[bp][di], bl   ; 存储字符的属性
    inc si
    inc di
    jmp short ctom
exit:
    pop es
    pop di
    pop si
    pop cx
    pop bp
    pop bx
    pop ax
    ret
code ends
end start



游客,如果您要查看本帖隐藏内容请回复


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-8-5 01:14:17 | 显示全部楼层
强力支持楼主!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-5 09:07:50 | 显示全部楼层
强力支持楼主!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-28 12:27:04 | 显示全部楼层
看看。。。。。。。。。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-18 19:38:47 | 显示全部楼层
卡在实验10-3了!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-3-20 22:39:34 | 显示全部楼层
强力支持楼主!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-3-20 23:48:37 | 显示全部楼层
看看。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-6-18 20:56:43 | 显示全部楼层
看看。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-1 23:10:21 | 显示全部楼层
感谢楼主分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-4 17:01:52 | 显示全部楼层
强力支持楼主!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-1 16:02:40 | 显示全部楼层
sdfsdfs
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-5 16:58:37 | 显示全部楼层
楼主强,顶一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-5 17:34:56 | 显示全部楼层
程序运行卡死。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-15 07:29:35 | 显示全部楼层
学习中......
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-26 00:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表