汇编语言第三版王爽 7.9..问题

将datasg段中每个单词的前四个字母改为大写字母
其中datasg中有四个字符串。
话不多说,直接放答案。

assume cs:codesg,ss:stacksg,ds:datasg
stacksg segment
  dw 0,0,0,0,0,0,0,0      # 8个字单元用作栈空间
stacksg ends

datasg segment
  db '1. display      '
  db '2. brows        '
  db '3. replace      '
  db '4. modify       '
datasg ends

codesg segment
   mov ax,stacksg
   mov ss,ax              # 定义栈段
   mov sp,16              # 定义栈底
   mov ax,datasg
   mov ds,ax              # 定义数据段
   mov bx,0               # 定义数据段偏移

 mov cx,4               # 定义外层循环次数

s0: push cx               # 将外层循环次数压栈
   mov si,0               # 定义字符串偏移
   mov cx,4               # 定义内层循环次数

s: mov al,[bx+3+si]       # 将要处理的字母放入低位寄存器
   and al,11011111b       # 将小写字母转换为大写,大写字母第6位为0
   mov [bx+3+si],al       # 将处理完的字母传回原本的字符串位置
   inc si                 # 字符串偏移自增
   loop s                 # 内层循环

   add bx,16              # 数据段偏移处理
   pop cx                 # 将保存的外层循环次数存入cx寄存器
   loop s0                # 外层循环

   mov ax,4c00h
   int 21h

codesg ends
end start


很简单,就是汇编的二重循环。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
检测点1.1 (1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为 13位。 (2)1KB的存储器有 1024 个存储单元,存储单元的编号从 0 到 1023 。 (3)1KB的存储器可以存储 8192(2^13) 个bit, 1024个Byte。 (4)1GB是 1073741824 (2^30) 个Byte、1MB是 1048576(2^20) 个Byte、1KB是 1024(2^10)个Byte。 (5)8080、8088、80296、80386的地址总线宽度分别为16根、20根、24根、32根,则它们的寻址能力分别为: 64 (KB)、 1 (MB)、 16 (MB)、 4 (GB)。 (6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。则它们一次可以传送的数据为: 1 (B)、 1 (B)、 2 (B)、 2 (B)、 4 (B)。 (7)从内存中读取1024字节的数据,8086至少要读 512 次,80386至少要读 256 次。 (8)在存储器中,数据和程序以 二进制 形式存放。 解题过程: (1)1KB=1024B,8KB=1024B*8=2^N,N=13。 (2)存储器的容量是以字节为最小单位来计算的,1KB=1024B。 (3)8Bit=1Byte,1024Byte=1KB(1KB=1024B=1024B*8Bit)。 (4)1GB=1073741824B(即2^30)1MB=1048576B(即2^20)1KB=1024B(即2^10)。 (5)一个CPU有N根地址线,则可以说这个CPU的地址总线的宽度为N。这样的CPU最多可以寻找2的N次方个内存单元。(一个内存单元=1Byte)。 (6)8根数据总线一次可以传送8位二进制数据(即一个字节)。 (7)8086的数据总线宽度为16根(即一次传送的数据为2B)1024B/2B=512,同理1024B/4B=256。 (8)在存储器中指令和数据没有任何区别,都是二进制信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值