《王爽——汇编语言》P206 实验室10第三个问题的答案
2015-11-11 21:52
337 查看
assume cs:code, ds:data, ss:stack data segment db 10 dup (0) data ends stack segment db 16 dup (0) stack ends code segment start: mov ax, 123 mov bx, data mov ds, bx mov bx, stack mov ss, bx mov sp, 16 call dtoc mov dh, 8 mov dl, 3 mov cl, 2 call show_str mov ax, 4c00H int 21H dtoc: ;start of function dtoc push ax push bx push cx push dx push si push di mov si, 0 mov dx, 0 mov bx, 10 div bx ;div指令,bx作为16位除数,dx和ax作为被除数,商保存在ax中,余数保存在dx中 mov cx, ax ;商为零作为判断条件 L: push dx inc si jcxz s1 mov dx, 0 div bx mov cx, ax jmp L s1: mov di, 0 s3: mov cx, si jcxz s2 pop ax add al, 30H mov ds:[di], al inc di dec si loop s3 s2: mov byte ptr ds:[di], 0 ;在数字字符串的结尾添加0,因为在show_str中要求字符串以0为结尾 pop di pop si pop dx pop cx pop bx pop ax ret ; end of function dtoc show_str: push ax push bx push cx push dx push es mov ax, 0b800h mov es, ax ;es保存显存所在段的起始地址 mov al, dh mov ch, 0A0H mul ch add dl, dl mov dh, 0 add ax, dx mov bx, ax ;根据给出的行、列参数,计算字符在显存中的位置 mov al, cl ;字体颜色属性,保存在al中,因为转移指令jcxz,需要用到cl寄存器 s0: mov ch, 0 mov cl, ds:[si] jcxz s mov es:[bx], cl mov es:[bx+1], al inc si add bx, 2 jmp s0 s: pop es pop dx pop cx pop bx pop ax ret code ends end start
相关文章推荐
- Leetcode152: Gas Station
- 10 配置的详细说明
- 02.JMS基础
- 使用libsvm工具箱,README文档要仔细阅读
- Android之android.intent.category.LAUNCHER的用途和使用
- 09 JobManager 高可用安装(HA)
- muduo库阅读(36)——Net部分:事件循环线程池EventLoopThreadPool
- Gson简要使用笔记
- 2015-11-08 第三天
- 用户管理命令
- nginx+tomcat集群高可用
- 深入理解计算机系统(3)
- ios单例传值
- Caffe的Solver参数设置
- 08 Running Flink on YARN leveraging Tez
- 07 GCloud Setup
- jquery 绑定事件累加
- Direct3D 光照和材质
- Torch7平台上基于CNN的SAR图像变化检测
- nyoj 289 苹果