77范文网 - 专业文章范例文档资料分享平台

汇编实验三(3)

来源:网络收集 时间:2018-12-22 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

jl l3 // bl小于0,跳到L3地址 cmp bl,0 //比较bl与0的大小 jg l4 //bl大于0,跳到L4地址 mov bl,0 //bl等于0

mov [di],bl //把bl的内容放在[di]中 jmp l2 //跳到L2中 l3: mov bl,-1 //bl=-1

mov [di],bl //把bl的内容放在[di]中 jmp l2 //跳到L2中 l4: mov bl,1 //bl=1

mov [di],bl //把bl的内容放在[di]中 l2: inc si //si+1 inc di //di+1 dec cx //cx-1 cmp cx,0

jz done jmp l1 done:mov ah,4ch int 21h csej ends end start

c.运行结果:

(8) 数据段中的三个字符,调用子程序将其逐个显示出来。子程序的功能是显示一个字符。单步执行,观察SP、IP的变化,并用D命令查看栈顶的内容。

DATA SEGMENT MAG DB 'ABC' DATA ENDS

STACK_SEG SEGMENT DB 100 DUP(?) TOS LABEL WORD

STACK_SEG ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA, SS: STACK_SEG START: MOV AX, STACK_SEG MOV SS, AX MOV SP, OFFSET TOS MOV AX, DATA MOV DS, AX MOV SI, 0 MOV CX, 3 LL: MOV DL, MAG[SI] CALL MADD INC SI LOOP LL MOV Ax, 4C00H INT 21H MADD PROC MOV AH, 02H INT 21H RET MADD ENDP CODE ENDS END START

a.单步执行程序,如下:

从图中可以看出,在执行call命令前,SP一直保持0064不变而IP持续增加。

在RET前从上图中可以看出,当程序在SP、IP每次都是分别按2和1递增,当运行到RET时,SP还是按照2来递增,而IP缺减少了,说明指针回撤执行下一个循环。

上图为 用d命令查看栈顶内容 程序执行结果:

(9) 将一个给定的二进制数按位转换成相应的ASCII码字符串,送到指定的存储单元,如二进制数10010011转换成字符串为‘10010011’。要求将转换过程写成子程序,且子程序应具有较好的通用性,而必须能实现对8位和16位二进制数的转换。(用寄存器或变量实现参数传递)

测试数据:Var8bit byte 10010011B Var16bit word 1010001111000100B 显示单元:Show8bit byte 8 dup (?) Show16bit byte 16 dup (?) 程序代码:

data segment

Var8bit db 93h

Var16bit dw 0a3c4h Show8bit db 8 dup (?) Show16bit db 16 dup (?) data ends

code segment

assume cs:code, ds:data

main proc

start:

mov ax,data mov ds,ax mov dl,Var8bit mov cx,8 lea si,Show8bit call btrascii mov [si],byte ptr 0dh mov [si+1],byte ptr 0ah mov [si+2],byte ptr '$' lea dx,Show8bit mov ah,9h int 21h

;二进制数传给DX ;置位数8 ;字符串首址 si ;调用子程序 ;回车 ;换行 ;结束符

;打印字符串

mov dx,Var16bit mov cx,16

lea si,Show16bit call btrascii

mov [si],byte ptr 0dh mov [si+1],byte ptr 0ah mov [si+2],byte ptr '$' lea dx,Show16bit mov ah,9h int 21h

mov ah,4ch int 21h

main endp

btrascii proc cmp cx,8 jne l1 mov dh,dl l1:

mov al,0 rol dx,1 rcl al,1 add al,30h mov [si],al inc si loop l1 ret

btrascii endp

code ends end start

;看cx是否为8

;将8位二进制数移到dx高8位

;dx左循环一次,将当前最高位给CF

;al带进位左循环一次,得到CF,即dx最高位 ;将此位数转换成ascii码

;循环cx次

(10) 将一个给定的二进制数按位转换成相应的ASCII码字符串,送到指定的存储单元,如二进制数10010011转换成字符串为‘10010011’。要求将转换过程写成子程序,且子程序应具有较好的通用性,而必须能实现对8位和16位二进制数的转换。(用堆栈实现传参:可以选择用子过程来平衡堆栈,也可以用调用过程来实现平衡堆栈,程序功能说明中要指出)

测试数据:Var8bit byte 10010011B Var16bit word 1010001111000100B

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库汇编实验三(3)在线全文阅读。

汇编实验三(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/385082.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: