王爽

汇编语言(第三版)王爽著(实验十一)编写子程序

匿名 (未验证) 提交于 2019-12-02 23:32:01
一、 实验目的 编写子程序,掌握 cmp 指令和转移指令之间的关系,熟悉标志寄存器。 二、实验设备与环境 计算机 DOS 操作系统或 Windows 操作系统 MASM.EXE, LINK.EXE, DEBUG.COM 或宏汇编集成环境 MASM for Windows 集成实验环境 2015 三、实验内容、程序清单及运行结果 1.编写一个子程序,将包含任意字符,以0结尾的字符串中的小写字母转变成大写字母,描述如下。 名称:letterc 功能:将以0结尾的字符串中的小写字母转变成大写字母 参数:ds:si指向字符串首地址 代码: DATAS SEGMENT db "Beginner's All-purpose Symbolic Instruction Code." ,0 DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START : mov ax,DATAS mov ds,ax mov si,0 ok: mov ah,4Ch letterc: mov ch,0 mov cl,ds:[si] ; 判断是否为零 cmp byte ptr [si],97 ; 大写 cmp byte ptr [si],122 ; Сд sub byte ptr [si],20h no: inc si CODES ENDS END START 思路:

学 汇编语言 -- 王爽 笔记

删除回忆录丶 提交于 2019-12-02 03:16:49
学 汇编语言 -- 王爽 笔记 -- munds 1: 计算机是由 cpu,内存,外部储存器,主板,等等 组成 2: cpu 通过 数据总线,地址总线,控制总线 来与外部设备交流 3: cpu 通过 统一地址总线 来控制 各大部件 4: cpu 通过 数据总线 接收和发送 数据到 内存 5: 某些cpu 通过 DMA 来控制 速度比较慢的设备 比如 硬盘,软盘,光盘 等 ------------------------------- 废话分割线 ------------------------------------------------------------------------------------------------ cpu 通过各种寄存器来储存临时信息 寄存器有: ax,bx,cx,dx,cs,ds,ss,es cpu运行一条指令的详细动作是 : 1 从cs寄存器中取值 ,2 把给值作为内存地址发送到地址总线上,3 内存器给cpu发送该地址的内容 ,4 cpu处理内容(这个内容就是计算机指令) 在8086中 所有的寄存器都是16位,在 80386 中 所有的寄存器都是 32位 ax,bx,cx,dx 都是 可以分为 al,ah,等的8位寄存器 ax = ah x 2^8 + al cpu可以单独的对 al ,ah等8位寄存器直接操作 cpu

王爽汇编第三版检测11.2解析

孤街醉人 提交于 2019-11-30 19:34:34
检测点11.2 CF (判断溢出) OF(判断溢出) SF(结果是否为0 找到的规律是 只要第八位为1就填1) ZF (结果是否为0) PF(1的个数是否为偶数) 分析 sub al,al 0 0 0 1 1 减法,结果为0,zf=1 mov al,10H 0 0 0 1 1 mov指令不改变标志位 add al,90H 0 0 1 0 1 结果A0H(1010 0000),未溢出,但是最高位是1,sf = 1 al = a0H mov al,80H 0 0 1 0 1 mov不改变 add al,80H 1 1 0 1 1 结果是 100H,溢出,此时 al = 00H mov al,0FCH 1 1 0 1 1 mov不改变 【0FCH(1111 1100):无符号数=252,有符号数=-4】 -4的计算:1111 1100 ==》取反==》 0000 0011 加1==》1000 0011+1=1000 0100==》-4 add al,05H 1 0 0 0 0 结果101H(0001 0000 0001),al = 01H mov al,7DH 1 0 0 0 0 mov不改变 add al,0BH 0 1 1 0 1 无符号数运算,al=88H,没有进位, CF = 0;有符号数运算,因为7DH=1111101,是正数125,0BH是正数11,相加为136,超过128

《汇编语言》(王爽)学习笔记---Windows10下搭建汇编语言开发环境

别说谁变了你拦得住时间么 提交于 2019-11-29 17:19:58
工具准备 下载DOSBox:https://www.dosbox.com/download.php?main=1 下载masm 上述工具笔者已经打包放在网址下:https://download.csdn.net/my/uploads/3/1 安装搭建环境 双击DOSBox默认完成安装即可。 把下载的masm包解压,把里面所有文件拷贝到某磁盘文件夹下,如D:\masm。 双击DOSBox安装目录下的DOSBox 0.74-3 Options.bat,做如下修改: 如下打开DOSBox运行: 测试(汇编程序输出Hello,World!) 在上面的黑框框中输入 edit hello.asm 命令,输入如下汇编程序: datas segment buf db'Hello, World!$' datas ends stacks segment stack db 200 dup(0) stacks ends codes segment assume cs:codes,ds:datas,ss:stacks start: mov ax,datas mov ds,ax mov dx,seg buf lea dx,buf mov ah,09h int 21h mov ah,4ch int 21h codes ends end start 退出编辑页面,然后依次输入命令 masm hello.asm ,

汇编语言(王爽 第三版)检测点和实验

左心房为你撑大大i 提交于 2019-11-28 22:57:37
第一章 检测点1.1 13   (8kb = 8 * 1024 = 2^13) 1024 0 1023 8*1024 1024   (1 byte = 8 bit,计算机以byte为存储单位) 1024^3 1024^2 1024 2^6 1 2^4 2^2   (kb = 2^10 Mb = 2^20 Gb = 2^30) 1 1 2 2 4 512 256   (8086的寄存器为16位寄存器,一次可以读取两个字节,80386为32位寄存器) 二进制 第二章 检测点2.1 1) AX = F4A3h AX = 31A3h AX = 3123h AX = 6246h BX = 826Ch CX = 6246h AX = 826Ch AX = 04D8h AX = 0482h AX = 6C82h AX = D882h AX = D888h AX = D810h AX = 6246h mov ax,2 add ax,ax add ax,ax add ax,ax 检测点2.2 1)00010h 1000fh (0001h+0000h 0001h+ffffh) 2)1001h 2000h (偏移地址的范围为0000-ffff,内存单元=段地址*16+偏移地址,当偏移地址最小时,段地址最大,偏移地址最大时,段地址最小) 检测点2.3 4次修改IP,最后IP为0 第三章 检测点3.1 1)

《汇编语言》王爽_第三版—实验三

房东的猫 提交于 2019-11-26 16:12:59
汇编程序源码如下 assume cs:codesg codesg segment mov ax,2000H mov ss,ax mov sp,0 add sp,10 pop ax pop bx push ax push bx pop ax pop bx mov ax,4c00H int 21H codesg ends end (1)用debug跟踪t1.exe的执行过程,写出寄存器的内容和栈顶内容。 执行 mov ax,2000H ax = 2000 sp = 0000 执行 mov ss,ax ax = 2000 sp = 0000 执行 mov sp,0 ax = 2000 sp = 0000 执行 add sp,10 ax = 2000 sp = 000A 执行 pop ax ax = 0000 sp = 000C 执行 pop bx ax = 0000 sp = 000E 执行 push ax ax = 0000 sp = 000C 执行 push bx ax = 0000 sp = 000A 执行 pop ax ax = 0000 sp = 000C 执行 pop bx ax = 0000 sp = 000E 执行 mov ax,4c00H ax = 4c00 sp = 000E (2)查看 psp内容 用d命令查看 来源: https://blog.csdn.net