在仓库管理中,具有包含货品的编号、名称、数量、价格等情况的表格,根据用户提供的编号可以找到相关货品。假设表格中共有6种货品,表格的格式为: stoktab db ‘11’,’Excavators’ db ‘12’,’Lifters’ db ‘13’,’Presses’ db ‘14’,’Valves’ db ‘15’,’Processors’ db ‘16’,’Pumps’ LEN EQU $-stoktab 编写一程序,根据用户输入的编号在屏幕上显示相应货品的名称
时间: 2023-12-10 16:38:22 浏览: 154
仓库管理表格DOC
下面是一个汇编程序,可以根据用户输入的编号在屏幕上显示相应货品的名称:
```
.model small
.stack 100h
.data
prompt db 'Enter stock number: $'
stoktab db '11','Excavators','12','Lifters','13','Presses','14','Valves','15','Processors','16','Pumps'
len equ $-stoktab
.code
main proc
mov ax, @data
mov ds, ax
; display prompt
mov ah, 9
lea dx, prompt
int 21h
; read stock number from user
mov ah, 1
int 21h
sub al, '0' ; convert ASCII digit to integer
; search for stock number in table
mov bx, 0
mov cx, len / 2 ; number of items in table
search:
cmp al, byte ptr [stoktab+bx]
je found
add bx, 2 ; move to next item
loop search
notfound:
mov ah, 9
lea dx, notfoundmsg
int 21h
jmp exit
found:
; move to item name
add bx, 1
mov si, bx
mov cx, 0
mov cl, byte ptr [stoktab+bx] ; get length of item name
add bx, cx ; move to next item
; display item name
mov ah, 9
lea dx, [stoktab+si]
int 21h
exit:
mov ah, 4ch
int 21h
main endp
notfoundmsg db 'Stock number not found. $'
```
程序首先显示一个提示消息,要求用户输入货品编号。然后程序从用户读取输入的数字,并将其转换为整数。接下来,程序搜索表格以查找与输入的编号匹配的货品。如果找到了匹配的货品,则程序显示货品名称。如果没有找到匹配的货品,则程序显示一个错误消息。
程序使用循环来搜索表格。循环计数器 `cx` 初始化为表格中货品数量的一半,因为每个货品都有一个编号和一个名称,所以表格中的总字节数是货品数量的两倍。循环体中,程序比较当前货品的编号是否与输入的编号匹配。如果匹配,则程序跳转到 `found` 标签,否则它将移动到下一个货品。如果程序完成了整个循环但没有找到匹配的货品,则它跳转到 `notfound` 标签。如果找到了匹配的货品,则程序需要跳过编号并移动到货品名称。程序使用循环计数器 `cl` 来读取货品名称的长度,并将其添加到当前位置以跳过货品名称。最后,程序显示货品名称。
阅读全文